Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.09.09;
Скачать: CL | DM;

Вниз

Как сравнить два текста?   Найти похожие ветки 

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

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


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

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


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

>Карлсон
TStringList ?


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

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


 
mrcat ©   (2002-08-28 17:34) [4]

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

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


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

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


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

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

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


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

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


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

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

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

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

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


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


 
RV ©   (2002-08-29 08:47) [9]

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


 
user965 ©   (2002-08-29 08:56) [10]

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


 
ЮЮ ©   (2002-08-29 09:03) [11]

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;


 
ЮЮ ©   (2002-08-29 09:14) [12]

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


 
Anatoly Podgoretsky ©   (2002-08-29 09:16) [13]

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


 
ЮЮ ©   (2002-08-29 09:21) [14]

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


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

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


 
RV ©   (2002-08-29 09:53) [16]

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



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

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

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


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

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



Страницы: 1 вся ветка

Текущий архив: 2002.09.09;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.016 c
1-27102
Clown
2002-08-28 20:24
2002.09.09
Нужно сканировать нажатые клавиши.


1-27080
FeatheryMan
2002-08-28 15:18
2002.09.09
Как открыть очень большой файл в RichEdit в Win2000?


1-27036
BLooDMaN
2002-08-27 16:53
2002.09.09
Динамическое создание Popupmenu


14-27162
Alx2
2002-08-13 14:17
2002.09.09
Прическа для кода


1-27002
lipskiy
2002-08-27 10:59
2002.09.09
Это у меня глюки, или действительно глюки? (TToolBar и сепаратор)