Delphi 6 программирование

       

Типы String и ShortString



7.3.1. Типы String и ShortString

Несмотря на разницу во внутреннем представлении, короткие строки ShortString и длинные строки string имеют для программиста одинаковые свойства.

Текущую длину строки можно получить с помощью функции Length. Например, следующий оператор уничтожает все ведомые (хвостовые) пробелы:

while (Length(stS) о 0) and (stS[Length(stS)] = ' ' ) do

SetLentgh(stS, Length (stS) - 1);

В этом примере стандартная процедура setLength устанавливает новую длину строки. К строкам можно применять операцию “+” -сцепление, например:

stS := 'а' + 'b'; // stS содержит "ab"

stS := stS + ' с '; // stS содержит "abc"

Если длина сцепленной строки превысит максимально допустимую длину N короткой строки, то “лишние” символы отбрасываются. Следующая программа, например, выведет символ “I”:

Procedure TfmExamlpe.bbRunClick(Sender: TObject);

var

ssS: String[1];

begin



ssS := '123';

IbOutput := ssS;

end;

Операции отношения =, <>, >, <, >=, <= выполняются над двумя строками посимвольно, слева направо с учетом внутренней кодировки символов. Если одна строка меньше другой по длине, недостающие символы короткой строки заменяются значением #о.

Следующие операции отношения дадут значение True:

'''' < '.'

'А' > '1'

'Object' < ' Object Pascal'

'Пас' > 'Pasc al'

Все остальные действия над строками и символами реализуются с помощью описываемых ниже стандартных процедур и функций (в квадратных скобках указываются необязательные параметры).

Таблица 7.7. Процедуры и функции для работы со строками




Function AnsiLowerCase(const S: String ): String; Возвращает исходную строку S, в которой все заглавные буквы заменены на строчные в соответствии с национальной кодировкой Windows (т. е. с учетом кириллицы)
Function AnsiUpperCase(const S: String ): String; Возвращает исходную строку s, в которой все строчные буквы заменены на заглавные в соответствии с национальной кодировкой Windows
Function Concat(Sl [, S2, ..., SN]: String ): String; Возвращает строку, представляющую собой сцепление строк-параметров S1, S2, ... , SN
Function Copy(St: String; Index, Count: Integer): String; Копирует из строки St count символов, начиная с символа с номером Index
Procedure Delete(St: String;

Index, Count:" Integers-

Удаляет count символов из строки St, начиная с символа с номером index
Procedure Insert(SubSt:

String; St, Index: Integer);

Вставляет подстроку SubSt в строку St, начиная с символа с номером Index
Function Length(St: String): Integer; Возвращает текущую длину строки St
Function LowerCase(const S:String): String; Возвращает исходную строку S, в которой все латинские заглавные буквы заменены на строчные
procedure OleStrToStrVar(Source: PWideChar; var Dest:String) ; Копирует “широкую” (двухбайтную) строку в обычную строку Object Pascal
Function Pos(SubSt, St:String): Integer; Отыскивает в строке St первое вхождение подстроки SubSt и возвращает номер позиции, с которой она начинается. Если подстрока не найдена, возвращается ноль
Procedure SetLength(St:String; NewLength: Integer); Устанавливает новую (меньшую) длину NewLength строки St. если NewLength больше текущей длины строки, обращение к SetLength игнорируется
function StringOfChar(Ch:Char; Count: Integer):String; Создает строку, состоящую из Count раз повторенного символа ch
function StringToOleStr(const Source: String):PWideChar; Копирует обычную строку в двухбайтную
function StringToWideChar(const Source: String; Dest:PWideChar; DestSize: Integer) : PWideChar; Преобразует обычную строку в строку с символами UNICODE
Function Uppercase(const S:String): String; Возвращает исходную строку S, в которой все строчные латинские буквы заменены на заглавные
Подпрограммы преобразования строк в другие типы
Function StrToCurr(St: String): Currency; Преобразует символы строки St в целое число типа Currency. Строка не должна содержать ведущих или ведомых пробелов
Function StrToDate(St: String): TDateTime; Преобразует символы строки St в дату. Строка должна содержать два или три числа, разделенных правильным для Windows разделителем даты (в русифицированной версии таким разделителем является “.”). Первое число - правильный день, второе - правильный месяц. Если указано третье число, оно должно задавать год в формате XX или ХХХХ. Если символы года отсутствуют, дата дополняется текущим годом. Например: DateToStr(StrToDate('28.06')) даст строку '28.06.99' (см. ниже пояснения)
Function StrToDateTime(St:

String): TDateTime;

Преобразует символы строки St в дату и время. Строка должна содержать правильную дату (см. StrToDate) и правильное время (см. StrToTime), разделенные пробелом, например: StrToDateTime('28.06 18:23')
Function StrToFloat(St:String): Extended Преобразует символы строки St в вещественное число. Строка не должна содержать ведущих или ведомых пробелов
Function StrToInt(St:String): Integer; Преобразует символы строки St в целое число. Строка не должна содержать ведущих или ведомых пробелов
Function StrToIntDef(St:String; Default: Integer):Integer; Преобразует символы строки St в целое число.

Если строка не содержит правильного представления целого числа, возвращается значение Default

Function StrToIntRange(St:String; Min, Max: Longint):Lomgint; Преобразует символы строки St в целое число и возбуждает исключение ERangeError, если число выходит из заданного диапазона Min.. .мах
Function StrToTime(St:String): TDateTime; Преобразует символы строки St во время.

Строка должна содержать два или три числа, разделенных правильным для Windows раздели телем времени (для русифицированной версии таким разделителем является “:”). Числа задают часы, минуты и, возможно, секунды. За послед ним числом через пробел могут следовать символы “am” или “рm”, указывающие на 12- часовой формат времени

Procedure Val(St: String; var

X; Code: Integer);

Преобразует строку символов St во внутреннее представление целой или вещественной переменной х, которое определяется типом этой переменной. Параметр Code содержит ноль, если преобразование прошло успешно, и тогда в х помещается результат преобразования, в противном случае он содержит номер позиции в строке St, где обнаружен ошибочный символ, и в этом случае содержимое х не меняется. В строке St могут быть ведущие и/или ведомые пробелы. Если St содержит символьное представление вещественного числа, разделителем целой и дробной частей должна быть точка независимо от того, каким символом этот разделитель указан в Windows
Подпрограммы обратного преобразования
Function DateTimeToStr(Value: TDateTime): String; Procedure DateTime-ToString(var St: String; For.gif" >


Содержание раздела