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);