![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как быстро сравнить две строки? [D7, XP]
Jimmy © (2012-11-05 19:36:00)Подскажите, как можно быстро сравнить две строки? (Быстрее, чем St1=St2.) Заранее спасибо!
DVM (2012-11-05 20:57:00) [41]
> Медвежонок Пятачок © (05.11.12 20:47) [21]
ты еще скажи, что ты msxml 20 лет назад юзал
DVM (2012-11-05 20:55:00) [42]
> Jimmy (05.11.12 20:50) [23]
> Очень бы хотелось пример использования
Да там уж проще некуда все:
var
Digest: TMD5Digest;
...
Digest := TMD5.Calculate('твоя строка');
Jimmy (2012-11-05 20:50:00) [43]DVM
Очень бы хотелось пример использования, извините, что злоупотребляю Вашим вниманием.
kilkennycat (2012-11-05 20:50:00) [44]
> Jimmy (05.11.12 20:35) [17]
не нужна в этом случае контрольная сумма. нужно лишь однозначное правило формирования данных.
например:
1) карты нумеруются сквозной нумерацией.
2) запись набора идет от меньших карт к большим.
Медвежонок Пятачок (2012-11-05 20:47:00) [45]А кто здесь говорил про проблемы?
Ты не переживай, лет 20 назадя точно так же бы юзал такие модули.
DVM (2012-11-05 20:44:00) [46]
> Медвежонок Пятачок © (05.11.12 20:41) [19]
Я так и думал, что у тебя нет аргументов. А жопа у тех вместо головы, кто думает, что связкой Win32/Delphi ограничивается круг применения кода на паскале. Использую в Lasarus под Linux без проблем, нету там WinApi. Да, в Linux есть библиотеки для вычисления хэшей, но это лишние зависимости, хидеры все равно переводить.
Медвежонок Пятачок (2012-11-05 20:41:00) [47]да какие ту могут быть аргументы?
у тебя поди весь win32 апи на вело-паскале есть.
DVM (2012-11-05 20:37:00) [48]
> Медвежонок Пятачок © (05.11.12 20:32) [16]
да неужели? ну ка аргументируй.
Jimmy (2012-11-05 20:35:00) [49]kilkennycat ©
Хорошо, как зная массив байтов получить контрольную сумму?
Медвежонок Пятачок (2012-11-05 20:32:00) [50]http://dvmuratov.narod.ru/uMD5.pas
Не, это просто какая-то Жопа.
И это написано в 2011 году.
А сейчас еще и расползется по неокрепшим умам.
Jimmy (2012-11-05 20:31:00) [51]>DVM
Большое спасибо, еще бы пример использования... Я не знаю, что такое класс.
kilkennycat (2012-11-05 20:29:00) [52]прикольно. это как, карты имеют строковый идентификатор? байта мало?
Jimmy (2012-11-05 20:26:00) [53]Создаю хэш таблицы при игре в преферанс на открытых картах. Запоминаю карты всех трех игроков на анализе определенного хода и результат этой "позиции", и если далее встречается такая же ситуация - пользуюсь уже готовым результатом. Проблема в том, что сравнивая имеющиеся карты с теми, что хранят хэш-таблицы уходит много времени. Пока сравниваю строки.
DVM (2012-11-05 20:24:00) [54]
> Где можно найти код?
http://dvmuratov.narod.ru/uSHA1.pas
http://dvmuratov.narod.ru/uMD5.pas
kilkennycat (2012-11-05 20:21:00) [55]во, выясняется, что есть возможность предварительного хэширования. потом высянится, что это поиск по некоему справочнику. и что строка ввода не бывает менее N символов. И в конечном итоге сведется к проблеме тормозов клавиатуре в едите.
Автор,огласите весь список, пожалуйста (с)
Медвежонок Пятачок (2012-11-05 20:18:00) [56]в msdn
Jimmy (2012-11-05 20:16:00) [57]Можно поподробней про MDS, SHA-1. Где можно найти код?
kilkennycat (2012-11-05 20:15:00) [58]вообще вопрос слишком общий, и потому бессмысленный без контекста.
DVM (2012-11-05 20:14:00) [59]Для того чтобы вычислить хэш придется пробежаться по всей строке. А это не быстро весьма может быть. А хэшей полно разных MD5 SHA-1 и т.д. На крайний случай банальный CheckSum, но он много коллизий даст - одних и тех же значений для разных строк.
Jimmy (2012-11-05 20:10:00) [60]Тогда такой вопрос: как можно быстро по строке однозначно определить какой-нибудь ее код в виде числа? Кажется, это называется, хэш-суммой. Хэш-суммы я могу определить заранее, когда дело дойдет до сравнения они уже будут известны.