Консультация № 21548
31.05.2005, 00:05
0.00 руб.
0 5 5
Извиняйте плиз.
Как из одного текстовово файла проверить на совпадение, строки во втором файле.
т.е строка из одного файла сравнивается со всеми строками в другом файле и записывает в мемо совпавщие строки или не совпавшие.

Обсуждение

давно
Мастер-Эксперт
425
4118
31.05.2005, 06:38
общий
это ответ
Здравствуйте, kda!
Непонятно что нужно - записывать в мемо совпавшие строки или не совпавшие? Вы уж, батенька, изъясняйтесь непротиворечиво. :)
Поиск строки в файле можно сделать так:
Открыть оба файла традиционным способом, т.е. через AssignFile().
Завести цикл чтения строк из первого файла в строковую переменную.
Внутри завести второй цикл по чтению строк из втрого файла и каждую строку из него сравнивать со строкой из переменной первого файла.
В случае совпадения(несовпадения - тут уж Вы сами определитесь) строка записывается в мемо (Memo.Lines.Add(Строка)).
Пример в приложении.

Приложение:
var f1, f2: TextFile; {Текстовые файлы} s1, s2: string; {Строки для сравнения} IsFind: boolean; {Признак найденой строки}Begin {Присваиваем файловые переменные именам файлов} AssignFile(f1, ‘file1.txt‘); AssignFile(f2, ‘file2.txt‘); {Открываем первый файл} Reset(f1); While not Eof(f1) do Begin {Читаем строку из первого файла} ReadLn(f1, s1); {Открываем второй файл именно здесь, чтобы файловый указатель сразу был в начале файла} Reset(f2); IsFind:=False; While not Eof(f2) do Begin {Читаем строку из второго файла} ReadLn(f2, s2); {Сравниваем между собой обе строки} If s1=s2 Then Begin IsFind:=True; Break; {Если найдено, дальше не ищем} End; {Записываем найденую строку в мемо} If IsFind Then Memo1.Lines.Add(s1); End; {Закрываем оба файла} CloseFile(f1); CloseFile(f2); End;
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
Неизвестный
31.05.2005, 08:44
общий
это ответ
procedure TForm1.Button5Click(Sender: TObject);
var
SL1, SL2: TStringList;
i: Integer;
begin
SL1 := TStringList.Create;
SL2 := TStringList.Create;
try
Sl1.LoadFromFile(‘1.txt‘);
Sl2.LoadFromFile(‘2.txt‘);
for i:=0 to Sl1.Count-1 do
if Pos(SL1[i], Sl2.Text)>0 then begin
// Строка присутствует
end else begin
// Она же отсутствует
end;
finally
Sl1.Free;
Sl2.Free;
end;
end;
Неизвестный
31.05.2005, 10:22
общий
это ответ
Здравствуйте, kda!
Прежде, чем задавать вопрос, неплохо было бы поискать в базе - а вдруг уже отвечали на такой-же. Неделю назад тут уже был такой вопрос. Ищите ответ в базе вопросов/ответов. Ничего более сообщить не хочу.
Неизвестный
31.05.2005, 12:10
общий
это ответ
Здравствуйте, kda!
В архив рассылки сначала надо заглядывать. Такой вопрос совсем недавно был.
Неизвестный
31.05.2005, 18:29
общий
это ответ
Здравствуйте, kda!
Сравнивать строки можно также, как и любые другие переменные, т.е. if str1=str2. Читать строки из файла можно оператороми ReadLn(F1,str1); ReadLn(F2,str2);
if str1=str2 then Memo1.Lines.Add(str1);
Делаем все в цикл.
F1 и F2 - файловые переменные типа SYSTEM.Text;
Или любым другим способом (их {способов} количество бесконечно).
Форма ответа