Форум: "Прочее";
Текущий архив: 2007.08.05;
Скачать: [xml.tar.bz2];
Внизне едут лыжи Найти похожие ветки
← →
Dimka Maslov © (2007-07-08 22:56) [0]Кто-нибудь может объяснить сей замечательный факт и рассказать как с этим бороться
var
s1, s2: string;
N1, N2: Integer;
begin
s1 := "c- ";
s2 := "c* ";
N1 := AnsiCompareText(s1, s2);
s1 := "c-a";
s2 := "c*a";
N2 := AnsiCompareText(s1, s2);
А теперь сам вопрос: какого такого N1 не равно N2?
← →
Zeqfreed © (2007-07-08 22:58) [1]А никто не обещал, что они будут равны.
← →
Dimka Maslov © (2007-07-08 23:02) [2]знак минуса в таблице символов стоит в ы ш е знака умножения. Следовательно сравнение строк "c- " и "c* ", ровно как и "c-a" c "c*a" должно возращать +1. Однако в первом случае оно возвращает -1...
← →
Anatoly Podgoretsky © (2007-07-08 23:06) [3]> Dimka Maslov (08.07.2007 22:56:00) [0]
Теперь значения в студию
← →
Zeqfreed © (2007-07-08 23:07) [4]По-моему, у звездочки код меньше. Хотя, если возвращает результат разного знака, то это действительно странно.
Латиницу и кириллицу, случайно, не смешали?
← →
Dimka Maslov © (2007-07-08 23:13) [5]
> Теперь значения в студию
В первом случае -1, во втором случае +1
> По-моему, у звездочки код меньше
По-моему тоже
> Латиницу и кириллицу, случайно, не смешали?
Нет, проверено.
← →
Dimka Maslov © (2007-07-08 23:15) [6]MSDN по этому поводу говорит следующее
Typically, strings are compared using what is called a "word sort" technique. In a word sort, all punctuation marks and other nonalphanumeric characters, except for the hyphen and the apostrophe, come before any alphanumeric character. The hyphen and the apostrophe are treated differently than the other nonalphanumeric symbols, in order to ensure that words such as "coop" and "co-op" stay together within a sorted list.
If the SORT_STRINGSORT flag is specified, strings are compared using what is called a "string sort" technique. In a string sort, the hyphen and apostrophe are treated just like any other nonalphanumeric symbols. Their positions in the collating sequence are before the alphanumeric symbols.
однако указание этого флага в CompareString результата не улучшает...
← →
Anatoly Podgoretsky © (2007-07-08 23:17) [7]Это сравнение по локализации и я думаю, что знак минуса игнорируется, проверь
"123" и "1-2-3"
И результат в студию
← →
Dimka Maslov © (2007-07-08 23:23) [8]если минус игнорируется, то результат должен равняться нулю. если он не игнорируется, то +1. Однако сравнение даёт -1...
← →
Vlad Oshin © (2007-07-08 23:28) [9]читал, что такое имеет место быть.
не корректна эта функция..
надо самому проанализировать
← →
Dimka Maslov © (2007-07-08 23:29) [10]Там вообще явная хрень потому-то
AnsiCompareText("-"#8" deselect all", "c3k1") выдаёт 1
а
AnsiCompareText("-", "*") = -1
a
AnsiCompareText("a-", "a*") = -1
a
AnsiCompareText("-a", "*a") = 1
← →
Anatoly Podgoretsky © (2007-07-08 23:31) [11]Но ты же сравниваешь строки
s1 := "c ";
s2 := "c* ";
s1 := "ca";
s2 := "c*a";
← →
Anatoly Podgoretsky © (2007-07-08 23:33) [12]Ты проверил те строки которые я предложил, должен быть 0 если мое предполежение насчет word sort верно
← →
Dimka Maslov © (2007-07-08 23:43) [13]Проверил и там не 0! и string sort не помогает
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2007.08.05;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.074 c