Herzlich willkommen in der Delphi-PRAXiS, cRayZo.
Du könntest die unterschiedlichen Trennzeichen auch dadurch behandeln, dass du deinen String als Liste natürlicher Zahlen betrachtest, die durch nicht-numerische Zeichen voneinander getrennt sind. Die Funktion ExtractNumbers() liefert dir die Zahlen in einem dynamischen Array zurück. Ein Umspeichern in andere Variablen ist eigentlich nicht unbedingt notwendig, da du auf die erste Zahl mit numbers[0] zugreifen kannst:
Delphi-Quellcode:
uses
Types; // TIntegerDynArray
procedure ExtractNumbers(const s: string; var ida: TIntegerDynArray);
var
i, n: Integer;
isNum: Boolean;
begin
SetLength(ida, 0);
n := 0;
isNum := False;
for i := 1 to Succ(Length(s)) do
begin
if (i > Length(s)) and not isNum
then Break
else isNum := s[i] in ['0'..'9'];
if isNum then
n := n * 10 + Ord(s[i]) - Ord('0')
else
begin
SetLength(ida, Succ(Length(ida)));
ida[High(ida)] := n;
n := 0;
end;
end;
end;
procedure TDemoForm.ButtonClick(Sender: TObject);
var
numbers: TIntegerDynArray;
i: Integer;
s: TStrings;
begin
ExtractNumbers(Edit1.Text, numbers);
s := TStringList.Create;
for i := Low(numbers) to High(numbers) do
s.Add(IntToStr(numbers[i]));
ShowMessage(s.Text);
s.Free;
end;
Freundliche Grüße vom marabu