На зорі своєї появи ЕОМ в основному використовувалися для математичних розрахунків. Після того, як комп'ютери одержали можливість розпізнавати символи (текст) і працювати з ними, сфера використання ЕОМ для обробки інформації значно розширилася. Тому для забезпечення роботи і розширення можливостей в цій сфері в turbo Pаscаl був уведений ще один стандартний тип даних - STRING (рядок). Ця структура дуже схожа на масив символів, але дозволяє працювати з рядками перемінної або невідомої довжини. При оголошенні рядкової змінної типу STRING необхідно тільки зазначити максимальну її довжину, що не повинна перевищувати 255. Наприклад:
VAR s1,s2 : string[40];
line : string[255];
Змінні s1 і s2 можуть мати довжину від 0 до 40, а line - від 0 до 255. в пам'яті змінні типу string займають на один байт більше, ніж її максимальна довжина. Звертання до елементів рядка таке ж, як і в масивах символів,- по індексу. Індекс змінюється від 0 до максимальної довжини. в нульовому елементі зберігається символ, код якого дорівнює поточній довжині рядка. А з першого по максимальний елемент можуть розташовуватися символи самого рядка. Наприклад, якщо s1:='оператор', то ord(s1[0]) буде дорівнює 8.
З даними типу string (стрінгами) визначено декілька операцій, функцій і процедур, що значно полегшують їхню обробку:
1) + операція конкатенации ( склеювання ). Якщо а='транс', b='форма', із='тор', то після s:=a+b+c s буде дорівнює 'трансформатор';
2) функція length(s) повертає довжину (ціле число) стрінга s. Length(s)
еквівалентно ord(s[0]), але наглядніше;
3) функція concat(s1,s2,...) повертає рядок, що є конкатенацією рядків s1,s2,..., тобто s:=concat(s1,s2,...) еквівалентно s:=s1+s2+...;
4) функція pos(s1,s2) повертає позицію (індекс), із якої підрядок s1 входить в рядок s2. Наприклад, якщо s2='трансформатор',
а s1='форма', то pos(s1,s2)=6;
інший приклад: pos('а','інформатика')=7;
якщо рядок s1 не міститься в s2, то функція pos поверне 0;
5) функція copy(s,i,k) повертає підрядок стрингу s, що утворюється з рядка s копіюванням, починаючи з i-го k символів. Наприклад:
copy('визначення',5,3)='справ';
6) процедура delete(s,i,k) видаляє зі стрингу s, починаючи з i-го k символів. Результат присоюється змінній s. Наприклад: якщо s='значення', то після delete(s,4,2) s стане дорівнює 'знання';
7) процедура insert(s1,s2,i) вставляє рядок s1 в рядок s2 перед символом s2[i]. Приклад: якщо s1='че', s2='знання', то після операції insert(s1,s2,4) s2 стане дорівнювати 'значення';
8) процедура str(x,s) переводить числове значення x в відповідне строковое значення і поміщає його в стринг s. Наприклад, якщо a=1993,
то після str(a,st) st буде дорівнювати '1993';
9) процедура val(s,v,c) переводить строковое значення s в ціле або дійсне значення (залежить від типу змінної v), що присвоюється змінній v. c - це код (цілий) результату операції.
Якщо операція пройшла успішно, то c=0, якщо ж ні, - то c = номеру першого помилкового символу. Приклади:
якщо s='125',то після val(s,x,code) x=125, code=0;
якщо s='3R5', то після val(s,x,code) x невизначено, а code=2.
Процедури на відміну від функцій не повертають ніяких значень, а просто виконують деякі дії зі своїми аргументами. В результаті деякі аргументи можуть змінюватися (докладніше про це в темі "Процедури і функції").
Вивід стрингів, так само, як і символьних масивів, здійснюється операторами write і writeln, а введення можна виконати оператором readln (але не read).
Стринги (тип string) зручніше звичайних символьних масивів при обробці, але не дозволяють працювати з рядками більш 255 символів. Однак можна вийти з положення так: великий текст зберігається в символьному масиві, із яких копіюються порції в окремі стринги, обробляються і повертаються в масив. Ще можна скористатися масивом стрингів ( array [1..n] of string[m] ), але при цьому неекономно витрачається пам'ять ЕОМ.