Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.009 c
8-27130
Alucard
2002-05-07 15:47
2002.09.09
Flash в дельфи


14-27187
AL2002
2002-08-14 10:34
2002.09.09
Ошибка создания хелпа


1-27050
Demn
2002-08-27 10:20
2002.09.09
Как из чужой Dll-ки вызывать диалоги и функции


6-27145
SDomsk
2002-07-02 15:04
2002.09.09
Socket-ы


14-27157
Vasso
2002-08-06 11:20
2002.09.09
Отношение к WinXp





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский