Программирование в среде Турбо Паскаль (Поляков, Круглов) - страница 100

- 154 -

Insert(VAR S : String; SubS: String; Start: Integer)

Вставляет в S подстроку SubS, начиная с позиции Start

Pos(SubS, S : String) : Byte

Ищет вхождение подстроки SubS в строке S и возвращает номер первого символа SubS в S или 0, если S не содержит SubS

ПРОЦЕДУРЫ ПРЕОБРАЗОВАНИЯ

Str(X[ :F[:n]]; VAR S : String)

Преобразует числовое значение X в строковое S. Возможно задание формата для X

Val( S : String; VAR X; VAR ErrCode : Integer)

Преобразует строковое значение S (строку цифр) в значение числовой переменной X

8.3.1. Редактирование строк


Функция Length(S : String) возвращает текущую длину строки S. Вообще говоря, можно вместо нее пользоваться конструкцией Ord( S[0] ), что то же самое.

Функция Concat производит слияние переданных в нее строк. Вместо нее всегда можно пользоваться операцией «+»:

S3 := Concat( S1,S2 ); { то же, что S3 := S1 + S2 }

S3 := Concat( S3,S1,S2 ); { то же, что S3 := S3 + S1 + S2 }

Если сумма длин строк в Concat превысит максимальную длину строки в левой части присваивания, то излишек будет отсечен.

8.3.1.3. Функция Сору(S : String; Start, Len : Integer) позволяет выделить из строки последовательность из Len символов, начиная с символа Start. Если Start больше длины всей строки S, то функция вернет пустую строку, а если Len больше, чем число символов от Start до конца строки S, то вернется остаток строки S от Start до конца. Например:

SCopy = Сору( 'АВС***123', 4, 3 ) { SСору='***' }

SCopy = Copy( 'ABC', 4, 3 ) { SCopy=' '}

SCopy = Copy( 'ABC***123', 4,11 ) { SCopy='***123' }

- 155 -

Используя процедуру Copy, построим игровой пример появления строки на экране (рис. 8.4).


| USES CRT; { используется модуль CRT }

| { Процедура выводит строку S в позиции (X,Y), }

| { с эффектом раздвижения и звуковым сигналом. }

| PROCEDURE ExplodeString(X,Y: Byte; S: String; С: Word );

| VAR

| > i,L2 : Byte;

| BEGIN

| > L2 := (Length(S) div 2 ) + 1; { середина строки }

| >if X < L2 then

| > X:=L2; { настройка X }

| >for i:=0 to L2-1 do

| >begin { цикл вывода: }

| > GotoXY( X-i, Y ); { начало строки }

| { Вывод расширяющейся центральной части строки: }

| > Write( Copy( S, L2-i, 2*i+1 ));

| > Sound(i*50); { подача звука }

| > Delay(С); { задержка С мс }

| > NoSound { отмена звука }

| >end { конец цикла }

| END;

| >{ ========= ПРИМЕР ИСПОЛЬЗОВАНИЯ ПРОЦЕДУРЫ ======== }

| BEGIN

| > ClrScr; { очистка экрана }

| > ExplodeString( 40, 12, '12345678900987654321', 30);

| > ReadLn { пауза до нажатия клавиши ввода }

| END.


Рис. 8.4


8.3.1.4. Процедура Delete( VAR S : String; Start, Len : Integer )