Einzelnen Beitrag anzeigen

Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#25

Re: String mit Leerzeichen verursacht Chaos???

  Alt 22. Mai 2009, 20:49
Hallo,

ich hatte mal für einen anderen Thread das explode
so umgebaut das es eine StringList zurückgibt.

Delphi-Quellcode:
// Explode trennt S in die durch Separator getrennten Elemente auf. Wenn Limit
// > 0 ist, so werden max. Limit Elemente getrennt, wobei im letzen Element
// die Restzeichenkette steht.

function Explode(const Separator, S: string; Limit: Integer = 0): TStringList;
var
  SepLen: Integer;
  F, P: PChar;
  Index: Integer;
begin
  result := TStringList.Create;
  if (S = '') or (Limit < 0) then Exit;
  if Separator = 'then
  begin
    Result.add(S);
    Exit;
  end;
  SepLen := Length(Separator);

  Index := 0;
  P := PChar(S);
  while P^ <> #0 do
  begin
    F := P;
    P := AnsiStrPos(P, PChar(Separator));
    if (P = nil) or ((Limit > 0) and (Index = Limit - 1)) then
      P := StrEnd(F);
    result.Add(copy(AnsiString(F),0,P-F));
    inc(index,1);
    if P^ <> #0 then Inc(P, SepLen);
  end;

end;

Damit würde Dein Code dann so ausschauen:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var i: Integer;
    List : TStringList;
    List2: TStringList;
begin
  List:=TStringList.Create;
  try
    List.LoadFromFile(ExtractFilePath(ParamStr(0)) + '\Datei.txt');
    for i:=0 to List.Count-1 do
      begin
        List2:=explode('=',List[i]);

        ListBox1.Items.Insert(i, List2[1]);
        ListBox2.Items.Insert(i, List2[2]);
        ListBox3.Items.Insert(i, List2[3]);
        ListBox4.Items.Insert(i, List2[4]);
        List2.free;
      end;
  finally
    List.Free;
  
  end;
end;
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat