какой метод сравнения текста является правильным для международной заявки ... AnsiCompareText или CompareText?



Я использую Delphi 2009 для написания приложения, которое использует базу данных Access.



Я заметил, что MS Access' ORDER BY, похоже, сортирует международные наборы символов, такие как AnsiCompareText, тогда как во всем моем приложении я использую SysUtils.CompareText.



Access' (Jet's) ORDER BY results (delphi AnsiCompareText( ) is the same)
Nørmork
Öster
RAM

delphi CompareText( )
Nørmork
RAM
Öster


Какой правильный вызов я должен использовать для сравнения?



Примечание: я использую английский язык США в качестве своего языка.



Извини, я не так уж много об этом знаю. Есть много веб-сайтов, которые подробно обсуждают связанные темы, но я этого не делал. видели дискуссию о том, какая из них наиболее уместна.

Спасибо!

568   2  

2 ответов:

CompareText выполняет сравнение ASCII, в то время как AnsiCompareText использует кодовую страницу ANSI (или в Delphi 2009+ таблицу unicode) для сравнения символов. Поэтому CompareText работает только в том случае, если у вас есть простой английский текст.

Мне кажется, что правильное сравнение-это то, которое дает те же результаты, что и ваша база данных, хотя бы ради согласованности. Используйте AnsiCompareText, и тогда вам не придется беспокоиться о несоответствии результатов.

Comments

    Ничего не найдено.