Unit AltalanosSzoveg_Unit;
{$H+ -- AnsiString : a nagyon hosszú stringekhez; e direktíva a használó programban is kell!!!}
(*
Szöveg-típusok:
Szó=Sorozat(Karakter) [szó:Szó → (k∈szó → k∉VégJelek)]
Sor=Sorozat(Szó∪{SzóElválasztóJel,SorVégJel}) [szavak között SzóElválasztóJelek vannak]
Lap=Sorozat(Sor∪{LapVégJel}) [sorok között SorElválasztóJelek vannak]
Dokumentum=Sorozat(Lap∪{DokumentumVégJel}) [lapok között LapElválasztóJelek vannak]
KepLap=Tömb(1..maxSDb+1:Szöveg) vagy Sor(maxSorDb+1,Szöveg)
Konstansok
SzóElválasztóJel:Szöveg [' ']
SorVégJel:Szöveg [Win→CrLf;Unix→Lf;Mac→Cr]
LapVégJel:Szöveg [Pg]
DokumentumVégJel:Szöveg [Ctrl+Z]
VégJelek:Halmaz(Szöveg) [SzóElválasztóJel,SorVégJel,LapVégJel,DokumentumVégJel]
Függvény
ElsőSzó(Konstans sor:Sor):Szó
Eljárás
SorElejéről(Változó sor:Sor, Változó szó:Szó)
SorVégére(Változó sor:Sor, Konstans szó:Szó) [a szó a sor mögé kerül szorosan, elválasztójel nélkül]
SorVégére(Változó sor:Sor, Konstans szó,eszó:Szó) [eszó=szóelválasztójel(ek)]
Függvény
ElsőSor(Konstans lap:Lap):Sor
Eljárás
LapElejéről(Változó lap:Lap, Változó sor:Sor)
LapVégére(Változó lap:Lap, Konstans sor:Sor)
Függvény
ElsőLap(Konstans doku:Dokumentum):Lap
Eljárás
DokumentumElejéről(Változó doku:Dokumentum, Változó lap:Lap)
DokumentumVégére(Változó doku:Dokumentum, Konstans lap:Lap)
BalrólLevág(Változó sor:Sor) [balról "szóköztelenít"]
JobbrólLevág(Változó sor:Sor) [jobbról "szóköztelenít"]
Függvény
Tömörít(Konstans s:Szöveg):Szöveg ["szóköztelenít"]
Eljárás
ÜresKépLap(Változó klap:TKépLap)
Függvény
KépLapHossz(Konstans klap:TKépLap):Egész
Eljárás
KépLapElejéről(Változó klap:KépLap, Változó sor:Sor)
KépLapVégére(Változó klap:KépLap, Konstans sor:Sor)
Kódolás: IBM852
*)
Interface
Const
SzoElvalasztoJel=' ';
SorVegJel=#10#13;
LapVegJel=#12;
DokumentumVegJel=#26;
VegJelek:Set of Char=[SzoElvalasztoJel,#10,#13,LapVegJel,DokumentumVegJel];
maxSDb=20;
maxSHossz=77;
Type
TSzo=String;
TSor=String;
TLap=String;
TDokumentum=String;
TKepLap=Record sdb:Byte; sorok:Array [1..maxSDb+1] of String; End;
Function ElsoSzo(Const sor:TSor):TSzo;
Procedure SorElejerol(Var sor:TSor; Var szo:TSzo);
Procedure SorElejerol(Var sor:TSor; Var szo,eszo:TSzo);
Procedure SorVegere(Var sor:TSor; Const szo:TSzo);
Procedure SorVegere(Var sor:TSor; Const szo,eszo:TSzo);
Function ElsoSor(Const lap:TLap):TSor;
Procedure LapElejerol(Var lap:TLap; Var sor:TSor);
Procedure LapVegere(Var lap:TLap; Const sor:TSor);
Function ElsoLap(Const doku:TDokumentum):TLap;
Procedure DokumentumElejerol(Var doku:TDokumentum; Var lap:TLap);
Procedure DokumentumVegere(Var doku:TDokumentum; Const lap:TLap);
Procedure BalrolLevag(Var sor:TSor);
Procedure JobbrolLevag(Var sor:TSor);
Function Tomorit(Const s:String):String;
Procedure UresKepLap(Var klap:TKepLap);
Function KepLapHossz(Const klap:TKepLap):Byte;
Procedure KepLapElejerol(Var klap:TKepLap; Var sor:TSor);
Procedure KepLapVegere(Var klap:TKepLap; Const sor:TSor);