Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как сравнить два текста? [D6, Win95/98]


Карлсон ©   (2002-08-28 13:01:00) 

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


Карлсон   (2002-08-29 11:17:00) [1]

Всем огромное спасибо!
Сейчас буду разбираться с предоставленным материалом! :)))


Space Rover   (2002-08-29 10:01:00) [2]

Если тебя интересуют более интелектуальные алгоритмы сравнения текстов или возможно даже бинарных файлов и нахождения в них отличий, то могу посоветовать следующую ссылку:
http://www.algo.4u.ru/(В разделе обработка текстов)
здесь описываются алгоритмы дифферов.
Требуется определенная математическая подготовка. Некоторые статьи на английском языке.

Надеюсь это полный ответ на твой вопрос?


RV   (2002-08-29 09:53:00) [3]

RV © (29.08.02 08:47)
бери новый текст целиком


Alex4444444444   (2002-08-29 09:28:00) [4]

A zachem zagruzhat" i perepisyvat" file? Dostatochno posmotret"
ego dlinu i sdelat" Delete(New, 1, Length) i potom pripisat"
resul"tat v konets.


ЮЮ   (2002-08-29 09:21:00) [5]

>Anatoly Podgoretsky © (29.08.02 09:16)
Нет никакого смысла проводить какие либо сравнения, достаточно старый текст заменить новым
Карлсон © (28.08.02 23:14)
цель как раз и заключается в том чтобы из полученного текста выделить только новую часть.
Решение: ЮЮ © (29.08.02 09:03)


Anatoly Podgoretsky   (2002-08-29 09:16:00) [6]

Нет никакого смысла проводить какие либо сравнения, достаточно старый текст заменить новым


ЮЮ   (2002-08-29 09:14:00) [7]

Хотя достаточно и одного TStringList, ведь из старого текста нужно только узнать кол-во строк.


ЮЮ   (2002-08-29 09:03:00) [8]

procedure TForm1.Button1Click(Sender: TObject);
var OldStrList,NewStrList:TStringList;
NewLineIndex:Integer;
begin
OldStrList:=TStringList.Create;
OldStrList.LoadFromFile(<старый файл>);

NewStrList:=TStringList.Create;
NewStrList.LoadFromFile(<новый файл>);

For NewLineIndex:=OldStrList.Count to NewStrList.Count-1
do begin // обрабатываем новые записи

end;

OldStrList.Free;
NewStrList.SaveToFile(<старый файл>);
NewStrList.Free;
end;


user965   (2002-08-29 08:56:00) [9]

посмотри эти финкции StrComp StrIComp StrLComp StrLIComp


RV   (2002-08-29 08:47:00) [10]

бери новый текст целиком


Юрий Зотов   (2002-08-29 02:02:00) [11]

Sorry, это описка. Не Pos, а Copy, конечно.

Новый_текст = Старый_текст + Добавка

Старый текст известен, новый тоже. Задача - выделить добавку.

L := Length(Старый_текст);
Добавка := Copy(Новый_текст, L + 1, Length(Новый_текст) - L);


А по поводу "что за Pos" - при решении этой задачи без функций для работы со строками обойтись не удастся. Можно, конечно, написать и свои, но лучше посмотреть в хелпе тему "string handling routines" - там найдете все, что нужно.


Карлсон   (2002-08-29 01:16:00) [12]

новые сообщения всегда идут после старых.
ну как в чатах.
и что за Pos ?
я маленько не понял.


Юрий Зотов   (2002-08-29 00:44:00) [13]

Новые сообщения всегда идут после старых, или могут появляться и в середине старого текста?

Если первое, то решает задачу простой вызов Pos (естественно, старый и новый текст надо загрузить в виде строк, но это не проблема).


Карлсон   (2002-08-28 23:14:00) [14]

обновление содержит абсолютно весь текст, в том числе и новые сообщения.
цель как раз и заключается в том чтобы из полученного текста выделить только новую часть.


mrcat   (2002-08-28 17:34:00) [15]

>> т.е. когда моя программа получает полный текст обновленный, >> она должна сравнить его с хранящимся в этом текстовом

Обновление содержит полный текст, или только новую часть?


RV   (2002-08-28 16:17:00) [16]

эт муторно
просто дописывать можть?


Skier   (2002-08-28 16:17:00) [17]

>Карлсон
TStringList ?


Карлсон   (2002-08-28 16:13:00) [18]

неужели никто не знает?


Наверх

Титульная страница Поиск, карта сайта Написать письмо