Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi String mit Leerzeichen verursacht Chaos??? (https://www.delphipraxis.net/134467-string-mit-leerzeichen-verursacht-chaos.html)

AlexII 22. Mai 2009 19:38

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;

mkinzler 22. Mai 2009 19:41

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

AlexII 22. Mai 2009 19:42

Re: String mit Leerzeichen verursacht Chaos???
 
Das hatte ich auch vor :-D aber ich gucke mal, vllt beseitige ich das Problem anders.

mkinzler 22. Mai 2009 19:49

Re: String mit Leerzeichen verursacht Chaos???
 
Zitat:

Zitat von AlexII
Das hatte ich auch vor :-D aber ich gucke mal, vllt beseitige ich das Problem anders.

Sollte eigentlich kein großes Problem darstellen

Klaus01 22. Mai 2009 19:49

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:
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

AlexII 22. Mai 2009 19:53

Re: String mit Leerzeichen verursacht Chaos???
 
Wow es klappt, aber wieso wird die List2 in der Schleife freigegeben, ist das richtig so? :gruebel:

Klaus01 22. Mai 2009 19:55

Re: String mit Leerzeichen verursacht Chaos???
 
Zitat:

Zitat von AlexII
Wow es klappt, aber wieso wird die List2 in der Schleife freigegeben, ist das richtig so? :gruebel:

ja, denn explode erstellt eine StringList Instanz und diese wird List2 übergeben.

Grüße
Klaus

AlexII 22. Mai 2009 19:57

Re: String mit Leerzeichen verursacht Chaos???
 
Ah... jah... ok, danke dir :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:08 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz