nabbla (nabbla1) wrote,
nabbla
nabbla1

Category:

CompareString - что за нафиг?

Доводил до ума "автодополнение" в PhysUnitCalc, чтобы начинаешь писать наименование величины, а рядом выползает список всех величин, которые так начинаются. Когда локализация русская в системе, все в порядке - в самой программе можно на ходу поменять на английский, работает и так, и эдак.

Но когда выставил в системе английский язык, начались странности, списки величин отсортировались совершенно причудливым образом, вот отдельные "выборки":
amperes
amperesPerMeter
aMx
aN
ас
дс
гс
гс
Гс
Гс
angle.'
angle.''
angle."
angle.°
[еще кусочки]
centitesla
centitorr
centivolts
centiwatts
centiwebers
centiyards
centuries
Зит
ЗиФ
ЗиТл
ЗиТорр
ceV
ЗиЭ
ЗиэВ
cF
cft
cg
cG
cgf
cGy
cH
chains
charge.aC
charge.attocoulumbs
charge.C
charge.cC

energy.zeV
energy.ZeV
energy.ZiBJ
energy.Zical
energy.ZieV
energy.ZiJ
energy.zJ
energy.ZJ
ЙСм
иСм
кСм
Йт
ЙФ
ит
иФ
кт
кФ
кубометры
кубометрыВСекунду
EOe
ЙТл
иТл
кТл
кулон
EOhm
ЙТорр
иТорр
кТорр
EPa
Erad
Es
ES
ESv
Et
ET
люкс
люмен
люменыНаВатт
ETorr
eV
EV
eventsPerSecond.beckerel
eventsPerSecond.Bq


то есть, посередине величин на одну букву внезапно вклиниваются совершенно другие. Сортировка самая что ни есть стандартная, а для сравнения строк она в конечном счете задействует функцию WinAPI CompareString.

Я проверял - сортировка доводится до конца, т.е из разных начальных перестановок список становится ровно таким. Проверил даже свойства CompareString - то что если A < B, то B > A, если A=B, то B=A, и если A < B и B < C, то A < C - тут все порядке. Но откуда такой порядок взялся, что вслед за N идет "с" русская, а за ней идет N.mol - не пойму.

Даже если на месте русской "с" стоит N с какой-нибудь закорючкой, это все равно не повод вклинивать ее посередине! А N и "с" не равны - я проверял. Чувствительность к регистру тоже погоды не делает - получается похожим образом.

Всякие "культурные" сравнения отключены, т.е диакритические знаки не игнорируются, и пр. Загадка...
Tags: physunitcalc
Subscribe

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded 

  • 3 comments