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