powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / сравнение текстов
10 сообщений из 10, страница 1 из 1
сравнение текстов
    #39387880
mihalych72
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
необходимо сравнить две строки текста с определением посимвольно: что добавлено, что удалено, что изменено.
это для первого этапа сравнения.
на втором этапе выполняется лексический разбор текста с подкраской измененных фрагментов, а не просто отдельных символов.
второй этап частично реализован, а с первым есть проблемы.
сейчас использую алгоритм
http://www.yanniel.info/2012/01/lcs-string-comparison-in-delphi.html
но поскольку в алгоритме применяется лобовое решение, возникает проблема при сравнении длинных строк.
вопрос к знатокам:
подскажите, как вычислить редакционное предписание с разбиением матрицы (если такое возможно) или предложите другой вариант сравнения.
есть статья на хабре: https://habrahabr.ru/post/117063/
но я не понял алгоритм с разбиением на подстроки.
есть такой вариант: http://www.holomind.de/phpnet/diff2.src.php
насколько я его понял - без расстояния Ливенштейна, но его пока не перевел на delphi.
я не силен в математике, поэтому поменьше теории, пожалуйста.
...
Рейтинг: 0 / 0
сравнение текстов
    #39387928
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
первая ссылка в ГУгле: http://www.angusj.com/delphi/textdiff.html
...
Рейтинг: 0 / 0
сравнение текстов
    #39387930
mihalych72
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
То что надо.
Спасибо.
...
Рейтинг: 0 / 0
сравнение текстов
    #39388002
Фотография Квейд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mihalych72,

я аффтор такой наколенки



можете спрашивать свои ответы
...
Рейтинг: 0 / 0
сравнение текстов
    #39388263
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mihalych72возникает проблема при сравнении длинных строк.

автар, пиши тесты, иначе как тестировать два предложенных решения - нет ни данных ни критериев
...
Рейтинг: 0 / 0
сравнение текстов
    #39388551
mihalych72
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
примерно то же самое.
только помимо подкраски еще есть пояснения что поменялось - у меня текст синтетический, часть сравнивается фрагментами по мере генерации, а та часть которая описывается произвольным текстом - сравнивается textdiff.


при сравнении длинных строк, в простом решении, матрица становится большой и приложение падает - нехватает памяти. к тому же еще и тормозит, пока память отъедает.
для небольших строк алгоритм http://www.yanniel.info/2012/01/lcs-string-comparison-in-delphi.html работает шустро и без проблем.


в результате адаптировал textdiff и synedit для своей задачи.
отображение на гридах не подходит, потому что нужно брать текст из результата.
с richedit не получилось выделять строки целиком (не победил раскраску пустых строк и фона за концами строк).
в synedit, после допиливания, удалось сделать желаемое.
...
Рейтинг: 0 / 0
сравнение текстов
    #39388589
mihalych72
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arioch

тесты проводились но не выкладывались:
для алгоритма: http://www.yanniel.info/2012/01/lcs-string-comparison-in-delphi.html
сравнение текстов до 1х кб работает шустро без проблем
при сравнении текстов более 64кб, один текст 68кб, другой 8кб, с большими различиями, у меня приложение падало (win7 x64 pro, под vmware 7.1.4)

сейчас тест в textdiff алгоритм O(ND):
сравнение текстов до 1х кб работает шустро без проблем
при сравнении текстов более 64кб, с теми же файлами, приложение не падает но ощутимы тормоза (сравнение занимает примерно 10 сек).
...
Рейтинг: 0 / 0
сравнение текстов
    #39391658
mihalych72
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если кому либо понадобится пример описания красителя в synedit или реализация сравнения текстов - напишите в почту.
...
Рейтинг: 0 / 0
сравнение текстов
    #39393609
mihalych72
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в результате получилось такое (картинка в прикрепе).
работает для synedit и richedit, но в richedit менее наглядно.
синтаксис языка пока pascal.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
сравнение текстов
    #39966823
maxsmeller
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет, Автор! Почта скрыта, скинь пример, как работаешь с SynEdit, пожалуйста.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / сравнение текстов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]