![]() |
Re: String mit Leerzeichen verursacht Chaos???
Ich hab das Problem wo anders gefunden, die Strings werden doch richtig und mit Leerzeichen gespeichert, geladen werden sie falsch und ich dachte sie wurden falsch abgespeichert, verzeiht. Hier werden die Strings mit den Leerzeichen durcheinander gebracht:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var i: Integer; List : TStringList; List2: TStringList; begin List:=TStringList.Create; List2:=TStringList.Create; List2.Delimiter:='='; try List.LoadFromFile(ExtractFilePath(ParamStr(0)) + '\Datei.txt'); for i:=0 to List.Count-1 do begin List2.DelimitedText:=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]); end; finally List.Free; List2.Free; end; end; |
Re: String mit Leerzeichen verursacht Chaos???
In diesem Fall könntest du die Leerzeichen durch ein anderes Zeichen (welches im text natürlich nicht vorkommen darf) ersetzen. Später durch die Einträge durchgehen und zurückersetzen
|
Re: String mit Leerzeichen verursacht Chaos???
Das hatte ich auch vor :-D aber ich gucke mal, vllt beseitige ich das Problem anders.
|
Re: String mit Leerzeichen verursacht Chaos???
Zitat:
|
Re: String mit Leerzeichen verursacht Chaos???
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:
Grüße
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; Klaus |
Re: String mit Leerzeichen verursacht Chaos???
Wow es klappt, aber wieso wird die List2 in der Schleife freigegeben, ist das richtig so? :gruebel:
|
Re: String mit Leerzeichen verursacht Chaos???
Zitat:
Grüße Klaus |
Re: String mit Leerzeichen verursacht Chaos???
Ah... jah... ok, danke dir :thumb:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz