Какой метод сравнения текста является правильным для международной заявки ... AnsiCompareText или CompareText? - PullRequest
3 голосов
/ 27 ноября 2009

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

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

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

delphi CompareText( )
  Nørmork
  RAM
  Öster

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

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

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

Спасибо!

Ответы [ 2 ]

9 голосов
/ 27 ноября 2009

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

2 голосов
/ 27 ноября 2009

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

...