Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var
- // Файловые дескрипторы (descriptor - описатель)
- // Хранят в себе различную информацию о файле с которым мы их далее свяжем
- F1, F2 : text;
- // Последняя строка в файле F1
- LastLine : string;
- // Динамический массив (не определана длинна заранее) со списком слов из
- // последней строки файла F1
- LastWords : array of string;
- begin
- // Связываем файловые дескрипторы с реальными файлами
- // F2 может не существовать, но мы его в будущем создадим, всёравно связываем
- Assign(F1, 'F1.txt');
- Assign(F2, 'F2.txt');
- // F1 открываем только на чтение при помощи reset
- // Это позволяет оптимизировать системе работу с этим файлом, т.к. она знает,
- // что мы удем его только лишь читать
- Reset(F1);
- // F2 открываем на перезапись
- // Файл будет либо создан если не существовал, либо очищен
- // Говорим системе, что нам не важна предыдущая информация в файле и мы
- // собираемся только лишь записывать в него
- Rewrite(F2);
- // Читаем все строки пока файл не закончится
- // Т.к. всегда читаем в одну и ту же переменную LastLine, то в конце концов
- // в ней останется последняя строка из читаемого файла
- // P.S.: EoF - End of File, вернёт true когда файл закончится
- while NOT EoF(F1) do ReadLn(F1, LastLine);
- // Разбиваем по пробелу строку на массив слов
- LastWords := LastLine.ToWords();
- // Этим действием мы сбрасываем позицию в которой читаем файл снова на начало,
- // т.к. в этот раз необходимо более чщательно пройтись по каждой строке и
- // проверить, состоит ли в ней одно из слов в LastWords
- Reset(F1);
- // Начинаем читать файл снова до конца
- while NOT EoF(F1) do begin
- // Временная переменная в которую прочитаем одну строку из F1
- var OneLine : string;
- // Читаем эту самую строку сюда
- ReadLn(F1, OneLine);
- // Теперь проверяем каждое слово из LastWords на вхождение в OneLine
- foreach var OneWord in LastWords do begin
- // Если текущая строка содержит хотя бы одно из слов в последней строке, то...
- if (OneLine.Contains(OneWord)) then begin
- // Записываем текущую строку в F2
- WriteLn(F2, OneLine);
- // А текущий цикл foreach завершаем досрочно и переходим к следующей строке
- // которая попадётся нам в цикле while (или совсем выходим если достигли конца файла)
- break;
- end;
- end;
- end;
- // Закрываем файловые дескрипторы (освободаем ресурсы системы)
- // Так же этим действием позволяем другим программам работать с этими файлами
- // Как бы снимаем с них блокировку которую мы поставили когда открыли
- Close(F1);
- Close(F2);
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement