Einzelnen Beitrag anzeigen

Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Wörter aus Memo extrahieren

  Alt 7. Jun 2007, 07:49
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"
  Mit Zitat antworten Zitat