W praktyce jednak częściej od typu znakowego używa się typu napisowego. Jak mówi sama nazwa, służy on do pamiętania napisu. W TP napis taki nie może być dłuższy niż 255 znaków. Typ ten nazywa się "string". Napisy można normalnie czytać procedurą "readln" i wyświetlać "writeln". Często chcemy odczytać długość łańcucha znaków (napisu). Używamy do tego funkcji "length", której podajemy jako argument zmienną napisową (lub napis ujęty w apostrofy). Bardzo przydatna jest także możliwość odwoływania się do konkretnej litery w napisie. Odbywa się to w ten sposób, że po zmiennej napisowej podajemy w nawiasie kwadratowym numer interesującej nas litery. W ten sposób można zarówno zapisać lub odczytać konkretną literę ze zmiennej napisowej. Myślę, że wymienione przeze mnie możliwości najlepiej zilustrować przykładem:
program s1;
var
s: string;
begin
s:='';
s:='Michał';
writeln(s);
readln(s);
writeln(s);
writeln(s[10]);
s[2]:='e';
s:=s+'mmmmm';
writeln(lenght(s));
end.
Na początku napis przyjmuje wartość ''. Takie dwa apostrofy koło siebie oznaczają napis pusty, czyli o długości 0. Następnie napis przyjmuje wartość 'Michał'. Oczywiście apostrofy nie wchodzą w skład napisu, a jedynie mówią komputerowi, gdzie się kończy i zaczyna w kodzie źródłowym. Następnie napis jest pisany na ekranie odczytywany przy użyciu procedury "readln". Po tej procedurze ma on całkiem nową wartość. Jest wtedy znowu wypisywany. Następnie jest wypisywana dziesiąta literka napisu. Potem druga wartość napisu przyjmuje wartość litery 'e'. ostatnia operacja na napisie to doklejenie do jego końca ciągu 'mmmmm'. Jest to ciekawe, gdyż można się w tym celu posłużyć intuicyjnie operatorem "+". Ostatnie zadanie programu to wypisanie długości napisu pobranej z funkcji "length". Powyższy przykład obrazuje zagnieżdzenie funkcji "length" jako argumentu procedury "writeln". Jest to zupełnie poprawne i bardzo użyteczne (kod staje się krótszy, zwięźlejszy i łatwiejszy do zrozumienia, niż gdybyśmy użyli osobnej zmiennej do pamiętania długości napisu i jej wyświetlenia).
Jak już wcześniej wspomniałem, napis w TP nie może być dłuższy niż 255 znaków. Czasami jednak chcemy jeszcze bardziej ograniczyć jego długość. Na przykład na zapamiętanie czyjegoś imienia nie potrzeba aż 255 znaków, wystarczy z powodzeniem 15. Wówczas w deklaracji zmiennej napisowej piszemy nie samo "string" ale "string[15]". Oczywiście 15 to tylko przykładowa liczba. Taki sposób ograniczania długości napisu to oszczędność pamięci - zabieg bardzo ważny!
Zapamiętajmy:
typ znakowy to "char", zmienna tego typu pamięta jeden znak ASCII
typ napisowy to "string", zmienna tego typu przechowuje napis czyli ciąg znaków
funkcje: length, concat, pos, copy
Procedury: delete, insert, str, val