Типи рядків

 

Тип

рядка

Максимальна довжина

Призначення

Наявність нульового символу в кінці

AnsiString

~231 (~2Гб)

символів ANSI

є

String

або 255, або до ~2 Гб

символів ANSI або Unicode

є або немає

WideString

~230(-1 Гб)

символів Unicode, в серверах СОМ та інтерфейсах

є

Короткий рядок представляє собою рядок, для якого область пам'яті виділяється статично. Тип ShortString може представляти собою текст довжиною до 255 символів. Змінна цього типу має фіксований розмір 255 байт. Цей тип визначений для забезпечення сумісності з попередніми версіями Delphi і BP. Перший байт (нульовий) відводиться для зберігання Довжини тексту, решта-для символів.

Тип AnsiString (довгі рядки) призначений для створення змінних, що зберігають тексти довільної довжини, при чому для змінної типу AnsiString пам'ять виділяється динамічно. Максимальна довжина рядка обмежується тільки доступним об'ємом пам'яті (2 Гбайта). Сама змінна - це є покажчик розміром 4 байта. В нових додатках, написаних на Delphi. рекомендується використовувати виключно довгі рядки.

Тип WideString складається з Unicode-символів, які визначені як 10- розрядні, тобто кодуються десятьома символами. Пам'ять для змінних цього типу виділяється динамічно. Цей тип використовують, якщо використовується в додатках технологія OLE і ActiveX.

Базовим є тип String, який має різний зміст залежно від директиви компилятора $Н. Директива компілятора $Н визначає, чи представляє зарезервоване слово string короткий або довгий рядок. Якщо ж включити директиву {$Н-}, то String інтерпретується компілятором як тип ShortString - короткий рядок без нульового символу в конці.

Якщо в описі типу рядка після ключового слова String в квадратних дужках вказана кількість символів (наприклад, String[10]), то, незалежно від деректив компілятора, тип трактується як рядок без нульового символу в кінці із вказаним числом символів.

Стандартна функція Length повертає число символів в рядку, що передається їй в якості параметра. Процедура SetLength встановлює довжину рядка. Для рядків визначені операції порівняння > , <, = і т.п. якщо порівнюються два рядки, то більшим вважається рядок більшої довжини. Якщо порівнюються рядки однакової довжини, то порівнюються коди символів на однакових позиціях. З рядками можна оперувати як з індексованими масивами символів. Наприклад, S[i] - це символ, що розташований в рядку на позиції і (нумерація починається від 1, тобто індекс 1 відповідає першому символу). Для рядків типу ShortString або AnsiString вираз S[i] має тип AnsiChar, для рядків типу WideString - WideChar. Конкатенація рядків здійснюється операцією „+". Наприклад, вираз S1+S2 видає як результат рядок, в якому після символів рядка S1 будуть розташовані символи рядка S2. Рядки різних типів можуть присвоюватися один одному та змішуватися в одному виразі (компілятор при цьому здійснює автоматичне приведення типів). Але рядки, що передаються як параметри в функції та процедури, повині мати тип, що вказується при описі цих функцій та процедур. В цих випадках при необхідності потрібно використовувати операції явного приведення типів або інші прийоми програмування.

Отже, типи рядків можна класифікувати за двома ознаками: дові або короткі рядки та рядки, що використовують та не використовують нульовий символ в кінці.