T E X T Textverarbeitung © Herbert Paukert - von Herbert Paukert
T E X T Textverarbeitung © Herbert Paukert - von Herbert Paukert
T E X T Textverarbeitung © Herbert Paukert - von Herbert Paukert
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
<strong>Herbert</strong> <strong>Paukert</strong>: <strong>Textverarbeitung</strong> in DELPHI 3<br />
Die gestellte Aufgabe wird dadurch gelöst, dass man den Quellstring S schrittweise durchläuft und<br />
jedes seiner Zeichen mit dem Zeichen C vergleicht. Fällt der Vergleich wahr aus und stimmt im<br />
Quellstring das nachfolgende Zeichen auch mit C überein, dann muss es gelöscht werden. Dazu<br />
wird die Routine DELETE verwendet. Das Stringende wird mit einem Spezialzeichen markiert.<br />
function RemoveMultipleChar(S: String; C: Char): String;<br />
{ Entfernt mehrfache Zeichen C aus einem String S }<br />
const Marker : Char = #1;<br />
var I : Integer;<br />
begin<br />
S := S + Marker;<br />
I := 0;<br />
repeat<br />
I := I + 1;<br />
if (S[I] = C) and (S[I+1] = S[I]) then begin<br />
Delete(S,I,1);<br />
I := I - 1;<br />
end;<br />
until S[I] = Marker;<br />
Result := Copy(S,1,Length(S)-1);<br />
end;<br />
[03] Suchen <strong>von</strong> Texten<br />
Ein Quelltext S soll erstens auf das Vorkommen eines Suchstrings A ab der Startposition Start<br />
durchsucht und die Position P der Fundstelle ermittelt werden. Der Parameter Flag gibt an, ob die<br />
Suche unabhängig <strong>von</strong> Groß-/Kleinschrift (Case-insensitiv, Flag = 0) oder da<strong>von</strong> abhängig (Casesensitiv,<br />
Flag = 1) erfolgen soll. Die entsprechende Position P liefert die Systemroutine POS.<br />
Wenn dabei 0 herauskommt, dann wurde nichts gefunden.<br />
In der zweiten Routine wird die Anzahl der Fundstellen des Suchstrings A im ganzen Quelltext S<br />
ermittelt. Dabei wird in einer Wiederholungsschleife der Quelltext S so lange durchlaufen, bis der<br />
Suchstring A nicht mehr gefunden wird.<br />
function SearchFirst(S,A: String; Start,Flag: Integer): Integer;<br />
{ Sucht im Text S den Suchstring A ab Start und liefert die Fundposition }<br />
var P : Integer;<br />
begin<br />
S := Copy(S,Start+1,Length(S));<br />
if Flag = 0 then begin<br />
S := UpperCase(S);<br />
A := UpperCase(A);<br />
end;<br />
P := Pos(A,S);<br />
if P = 0 then Result := 0<br />
else Result := Start + P;<br />
end;<br />
function SearchAll(S,A: String; Flag: Integer): Integer;<br />
{ String A im ganzen Text S suchen und die Anzahl der Fundstellen liefern }<br />
var P,N: Integer;<br />
begin<br />
P := 0;<br />
N := 0;<br />
repeat<br />
P := SearchFirst(S,A,P,Flag);<br />
if (P > 0) then begin<br />
N := N + 1;<br />
P := P + Length(A);<br />
end;<br />
until (P = 0);<br />
Result := N;<br />
end;