|
|
|
сравнение текстов
|
|||
|---|---|---|---|
|
#18+
необходимо сравнить две строки текста с определением посимвольно: что добавлено, что удалено, что изменено. это для первого этапа сравнения. на втором этапе выполняется лексический разбор текста с подкраской измененных фрагментов, а не просто отдельных символов. второй этап частично реализован, а с первым есть проблемы. сейчас использую алгоритм 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. я не силен в математике, поэтому поменьше теории, пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2017, 18:14 |
|
||
|
сравнение текстов
|
|||
|---|---|---|---|
|
#18+
первая ссылка в ГУгле: http://www.angusj.com/delphi/textdiff.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2017, 19:35 |
|
||
|
сравнение текстов
|
|||
|---|---|---|---|
|
#18+
То что надо. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2017, 19:37 |
|
||
|
сравнение текстов
|
|||
|---|---|---|---|
|
#18+
mihalych72возникает проблема при сравнении длинных строк. автар, пиши тесты, иначе как тестировать два предложенных решения - нет ни данных ни критериев ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2017, 11:38 |
|
||
|
сравнение текстов
|
|||
|---|---|---|---|
|
#18+
примерно то же самое. только помимо подкраски еще есть пояснения что поменялось - у меня текст синтетический, часть сравнивается фрагментами по мере генерации, а та часть которая описывается произвольным текстом - сравнивается textdiff. при сравнении длинных строк, в простом решении, матрица становится большой и приложение падает - нехватает памяти. к тому же еще и тормозит, пока память отъедает. для небольших строк алгоритм http://www.yanniel.info/2012/01/lcs-string-comparison-in-delphi.html работает шустро и без проблем. в результате адаптировал textdiff и synedit для своей задачи. отображение на гридах не подходит, потому что нужно брать текст из результата. с richedit не получилось выделять строки целиком (не победил раскраску пустых строк и фона за концами строк). в synedit, после допиливания, удалось сделать желаемое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2017, 15:56 |
|
||
|
сравнение текстов
|
|||
|---|---|---|---|
|
#18+
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 сек). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2017, 16:47 |
|
||
|
сравнение текстов
|
|||
|---|---|---|---|
|
#18+
если кому либо понадобится пример описания красителя в synedit или реализация сравнения текстов - напишите в почту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2017, 22:36 |
|
||
|
сравнение текстов
|
|||
|---|---|---|---|
|
#18+
в результате получилось такое (картинка в прикрепе). работает для synedit и richedit, но в richedit менее наглядно. синтаксис языка пока pascal. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2017, 04:47 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39388263&tid=2038244]: |
0ms |
get settings: |
10ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 241ms |
| total: | 367ms |

| 0 / 0 |
