Функция запрашивает две переменные типа AnsiString и сравнивает их. Сравнение выполняется без учета регистрозависимости. Если строки одинаковые, то результат будет true (эквивалентно целому 1). В противном, сравнение вернет false (0). Вы можете использовать функцию SameText() в диалоге подобным этому:
Тогда вы можете вставить событие OnClick() кнопки OK как показано ниже:
//---------------------------------------------------------------------------
void __fastcall TOKBottomDlg::OKBtnClick(TObject *Sender)
{
String Password1 = edtPassword1->Text;
String Password2 = edtPassword2->Text;
Boolean Result = SameText(Password1, Password2);
if(Result == False)
{
Panel1->Caption = "Your passwords do not match!";
edtPassword1->SetFocus();
}
else
{
Panel1->Caption = "Your account has been setup.";
Close();
}
}
//---------------------------------------------------------------------------
Метод AnsiString::AnsiCompareIC() выполняет сравнение двух строк согласно региональным установкам. Подобно SameText(), эта функция не чувствительна к регистру.
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString String1 = Edit1->Text;
AnsiString String2 = Edit2->Text;
if(String1.AnsiCompareIC(String2) < 0)
Edit3->Text = "True";
else if(String1.AnsiCompareIC(String2) > 0)
Edit3->Text = "False";
else
Edit3->Text = "Equal";
}
//---------------------------------------------------------------------------
Как альтернативу, можно использовать функцию CompareText() для сравнения строк. Подобно методу AnsiString::AnsiCompareIC(), эта функция не зависит от региональных настроек. Синтаксис функции:
int __fastcall CompareText(const AnsiString First, const AnsiString Second);
Эта функция получает две строки и проверяет их посимвольно. После сравнения функция возвращает:
Отрицательное значение, если первая строка меньше второй;
Позитивное значение, если первая строка больше второй;
0 если обе строки равны.
Сравнение строк с регистрозависимостью
Метод AnsiString::AnsiCompare() используется для сравнения двух строк учитывая регистр. Эта функция, при выполнении, использует региональные настройки компьютера. Пример:
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString String1 = Edit1->Text;
AnsiString String2 = Edit2->Text;
if(String1.AnsiCompare(String2) < 0)
Edit3->Text = "True";
else if(String1.AnsiCompare(String2) > 0)
Edit3->Text = "False";
else
Edit3->Text = "Equal";
}