![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| delphixxx |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 18.1.2006 Репутация: нет Всего: нет |
Всем привет.
Меня интересует функция сравнения двух спецыфических строк. строки выглядят примерно так: '541/45/63' (цыфра разделитель, цыфра разделитель, цыфра разделитель) числовые значения перед разделитетлем и после, могут быть любой величины. Нужно сравнить две строки и определить какая больше по принцыпу как с типом TDateTime Пример : X1 = 2:145:165 X2 = 4:200:399 X3 = 1:500:660 X1 > X3 X2 > X1 X2 > X3 Вот и желателбно чтобы это было на ассемблере так как в моём проекте очень важна скорость. |
|||
|
||||
| Демо |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 30 Всего: 50 |
С чего ты взял, что на ассемблере быстрее будет?
-------------------- |
||||
|
|||||
| Guedda |
|
|||
![]() Подрывник ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3137 Регистрация: 27.12.2005 Где: Ростов-на-Дону Репутация: 14 Всего: 78 |
Интересно. Я написал код, который написал Демо, но message не появилось... Немного исправив, появилась мессага, типа эти строки равны.
Вообще по определению такое сравнение ведет к побайтовому сравнению... Сколько байт занято... -------------------- Ll 2 |
|||
|
||||
| delphixxx |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 18.1.2006 Репутация: нет Всего: нет |
Демо,
не всё так просто как вы думаете, тут полюбому нужно разбивать строки и сравнивать цыфры, ибо если дейсвовать по вашему методу то например '12' < '4' . |
|||
|
||||
| Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 30 Всего: 50 |
А где было написано, что значность может быть разная? В приведенном в топике примере было видно четкое форматирование. -------------------- |
|||
|
||||
| Guedda |
|
|||
![]() Подрывник ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3137 Регистрация: 27.12.2005 Где: Ростов-на-Дону Репутация: 14 Всего: 78 |
Тогда просто необходимо парсить строки, переводить в Integer и сравнивать. По другому, никак.
-------------------- Ll 2 |
|||
|
||||
| RA |
|
|||
![]() Брутальный буратина ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3497 Регистрация: 31.3.2002 Где: Лес Репутация: 14 Всего: 115 |
||||
|
||||
| Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 30 Всего: 50 |
RAdmin,
А-а, тогда понятно. -------------------- |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
А так не? -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Digitalator |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 23.3.2006 Репутация: нет Всего: нет |
а если
s1 := '2:1450:165'; s2 := '12:500:660'; надо разбивать строки на числа и сравнивать ... на асме такое писать неинтересно |
|||
|
||||
| Digitalator |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 23.3.2006 Репутация: нет Всего: нет |
пример на неасме
|
|||
|
||||
| Snowy |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Вот, нарисовал простое, элегантное решение:
Пример:
|
||||
|
|||||
| delphixxx |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 18.1.2006 Репутация: нет Всего: нет |
Snowy, Спасибо
|
|||
|
||||
| Digitalator |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 23.3.2006 Репутация: нет Всего: нет |
не совсем так
Очень интересное решение, единственный минус - не проверяется корректность сравниваемых строк, хотя в конкретных случаях это может быть и не нужно. |
||||
|
|||||
| Guedda |
|
|||
![]() Подрывник ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3137 Регистрация: 27.12.2005 Где: Ростов-на-Дону Репутация: 14 Всего: 78 |
Нужно быстро и на асме?
Бери:
-------------------- Ll 2 |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |