| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Быстрое сравнение строк |
| Автор: delphixxx 28.3.2006, 19:59 |
| Всем привет. Меня интересует функция сравнения двух спецыфических строк. строки выглядят примерно так: '541/45/63' (цыфра разделитель, цыфра разделитель, цыфра разделитель) числовые значения перед разделитетлем и после, могут быть любой величины. Нужно сравнить две строки и определить какая больше по принцыпу как с типом TDateTime Пример : X1 = 2:145:165 X2 = 4:200:399 X3 = 1:500:660 X1 > X3 X2 > X1 X2 > X3 Вот и желателбно чтобы это было на ассемблере так как в моём проекте очень важна скорость. |
| Автор: Guedda 28.3.2006, 21:54 |
| Интересно. Я написал код, который написал Демо, но message не появилось... Немного исправив, появилась мессага, типа эти строки равны. Вообще по определению такое сравнение ведет к побайтовому сравнению... Сколько байт занято... |
| Автор: delphixxx 28.3.2006, 23:14 |
| Демо, не всё так просто как вы думаете, тут полюбому нужно разбивать строки и сравнивать цыфры, ибо если дейсвовать по вашему методу то например '12' < '4' . |
| Автор: Демо 29.3.2006, 11:43 | ||
А где было написано, что значность может быть разная? В приведенном в топике примере было видно четкое форматирование. |
| Автор: Guedda 29.3.2006, 11:46 |
| Тогда просто необходимо парсить строки, переводить в Integer и сравнивать. По другому, никак. |
| Автор: RA 29.3.2006, 15:19 | ||
|
| Автор: Демо 29.3.2006, 15:50 |
| RAdmin, А-а, тогда понятно. |
| Автор: Romikgy 29.3.2006, 16:41 | ||
А так не? |
| Автор: Digitalator 29.3.2006, 16:56 |
| а если s1 := '2:1450:165'; s2 := '12:500:660'; надо разбивать строки на числа и сравнивать ... на асме такое писать неинтересно |
| Автор: Digitalator 29.3.2006, 17:29 | ||
пример на неасме
|
| Автор: Snowy 29.3.2006, 18:43 | ||||
Вот, нарисовал простое, элегантное решение:
Пример:
|
| Автор: delphixxx 29.3.2006, 21:02 |
| Snowy, Спасибо |
| Автор: Digitalator 31.3.2006, 08:10 | ||||
не совсем так
Очень интересное решение, единственный минус - не проверяется корректность сравниваемых строк, хотя в конкретных случаях это может быть и не нужно. |
| Автор: Guedda 31.3.2006, 22:21 | ||
| Нужно быстро и на асме? Бери:
|
| Автор: Snowy 1.4.2006, 10:23 |
| Guedda, а зачем выкладывать код CompareStr? Можно было просто сказать, что она написана на асме. |
| Автор: Guedda 1.4.2006, 10:35 |
| Ну так в качестве доказательства. Вдруг человек не поверит? |
| Автор: Snowy 1.4.2006, 10:40 |
| Вобщем вопрос решен. |