String on massiiv, kus esimesel kohal on stringi pikkus (thtede arv temas) 
ning massiivi jrgmised elemendid on  stringis olevad thed.
Seega kujutub tekst Tere! tbis Tekst jrgmiselt :

koht     massiivis: 0 1 2 3 4 5 
kohal olev vrtus: 5 T e r e !


Tekstidega ttamise hlbustamiseks on keeles Turbo Pascal defineeritud vastav tp.
Stringi kirjeldamisel saab ette anda maksimaalpikkuse, milleks vaikimisi on 255 smbolit (paneme thele, et massiivi esimeses elemendis sisaldub stringi pikkus). Stringi saab vrtustada omistamislausega. Stringkonstant on
apostroofidega mbritsetud smbolijada (milles sisalduv apostroof tuleb kirjutada kahekordselt). Stringi elemente (smboleid)
saab kasutada nagu massiivi elemente. Niteks programmilik 

a: string[80];
a := 'Tere';
write(a[3]); 

vljastab ekraanile the r.
Stringide puhul on mratud ka vrdlusoperaatorid: =, <>, <, >, <= ja >=. Vrdlemist teostatakse leksikograafiliselt,
s.t. 

     stringe vrreldakse smbolhaaval alates esimesest smbolist 
     kui vrdlemisel leitakse erinevad smbolid, antakse vrdlemise tulemuseks nende smbolite vrdlemise tulemus 
     kui ks string on teisest pikem ja lhema stringi smbolid langevad kokku pikema stringi vastavate smbolitega, siis
     loetakse pikem string suuremaks kui lhem string 
     stringid on vrdsed siis ja ainult siis, kui nad on hepikkused ja smbolhaaval vrdsed. 

Seega on tesed jrgmist tpi avaldised: 

`abc' = `abc'
`a1' < `aa'
`Aaa' < `aaa'
`Aaa' < `a'
`aaa' < `aaaa' 

Stringitbiga ttamiseks on keeles Turbo Pascal kirjeldatud mitmeid 
kasulikke funktsioone. Vaatleme mningaid neist lhemalt.

function Length(S: String): Integer; 

Funktsiooni Length vrtuseks on stringi S kesolev pikkus 
(mitte maksimaalpikkus).


Nide:

var
  S: String;
begin
  Readln (S);
  Writeln('"', S, '"');
  Writeln('length = ', Length(S));
end. 

function Concat(s1 [, s2,..., sn]: String): String;

Funktsiooni Concat vrtuseks on string, mis on saadud kigi 
parameetrite s1, s2, ... sn konkatenatsiooniga. Tulemusstringi
vetakse limalt 255 smbolit. Sama tulemuse saab muide 
ka stringidele liitmistehet rakendades, seega on kaks jrgnevat
avaldist samavrsed :

Concat(s1, s2, s3)
s1+s2+s3 

Nide:

var
  S: String;
begin
  S := Concat('ABC', 'DEF'); { 'ABCDE' }
end. 

procedure Delete(var S: String; Index: Integer; Count:Integer);

Protseduur Delete kustutab Count smbolit stringist S alates 
smbolist indeksiga Index. Kui Index on suurem kui stringi S
pikkus, siis ei kustutata htegi smbolit. Kui Index+Count-1 
on suurem kui stringi S pikkus, siis kustutatakse stringi S lpus
olevad smbolid alates positsioonist Index. 

Nide:

var
  s: string;
begin
  s := 'Honest Abe Lincoln';
  Delete(s,8,4);
  Writeln(s); { 'Honest Lincoln' }
end. 


function Copy(S: String; Index: Integer; Count: Integer):

Funktsiooni Copy vrtuseks on string pikkusega Count smbolit alates 
positsioonist Index stringis S. Kui Index on suurem
kui stringi pikkus, on tulemuseks thi string. Kui Index+Count-1 on 
suurem stringi pikkusest, on funktsiooni vrtuseks string,
mis sisaldab kiki stringi S smboleid alates positsioonist Index. 

Nide:

var S: String;
begin
  S := 'ABCDEF';
  S := Copy(S, 2, 3); { 'BCD' }
end. 

procedure Insert(Source: String; var S: String; Index:
Integer);

Protseduur Insert lisab stringi Source stringi S alates positsioonist 
Index. Tulemusstringi ei veta le 255 smboli. 

Nide:

var
  S: String;
begin
  S := 'Honest Lincoln';
  Insert('Abe ', S, 8); { 'Honest Abe Lincoln' }
end. 

function Pos(Substr: String; S: String): Byte;

Funktsioon Pos otsib alamstringi Substr stringist S. Kui alamstringi 
ei leidu stringis S, siis saab funktsiooni vrtuseks 0,
vastasel korral tisarv, mis nitab, milliselt positsioonilt algab 
(esimene) alamstring stringis S. 

Nide:

var S: String;
begin
  S := ' 123.5';
  { thikud asendatakse nullidega }
  while Pos(' ', S) > 0 do
    S[Pos(' ', S)] := '0';
end. 


procedure Val(S; var V; var Code: Integer);

  S   string, milles olev smbolite jada moodustab (mrgiga) arvu
  V   tisarvu vi reaalarvu tpi muutuja 

Protseduur Val teisendab stringi S arvuks, mis omistatakse muutujale V. 
Kui teisendamine nnestus, antakse muutuja Code
vrtuseks 0, vastasel korral selle smboli indeks, mille teisendamisel 
tekkis viga.

Nide:

var I, Code: Integer;
begin
  { string saadakse programmi ksurealt }
  Val(ParamStr(1), I, Code);
  if Code <> 0 then { Viga teisendamisel }
    Writeln('Viga tekkis teisendusel positsioonis: ', Code)
  else
    Writeln('Value = ', I);
  Readln;
end. 

procedure Str(X[: Width[: Decimals]]; var S:string);

Protseduur Str teisendab arvu X stringiks S samade reeglite jrgi nagu ekraanile vljastamisel protseduuri write abil. 

Nide:

{ Teisendab tisarvu stringiks }
function IntToStr(I: Longint): String;
var
  S: string[11];
begin
  Str(I, S);
  IntToStr := S;
end;

begin
  Writeln(IntToStr(-5322));
  Readln;
end.
