Einzelnen Beitrag anzeigen

xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#2

Re: Parse String - Satz splitten Problem

  Alt 26. Aug 2006, 10:20
Hallo,

wie wäre es hiermit:
Delphi-Quellcode:
function ParseString(const S: String): Boolean;
const
  Letters: set of Char = ['0'..'9', 'A'..'Z', 'a'..'z'];

var
  H: String;
  I: Integer;
begin
  Result := False;

  if S = 'then
    Exit;

  H := '';

  for I := 1 to Length(s) do
  begin
    if S[I] in Letters then
      H := H + S[I] // Wort zusammenbauen
    else
      if H <> 'then // Haben wir ein Wort?
      begin
        ToList(H); // Hinzufügen
        H := ''; // aufräumen
      end;
  end;

  if H <> 'then // Ist noch ein Wort übrig?
    ToList(H);
end;
Ich habe aus dem var ein const gemacht, sowas wir Trim solltest Du am Besten außerhalb der Funktion machen.
Übrigens setzt Du Result zwar am Anfang auf False, aber niemals auf True.

//Edit:
Einem String mit + immer wieder ein einzelnes Zeichen hinzuzufügen ist nicht sehr performant. Diese Lösung ist wahrscheinlich besser:
Delphi-Quellcode:
function ParseString2(const S: String): Boolean;
const
  Letters: set of Char =['0'..'9','A'..'Z','a'..'z'];

var
  L: Integer;
  I: Integer;
  Start: Integer;
begin
  Result := False;

  if S = 'then
    Exit;

  L := Length(S);

  Start := -1;
  for I := 1 to L do
  begin
    if S[I] in Letters then
    begin
      if Start = -1 then
        Start := I;
    end else
      if Start <> -1 then
      begin
        ToList(Copy(S, Start, I - Start));
        Start := -1;
      end;
  end;

  if Start <> -1 then
    ToList(Copy(S, Start, MaxInt));
end;
Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat