Другие языки программирования и технологии

Помогите пожалуйста с программой на DELPHI

Имеется текстовый файл. Программа должна записывать строки в файл, проверяя нет ли точно такой же строки в файле, если такая строка уже имеется, то выдавать соответствующее сообщение, если нет, то записывать её в файл.
Русский .
Русский .
178
procedureTForm1.Button1Click(Sender: TObject);
Var f,u:TextFile; // объявление файловой переменной
st,st2:String; // строковая переменная
s:boolean;
i:integer;
begin
AssignFile(f,'c:\1.txt'); // привязка названия файла к файловой переменной
{$I-} // отключение контроля ошибок ввода-вывода
Reset(f); // открытие файла для чтения
{$I+} // включение контроля ошибок ввода-вывода

AssignFile(u,'c:\2.txt'); // привязка названия файла к файловой переменной
{$I-} // отключение контроля ошибок ввода-вывода
Reset(u); // открытие файла для чтения
{$I+} // включение контроля ошибок ввода-вывода

While not EOF(f) do // пока не конец файла делать цикл:
begin
s:=false;
ReadLn(f,st); // читать из файла строку
While not EOF(u) do
begin
ReadLn(u,st2);
if st=st2 then
begin
Memo.lines[ i ]:=st1;
s:=true;
i:=i+1;
end;
end;
if s=false then //проверка на совпадение
begin
writeln(u,s1);//запизываем строку
s:=false;
end;
end;
CloseFile(f); // закрыть файл
CloseFile(u) // закрыть файл
end;

Добавь кнопку, Memo и вставь процедуру.
Должна работать :)
Виталий Самсонов
Виталий Самсонов
3 396
Лучший ответ
Если файл не большой, я бы рекомендовал загружать текст в компонент Memo и использовать функцию Pos:

Memo.Lines.LoadFromFile (FileName);
if Pos (String, Memo.Text) = 0 then
Memo.Lines.Add (String)
else ShowMessage ('Данная строка уже умеется в тексте');

Если текст большой, то можно либо читать из файла, либо поместить в буфер памяти и сделать цикл по каждой строчке - если совпадает, то выдать сообщение и остановить цикл, в противном случае цикл дойдет до конца и добавит строку.

Есть один подводный камень: а если искомая строка находится в двух строках? В первом случае (когда идет поиск сразу во всем тексте) строка будет найдена, во втором случае строка не будет найдена.
Тёма Тёма
Тёма Тёма
49 513
Делаешь буфер в памяти, туда записываешь данные из файла, перед записью новой строки в файл ищешь ее сначала в буфере.