03.11.2013 Aufrufe

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

MEHR ANZEIGEN
WENIGER ANZEIGEN

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 4<br />

[04] Suchen und Ersetzen <strong>von</strong> Texten<br />

Ein Quellstring S soll erstens auf das Vorkommen eines Suchstrings A ab der Startposition Start<br />

durchsucht und dieser an der ersten Fundstelle durch den Ersatzstring B ersetzt werden. Die<br />

Position der Fundstelle wird zurückgeliefert. Der Parameter Flag gibt an, ob die Suche unabhängig<br />

<strong>von</strong> Groß-/Kleinschrift (Case-insensitiv, Flag = 0) oder da<strong>von</strong> abhängig (Case-sensitiv, Flag = 1)<br />

erfolgen soll. Die entsprechende Position liefert die Systemroutine POS. Wenn dabei 0 herauskommt,<br />

dann wurde nichts gefunden.<br />

In der letzten Routine wird die Anzahl der Fundstellen bzw. Ersetzungen im ganzen Quelltext<br />

ermittelt. Es wird in einer Wiederholungsschleife der Quelltext S so lange durchlaufen, bis der<br />

Suchstring A nicht mehr gefunden wird. An jeder Fundstelle wird zuerst der Suchstring A gelöscht<br />

und dann der Ersatzstring B eingesetzt. Dabei werden die Systemroutinen DELETE und INSERT<br />

benutzt.<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 ReplaceFirst(var S: String; A,B:String; Start,Flag: Integer): Integer;<br />

{ String A im Text S suchen und durch String B ersetzen }<br />

{ und die erste Fundstelle ab Position Start liefern }<br />

var P : Integer;<br />

begin<br />

P := SearchFirst(S,A,P,Flag);<br />

if P > 0 then begin<br />

Delete(S,P,Length(A));<br />

Insert(B,S,P);<br />

end;<br />

Result := P;<br />

end;<br />

function ReplaceAll(var S: String; A,B:String; Flag: Integer): Integer;<br />

{ String A im ganzen Text S suchen und durch String B ersetzen }<br />

{ und die Anzahl N der Ersetzungen 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 />

Delete(S,P,Length(A));<br />

Insert(B,S,P);<br />

P := P + Length(B);<br />

end;<br />

until (P = 0);<br />

Result := N;<br />

end;

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!