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