23.11.2013 Aufrufe

DELPHI 05 Sortier- und Suchalgorithmen © Herbert Paukert

DELPHI 05 Sortier- und Suchalgorithmen © Herbert Paukert

DELPHI 05 Sortier- und Suchalgorithmen © Herbert Paukert

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

<strong>Herbert</strong> <strong>Paukert</strong>: Programmieren in <strong>DELPHI</strong> – Gr<strong>und</strong>kurs, Teil 5 104<br />

Die gestellte Aufgabe wird dadurch gelöst, dass man den Quellstring S schrittweise durchläuft <strong>und</strong><br />

jedes seiner Zeichen mit dem Zeichen C vergleicht. Fällt der Vergleich wahr aus <strong>und</strong> stimmt im Quellstring<br />

das nachfolgende Zeichen auch mit C überein, dann muss es gelöscht werden. Dazu wird die<br />

Systemroutine DELETE verwendet. Die Stringlänge wird mit der Systemroutine LENGTH abgefragt.<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 />

end;<br />

[6.02] Suchen von Textteilen<br />

Ein Quellstring S soll auf das Vorkommen eines Suchstrings A durchsucht werden <strong>und</strong> die Anzahl der<br />

F<strong>und</strong>stellen soll ermittelt werden. Dazu muss zuerst im Quellstring S das erste Vorkommen des Suchstrings<br />

A gesucht werden. Die entsprechende Position liefert die Systemroutine POS. Dann wird an<br />

dieser Position im Quellstring S der Suchstring A gelöscht. Dieses Verfahren wird in einer Schleife so<br />

lange wiederholt, bis der Suchstring im Quellstring nicht mehr vorkommt. Bei jeder F<strong>und</strong>stelle wird<br />

ein Zähler um Eins erhöht. Die Suche soll unabhängig von Großschrift <strong>und</strong> Kleinschrift erfolgen<br />

(case-insensitiv). Das Ganze erfolgt natürlich nicht mit den originalen Zeichenketten S, A sondern mit<br />

lokalen Kopien S1, A1 davon.<br />

function SearchString(var S: String; A: String): Integer;<br />

{ Sucht im Text S den Suchstring A <strong>und</strong> liefert die Anzahl der F<strong>und</strong>stellen. }<br />

var S1,A1 : String;<br />

L,P,N : Integer;<br />

begin<br />

S1 := UpperCase(S);<br />

A1 := UpperCase(A);<br />

L := Length(A1);<br />

N := 0;<br />

repeat<br />

P := Pos(A1,S1);<br />

if (P > 0) then begin<br />

N := N + 1;<br />

Delete(S1,P,L);<br />

end;<br />

until (P = 0);<br />

Result := N;<br />

end;<br />

[6.03] Suchen <strong>und</strong> Ersetzen<br />

Ein Quellstring S soll auf das Vorkommen eines Suchstrings A durchsucht <strong>und</strong> dieser an allen F<strong>und</strong>stellen<br />

durch den Ersatzstring B ersetzt werden. Zusätzlich wird die Anzahl der F<strong>und</strong>stellen ermittelt.<br />

Suchen <strong>und</strong> Ersetzen soll unabhängig von Groß- oder Kleinschrift erfolgen (case-insensitiv). Ein<br />

Problem kann sich dann ergeben, wenn der Suchstring A ein Teil des Ersatzstrings B ist.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!