Форум: "Основная";
Текущий архив: 2002.09.09;
Скачать: [xml.tar.bz2];
ВнизКак сравнить два текста? Найти похожие ветки
← →
Карлсон (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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.007 c