Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Книга о KOL.doc
Скачиваний:
29
Добавлен:
30.04.2019
Размер:
1.77 Mб
Скачать

2. Программирование в kol

2.1. Функции работы со строками

Итак, начнем с азов. Названия функций для преобразования строк в числа и наоборот в KOL, как уже говорилось, отличаются от названий аналогичных функций в SysUtils. Частица "To" в большинстве случаев заменена созвучной (для английского языка) цифрой 2: не IntToStr, а Int2Str, например. Вот неполный перечень таких функций: Int2Str( i ), Str2Int( i )*, UInt2Str( i ), Int2Hex( i, n ), Hex2Int( s ), Copy( s, i, n ), CopyEnd( s, i ), CopyTail( s, n ), и т.п..

Дополнительные функции преобразования: Int2Rome( i ) - "записывает" число от 1 до 8999 римскими цифрами; Int2Ths( i ) - то же, что Int2Str, но тройки цифр разделяются друг от друга специальным разделителем (по умолчанию - пробелом, но это легко изменить, присвоив глобальной переменной ThsSeparator свой разделитель); Int2Digits( i, n ) - то же, что Int2Str, но перед числом добавляется необходимое число ведущих пробелов, чтобы результирующая строка была не короче n; Num2Bytes( d ) - формирует представление числа байтов (заданное параметром с плавающей запятой двойной точности) в виде n или nK или nM или nG или nT - в зависимости от значения параметра; S2Int( s ) - то же, что Str2Int, но работает с параметром типа PChar, а не ANSI-строкой; cHex2Int( s ) - аналогично Hex2Int, но понимает шестнадцатеричные числа, записанные по правилам языка C (ведущие символы 0x отбрасываются); Octal2Int( s ), Binary2Int( s ) - назначение этих функций очевидно. Имеется так же и функция Format( s, ... ) - но в KOL она использует API-функцию wvsprintf, поэтому не понимает форматирование чисел с плавающей запятой.

Кроме этого, в KOL имеется ряд функций для облегчения разбора (парсирования) строк: Parse( s, d ) - возвращает часть строки s до первого из встретившихся символов из строки d, оставляя в самой строке s только часть после встреченного символа-разделителя. StrIsStartingFrom( s, p ) - проверяет, что начало строки s совпадает со строкой p. StrSatisfy( s, p ) - проверяет строку s на соответствие шаблону (шаблон может содержать символы маски '*' и '?', интерпретируемые, соответственно, как "любые символы", и "один произвольный символ").

SkipSpaces( s ) - пропускает пробелы, перемещая указатель s на следующий печатный символ в строке.

DelimiterLast( s, d ) - возвращает позицию последнего символа-разделителя из строки d в строке s; IncludeTrailingChar( s, c ) - возвращает s, добавляя символ c, если он еще не является последним в строке; ExcludeTrailingChar( s, c ) - наоборот, удаляет завершающий символ c.

Ряд функций работы со строками в KOL перенесены, иногда с некоторыми изменениями, из стандартного модуля SysUtils (секрета из этого я никакого не делаю, главная причина в том, что в KOL-проектах нежелательно использовать сам модуль SysUtils, из-за увеличения размера приложения на 20-30 Кбайт, в то же время эти функции бывают необходимы очень часто): StrComp( s1, s2 ), StrLComp( s1, s2, n ), StrCopy( s1, s2 ), StrCat( s1, s2 ), StrLen( s ), StrScanLen( s, c, n ), StrScan( s, c ), StrRScan( s, c ), Trim( s ), TrimLeft( s ), TrimRight( s ), LowerCase( s ), UpperCase( s ), AnsiLowerCase( s ), AnsiUpperCase( s ). И в дополнение к ним имеются: StrComp_NoCase( s1, s2 ), StrLComp_NoCase( s1, s2, n ), Str2LowerCase( s ) - принимает PChar параметр, и выполняет модификацию строки на месте. А так же: RemoveSpaces( s ), WAnsiUpperCase( s ), WAnsiLowerCase( s ), StrEq( s1, s2 ), AnsiEq( s1, s2 ), String2PascalStringExpr( s ), StrIn( s, ... ), WStrIn( s, ... ), StrReplace( s, s1, s2 ), WStrReplace( s, s1, s2 ), StrRepeat( s, n ), WStrRepeat( s, n ), и множество других.