Zitat von
Gecko:
... suche einen Algorithumus, der mir aus einem Memo alle Wörter einzeln herausholt, und das möglichst effizient.
...
Hai Gecko,
als erstes würde ich definieren was ein Wort ist
Dafür würde ich mir eine Liste mit den Trennzeichen erstellen und dann den Text durchlaufen und dabei die Zeichen zwichen zwei Trennzeichen rauskopieren.
Hier einmal ein Ansatz:
Delphi-Quellcode:
procedure GetWords(const s: string; sl: TStrings);
const
Delimiters: set of Char = [' ', ',', #10, #13, '!', '?'];
var
start: Integer;
ende: Integer;
ndx: Integer;
wort: string;
begin
start := 0;
ende := 0;
for ndx := 1 to Length(s) do
begin
if s[ndx] in Delimiters then
begin
ende := ndx;
end
else
begin
if (start = 0) then
start := ndx;
end;
if (start > 0) and (ende > 0) then
begin
wort := copy(s, start, ende - start);
sl.Add(wort);
start := 0;
ende := 0;
end;
end;
end;
procedure TDemo_Form.Button1Click(Sender: TObject);
begin
GetWords(Memo1.Text, listbox1.Items);
end;
Du musst natürlich noch einige Sonderfälle berücksichtigen. Zum Beispiel zwei Trennzeichen hintereinander usw.
[Edit]Während ich mir die Flossen wund tippe schreibt Bernhard das in zwei Sätzen
Stephan B.
"Lasst den Gänsen ihre Füßchen"