2013-09-25 3 views
2

Мне нужно сравнить две AnsiStrings, чтобы увидеть, имеют ли они один и тот же текст (игнорируя регистр).Как использовать SameText для AnsiStrings в современном Delphi?

var 
    text1, text2: AnsiString; 
begin 
    if SameText(text1, text2) then 
    ... 

В пре-Unicode Delphi Я хотел бы использовать SameText функцию, но в современном Delphi есть только версия Unicode это, так что я получаю это предупреждение: W1057 Implicit string cast from 'AnsiString' to 'string' по вызову.

Мой вопрос, как правильно сравнивать AnsiStrings в современном Delphi без получения предупреждений компилятора (и без избыточно того, чтобы бросить обе строки в UnicodeString(text))

+4

IIRC есть AnsiStrings или ansistrutils блок, который содержит функцию AnSi строк. (Нет Delphi на этом компьютере) –

+0

Как @Marjan говорит, ['there it is] (http://docwiki.embarcadero.com/Libraries/XE3/en/System.AnsiStrings.SameText). – TLama

+0

Вопрос, который вы должны задавать себе, - это то, почему вы даже хотите сравнить две переменные AnsiString. –

ответ

6

Действительно, есть AnsiStrings модуль, который сохраняет все старые AnsStrings версии струнное Utils :)

Таким образом, решение выглядит следующим образом:

uses 
    System.AnsiStrings; 
... 
var 
    text1, text2: AnsiString; 
begin 
    if AnsiStrings.SameText(text1, text2) then 
    ... 
Смежные вопросы