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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!