Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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.48 MB
Время: 0.051 c
8-1162766860
Горгер
2006-11-06 01:47
2007.08.05
Как отрисовывать линию по таймеру в OPENGL ?


15-1182889253
Real
2007-06-27 00:20
2007.08.05
Захват видео


2-1183709734
Veter
2007-07-06 12:15
2007.08.05
"менюшки" в стиле MS Word а


15-1182688287
Martov_cat
2007-06-24 16:31
2007.08.05
Как обработать переменнную типа byte через Table?


1-1180596738
ВременныйГость
2007-05-31 11:32
2007.08.05
MaskEdit





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский