Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: String mit Hilfe einer Schleife zerteilen und auslesen

  Alt 3. Aug 2007, 08:04
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
  Mit Zitat antworten Zitat