Что делает copy в паскале
Windows, Real, Protected
Замечания
Параметр S — выражение со строковым типом. Index и Count — выражения целочисленного типа. Функция Copy возвращает подстроку строки S, содержащую Count символов, начиная с символа с номером Index.
Если значение Index больше, чем длина строки S, то Copy возвращает пустую строку. Если значение Count больше, чем оставшееся количество символов в строке с позиции Index до конца строки, то возвращается Length (S)-Index символов.
Смотри также
Пример
Язык:
Русский
English
Функции Copy, Pos, процедуры Delete, Insert.
Функция Copy позволяет копировать из строки часть символов. Функция имеет 3 параметра. Copy (st, index, count). St-строка из которой копируют, Index-номер символа, с которого начинается копирование, Count-количество символов, которое будет скопировано.
Процедура Delete удаляет часть символов из строки. Процедура имеет 3 параметра. Delete (st, index, count). St-строка, из которой будут удалены символы, Index-номер символа, с которого начинается удаление, Count-количество символов, подлежащих удалению.
Процедура Insert позволяет вставлять символы в строку. Процедура имеет 3 параметра. Insert (subst, st, index). Subst-подстрока, которую необходимо вставить, St-строка, в которую вставляется подстрока, Index-номер элемента, с которого начинается вставка.
Функция Pos отыскивает в строке первое вхождение подстроки и возвращает в качестве значения номер элемента, с которого начинается вхождение. Функция имеет 2 параметра. Pos (subst, st). Subst-подстрока, St-строка.
Использование функции COPY, процедуры DELETE.
program string5; uses crt; var stroka1,stroka2:string; begin clrscr; stroka1:='Programmirovanie '; stroka2:=copy(stroka1,3,10); writeln(stroka2); delete(stroka1,3,10); writeln(stroka1); readln end.
Строка №6. Записываем в переменную «stroka1» слово «Programmirovanie».
Строка №7. В переменную «stroka2» записываем значение функции Copy. В результате работы этой функции из переменной «stroka1» (слова «Programmirovanie») будет скопировано 10 символов, начиная с 3-го символа.
Строка №9. Процедура Delete удалит из слова «Programmirovanie» 10 символов, начиная с 3-го.


Использование функции POS, процедуры INSERT.
program string6; uses crt; var stroka1,stroka2:string; nomer:integer; begin clrscr; stroka1:='Programmirovanie '; stroka2:='PASCAL'; insert(stroka2,stroka1,8); writeln(stroka1); nomer:=pos('S',stroka1); writeln(nomer); readln end.
Строка №9. Процедура Insert позволяет вставить в строку другую строку. В нашем случае в слово «Programmirovanie» вставляется слово «PASCAL», начиная с 8-го символа.
Строка №11. В переменную «nomer» записывается значение функции Pos. Переменная «stroka1» содержит слово «ProgramPASCALmirovanie». Буква «S» является 10-й по счету. Соответственно в переменную «nomer» будет записано число 10.
Функция Copy

Функция Copy в Паскале копирует часть строки. Синтаксис:
function Copy(S: AStringType; Index: Integer; Count: Integer) : AStringType;
Здесь AStringType — это любой строковый тип данных.
Второй вариант для динамических массивов:
function Copy(A: DynArrayType; Index: Integer; Count: Integer) : DynArrayType;
Здесь DynArrayType — это какой-либо динамический массив (о динамических массивах как-нибудь в другой раз).
Функция Copy копирует несколько символов подряд из строки S и возвращает эти символы в виде строки. Первый символ, с которого начинается копирование строки, указан в параметре Index (нумерация символов в строке начинается с единицы слева направо). Количество копируемых символов указано в параметре Count.
Например, вот этот код
str := Copy(‘123456’, 3, 2);
копирует в строку str два символа, начиная с 3-го. То есть после выполнения этого кода в str будет строка ’34’.
Если в параметре Count будет указано значение, превышающее длину строки, то результат будет обрезан. Например, вот этот код
str := Copy(‘123456’, 4, 10);
копирует в строку str три символа ‘456’, хотя мы “заказали” копирование 10 символов.
Если в параметре Index будет указано значение, превышающее длину строки, то функция вернёт пустую строку. Например, вот этот код
str := Copy(‘123456’, 15, 2);
вернёт пустую строку, потому что в строке всего 6 символов, а мы указали в качестве первого копируемого символа число 15.
Для динамических массивов функция возвращает новый динамический массив того же типа, что и указанный в параметре А, и копирует количество элементов Count из старого массива, начиная с элемента, определённого параметром Index.
А теперь пример программы.
program funccopy; uses SysUtils; var str : string; d, m, y : string; im : integer; begin str := '18.01.2017'; d := Copy(str, 1, 2); //d = 18 m := Copy(str, 4, 2); //m = 01 y := Copy(str, 7, 4); //y = 2017 im := StrToInt(m); case im of 1 : str := d + ' January ' + y; 2 : str := d + ' February ' + y; 3 : str := d + ' March ' + y; 4 : str := d + ' April ' + y; 5 : str := d + ' May ' + y; 6 : str := d + ' June ' + y; 7 : str := d + ' July ' + y; 8 : str := d + ' August ' + y; 9 : str := d + ' September ' + y; 10: str := d + ' October ' + y; 11: str := d + ' November ' + y; 12: str := d + ' December ' + y; end; WriteLn(str); ReadLn; end.
Не забудьте подключить модуль SysUtils, чтобы использовать функцию StrToInt (её мы изучим как-нибудь в другой раз, а пока только скажу, что она преобразует строку в число).
Программа простая. Если кто не разобрался, то см. видео выше.
Типы данных
В большинстве применений компьютера алфавитно-цифровая информация используется наряду с числовой. Прежде чем мы сможем написать программу, которая манипулирует алфавитно-цифровыми знаками (литерами), нам потребуется тип данных для их представления. Для этих целей в языке Паскаль предусмотрен тип данных char. Так же, как переменная типа integer может хранить одно целое число, переменная типа char может хранить один символ. Например,
| Var Alpha : char; Begin Alpha :=’p’; Alpha :=’+’; Alpha :=’3′; Alpha :=’ ‘; Alpha :=»»; |
Первый оператор присваивания записывает в переменную Alpha литеру р. Второй делает Alpha равной литере плюса (+). Третий делает Alpha равной символу 3. Заметим, что символ 3 отличается от целого числа 3 тем, что символ не может быть использован в арифметических операциях. Четвертый оператор присваивания делает Alpha равной литере пробела. Хотя литера пробела при печати не изображается, она является обыкновенным значением типа char. Последний оператор присваивания делает Alpha равной литере апострофа, это специальный случай, так как знак апострофа используется для ограничения значения типа char. Мы будем пользоваться множеством литер, находящимся в таблице кодов, называемой ASCII — американский стандартный код обмена информацией. Все символы упорядочены, т.к. имеют свой личный номер. Важно, что соблюдаются следующие отношения: ‘A’ < 'B' < 'C' < . < 'X' < 'Y' < 'Z' '0' < '1' < '2' < . < '7' < '8' < '9'Для проверки равенства или неравенства переменных типа char могут использоваться операторы сравнения. Задача. Написать программу, которая считывает две литеры и печатает больше, равна или меньше первая литера второй.
| Program Sravnenie; Var First, Second : char; Begin write (‘Введите две литеры: ‘); readln (First, Second); write (‘Первая литера ‘); if First > Second then write (‘больше второй. ‘) else if First = Second then write (‘равна второй. ‘) else write (‘меньше второй. ‘); Еnd. |
Так как char — порядковый тип, то к его значениям применимы следующие функции.
Succ — возвращает следующий символ литерного множества; Pred — возвращает предыдущий символ литерного множества; Ord — возвращает значение кода литеры; Chr — возвращает значение литеры по ее коду, является обратной по отношению к функции Ord.
Например, Succ(‘0′)=’1’ — символ, следующий за символом 0, равен символу 1. Pred(‘3′)=’2′ — символ, предшествующий символу 3, равен 2; Chr(65)=’A’ — символ, соответствующий коду 65, равен А; Ord(‘A’)=65 — код символа А равен 65.