![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как сравнить два текста? [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]неужели никто не знает?