Перевести код с PascalABC.NET - Free Pascal
Формулировка задачи:
Помогите перевести код в Паскаль.
var
str1: array of string;
str2: array of string := (',', ' ', '.', #13);
chr1: char;
i: integer;
begin
readln(chr1);
str1 := System.IO.File.ReadAllText('in.txt').Split(str2, System.StringSplitOptions.RemoveEmptyEntries);
foreach str: string in str1 do
if (str[1] = chr1) then
System.IO.File.AppendAllText('out.txt', str + ' ');
end.Решение задачи: «Перевести код с PascalABC.NET»
textual
Листинг программы
{$mode objfpc}
uses
Crt, Classes, StrUtils;
const
Delims = [' ', #10, #13, '.', ','];
var
ch : char;
s, st, res : string;
i : integer;
begin
readln(ch);
with TStringList.Create do
try
Delimiter := #0;
LoadFromFile('d:\test\in.txt');
s := Text;
for i := 1 to WordCount(s, Delims) do
begin
st := ExtractWord(i, s, Delims);
if st[1] = ch then res := res + st + ' ';
end;
Text := res;
SaveToFile('d:\test\out.txt');
finally
Free;
end;
end.
Объяснение кода листинга программы
- {$mode objfpc} - это препроцессорная директива, которая указывает компилятору использовать режим объектно-ориентированного программирования
- uses Crt, Classes, StrUtils; - это описание модулей, которые необходимы для работы программы. Crt - модуль для работы с консолью, Classes - модуль для работы с классами, StrUtils - модуль для работы со строками.
- const Delims = [' ', #10, #13, '.', ',']; - это определение константы Delims, которая содержит символы-разделители.
- var ch : char; s, st, res : string; i : integer; - это описание переменных, которые будут использоваться в программе.
- readln(ch); - это чтение символа из консоли и сохранение его в переменной ch.
- with TStringList.Create do - это создание нового объекта TStringList и его присваивание переменной.
- try - это начало блока try-except, который используется для обработки исключений.
- Delimiter := #0; - это установка разделителя в пустую строку.
- LoadFromFile('d:\test\in.txt'); - это загрузка содержимого файла 'in.txt' в объект TStringList.
- s := Text; - это присваивание переменной s значения объекта TStringList.
- for i := 1 to WordCount(s, Delims) do - это цикл, который будет выполняться от 1 до количества слов в строке s, разделенных символами из Delims.
- st := ExtractWord(i, s, Delims); - это извлечение i-го слова из строки s с помощью функции ExtractWord.
- if st[1] = ch then res := res + st + ' '; - это проверка, совпадает ли первый символ извлеченного слова с символом ch. Если да, то слово добавляется к переменной res.
- Text := res; - это присваивание значения переменной res объекту TStringList.
- SaveToFile('d:\test\out.txt'); - это сохранение содержимого объекта TStringList в файл 'out.txt'.
- finally - это начало блока finally в блоке try-except.
- Free; - это освобождение памяти, занятой объектом TStringList.
- end; - это конец блока try-except.
- end. - это конец программы.
- Это код, который читает строку из консоли, разбивает ее на слова и ищет слова, начинающиеся на определенный символ, затем сохраняет результат в файл.