Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Delphi.doc
Скачиваний:
15
Добавлен:
19.03.2015
Размер:
176.13 Кб
Скачать

If AnsiMatchText(YouName,['Вася','Петя','Гриша']) then

ShowMessage('Ты мальчик')

else if AnsiMatchText(YouName,['Света','Оля','Настя']) then

ShowMessage('Ты девочка')

else

ShowMessage('Я не знаю тебя!');

function AnsiIndexStr (const AText: string; const AValues: array of string): Integer;

function AnsiIndexText (const AText: string; const AValues: array of string): Integer;

Возвращают индекс строки AText в списке AValues. Первый элемент списка имеет индекс 0. Если же AText в списке AValues не встречается, возвращает -1. Очень удобные функции, жаль что об их существовании многие не догадываются. Приведу пример использования:

case AnsiIndexText(Cmd,['вверх','вниз','влево','вправо']) of

0 : Dec(y);

1 : Inc(y);

2 : Dec(x);

3 : Inc(x);

else ShowMessage('Незнакомая команда: "'+Cmd+'"');

end;

function AnsiReplaceStr (const AText, AFromText, AToText: string): string;

function AnsiReplaceText (const AText, AFromText, AToText: string): string;

Позволяют выполнить замену контекста AFromText на AToText в строке AText.

function StuffString(const AText: string; AStart, ALength: Cardinal; const ASubText:

string): string;

Заменяет фрагмент строки AText, начиная с позиции AStart и длиной ALength, строкой ASubText.

function StringOfChar(Ch: Char; Count: Integer): string;

Возвращает строку длинной Count, состоящую из символов Ch.

...

Короче, не забывайте на досуге читать файлы справки, найдёте там ещё много интересных и полезных функций.

Некоторые приемы использования строк типа AnsiString

В этом разделе, я постараюсь воздержаться от пространных комментариев, а попробую продемонстрировать некоторые приёмы работы с динамическими строками, учитывающие их реализацию.

Передача строк в качестве параметров

Как известно, есть четыре способа передачи параметров в процедуру или функцию. Вот какие особенности они имеют если параметр - динамическая строка:

  1. входной параметр (const) – его значения нельзя изменять внутри, поэтому, передаётся адрес экземпляра динамической строки, без увеличения счётчика ссылок;

  2. выходной параметр (out) – передаётся адрес строковой переменной которая будет получать результат. В общем случае значение такого параметра на входе в функцию считаются неопределённым, но для динамических строк, он всегда равен пустой строке. Естественно, счётчик ссылок не увеличивается – у пустой строки его просто нет. В месте вызова, и в начале процедуры, выполняется дополнительный код, обеспечивающий очистку строки. Конечно, на него тратится память и время.

  3. параметр переменная (var) – передаётся адрес строковой переменной. Изменение этого параметра отражается изменением переданной переменной. Счётчик ссылок на экземпляр строки не увеличивается, поскольку передаётся не ссылка, а ссылка на ссылку;

  4. параметр-значение – для такого параметра создается локальная копия переданного значения. При этом передаётся адрес экземпляра динамической строки, а в начале процедуры, при создании локальной копии параметра, увеличивается счётчик ссылок на экземпляр. На это тратится память и время.

Прочитав это, должна стать понятным следующее:

Если в качестве параметра передаётся динамическая строка, которая не будет изменяться внутри процедуры, то желательно описать этот параметр как входной (const). В отличие от простых типов (Integer, Boolean, и т.п.), это уменьшит код программы, и увеличит скорость ее работы.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]