Илл. 3. Пример обработки длинной строки в программе longstring.
Далее, производится операция присвоения значений массива S переменной LongS и ее последний символ помечается символом завершения строки «#0».
Кроме того, мы можем и напрямую работать с массивами символов Char, как со строками.
В модуле Strings описываются следующие операторы для обработки ASCIIZ-строк, но мы перечислим кратко основные из них, поскольку в обычной практике они нам не потребуются:
StrCopy (S1,S2): Pchar; – Копирует строку S2 в строку S1, возвращая указатель на S1.
StrLen (S1): Integer; – Возвращает длину строки.
StrCat (S1, S2): Pchar; – Объединяет строки S1 и S2, возвращая указатель на начало строки.
StrECopy (S1, S2): Pchar; – так же объединяет строки S1 и S2, но возвращает указатель на конец строки.
StrComp (S1, S2): Integer; – Сравнивает две строки и возвращает код 0 если строки равны, положительное значение если S1> S2 и отрицательное значение если S1 меньше S2.
StrlComp (S1,S2: Pchar; L: Word): Pchar; – так же сравнивает строки, но не более числа символов, указанного в L.
StrEnd (S): Pchar – Возвращает указатель на конец строки.
StrLCat (S1, S2: Pchar; L: Word): Pchar; – функция копирует строку S2 в конец строки S1 с учетом ограничения на количество символов L.
Пример работы с массивом символов S, как с длинными строками:
Илл. 4. Обработка массива S с помощью функций StrCopy и StrLen.
В данном случае, мы присваиваем массиву значение функцией StrCopy, а затем измеряем его длину с помощью StrLen и выводим на экран.
Илл. 5. Результат работы программы Longstring.
Из недостатков работы с длинными строками выделяются:
– относительно долгие операции конкатенации (объединения двух строк) и получения числового значения их длины;
– отсутствие контроля за концом строки, (что может вызывать потери данных и критические ошибки);
– невозможность использовать символ завершающего байта (#0) в качестве элемента строки;
– громоздкость синтаксиса.
По этим причинам и ввиду особой специфики работы, – большее внимание мы уделим операциям с обычными строками.