Основное назначение строковых функций
Пустая строка
Основное назначение строковых функций заключается в выполнении операций над ними независимо от других условий. Например, перед выполнением любой операции со строкой, иногда нужно проверить является ли строка пустой. И в зависимости от результата, принять решение, что делать дальше.
Есть два способа проверки содержимого основного текста элемента управления. Можно выполнить проверку с использованием перегруженного оператора AnsiString "==". Например:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString Original = Edit1->Text;
if(Original == "")
Edit2->Text = "Why is Edit1 empty?";
}
У класса AnsiString есть собственная функция, используемая для проверки строки на пустое значение. Её синтаксис:
bool __fastcall IsEmpty() const;
Эта функция может быть использована для проверки на пустое значение контента элементов управления, но её нельзя использовать для установки пустого значения. Следующий пример показывает два варианта использования метода AnsiString::IsEmpty():
void __fastcall TOKBottomDlg::OKBtnClick(TObject *Sender)
{
String UserName = edtUserName->Text;
if( Edit1.IsEmpty() )
Panel1->Caption = "Please provide a User Name";
if( Edit2->Text == "" )
Panel1->Caption = "You need to type a password";
if( Edit3->Text.IsEmpty() )
Panel1->Caption = "Your account is not complete";
edtUserName->SetFocus();
}
Длина строки
Если строка была инициализирована или, по крайней мере, не пустая - она имеет длину. Существует много способов определения и установки длины строки.
Для нахождения длины строки, если строка определена в стиле С, вы можете сконвертировать её, применив функцию AnsiString::c_str(), и затем использовать функцию strlen() для получения её длины:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
char* S = Edit1->Text.c_str();
Edit2->Text = strlen(S);
}
Для получения длины строки переменной AnsiString нужно использовать метод String::Length(). Его синтаксис:
int __fastcall Length() const;
Эта функция вернет целочисленное значение длины строки. Например:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString S = Edit1->Text;
Edit2->Text = S.Length();
}