Обработка символов и строк текста Символьный тип В зависимости от компилятора Pascal символьный тип char занимает 1 или 2 байта. В компиляторе FreePascal, Borland Pascal, Turbo Pascal и других традиционных компиляторах — 1 байт. В PascalABC.NET — 2 байта. Строковый тип Строки имеют тип string, состоят из набора последовательно расположенных символов char и используются для представления текста. В компиляторах FreePascal, Borland Pascal, Turbo Pascal строка имеет максимальную длину 255. В PascalABC.NET строки могут иметь произвольную длину. К символам в строке можно обращаться, используя индекс: s[i] обозначает i-тый символ в строке, нумерация начинается с единицы. Если индекс i выходит за пределы длины строки, то генерируется исключение. Операция + для строк означает конкатенацию (слияние) строк. Например: 'Петя' + 'Маша' = 'ПетяМаша'. Для описания строк заданного конечного размера используется тип string[n], где n - константа целого типа, указывающая длину строки. Функции Ord и Chr Для преобразования между символами и их кодами в кодировке Windows (CP1251) используются стандартные функции Chr и Ord: Chr(n) - функция, возвращающая символ с кодом n в кодировке Windows; Ord(с) - функция, возвращающая значение типа byte, представляющее собой код символа c в кодировке Windows. Обработка кода символа Получение числового значения цифры var x:Integer; c:Char; begin Read(c); x := Ord(c) – Ord('0'); Write(c); end. Получение заданной буквы алфавита var x:Integer; c:Char; begin Read(x); c := Chr(Ord('a') + x); Write(c); end. Обработка строк как массивов символов и при помощи специальных функций К строкам применимы все операции сравнения <, >, <=, >=, =, <>. Кроме этого, к строкам и символам применима операция конкатенации (слияния) + , ее результат имеет строковый тип. Например, 'a' + 'b'='ab'. 1. function Pos(subs,s: string): integer; Возвращает позицию подстроки subs в строке s. Если не найдена, возвращает 0 2. function Length(s: string): integer; Возвращает длину строки 3. function Copy(s: string; index,count: integer): string; Возвращает подстроку строки s длины count с позиции index 4. procedure Insert(source: string; var s: string; index: integer); Вставляет подстроку source в строку s с позиции index 5. function LowerCase(s: string): string; Возвращает строку в нижнем регистре 6. function UpperCase(s: string): string; Возвращает строку в верхнем регистре 7. function CompareStr(s1,s2: string): integer; Сравнивает строки. Возвращает значение < 0 если s1 0 если s1>s2 и = 0 если s1=s2 8. procedure Val(s: string; var value: integer; var err: integer); Преобразует строковое представление s целого числа к числовому значению и записывает его в переменную value. Если преобразование успешно, то err=0, иначе err>0 9. procedure Val(s: string; var value: real; var err: integer); Преобразует строковое представление s вещественного числа к числовому значению и записывает его в переменную value. Если преобразование успешно, то err=0, иначе err>0 10. procedure Str(i: integer; var s: string); Преобразует целое значение i к строковому представлению и записывает результат в s 11. procedure Str(r: real; var s: string); Преобразует вещественное значение r к строковому представлению и записывает результат в s Все эти функции, кроме разве только Length, могут быть реализованы самостоятельно, обращаясь к строке как к массиву. Нет смысла это делать, если помнить и уметь использовать эти функции.