Delphi-PRAXiS

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 Textdatei bis zum ersten Komma in ListBox laden (https://www.delphipraxis.net/68283-textdatei-bis-zum-ersten-komma-listbox-laden.html)

r4in 27. Apr 2006 12:14


Textdatei bis zum ersten Komma in ListBox laden
 
Hallo Leute,

ich bin gaaanz neu in Delphi und habe ne warscheinlich lächerliche Frage.
Ich möchte den Inhalt einer Textdatei in eine Listbox laden, jedoch pro Zeile der Textdatei
nur bis zum ersten Komma. Also pro Zeile steht in meiner *.txt
"Artikel, Preis,EKP"
usw... (ohne die " "). Jetzt möchte ich in die Listbox jeweis immer nur "Artikel" geladen haben,
also jede Zeile runter aber nur bis zum ersten Komma.

Wie stell ich das am geschickstesten an?

danke für eure Hilfe =)

s-off 27. Apr 2006 12:28

Re: Textdatei bis zum ersten Komma in ListBox laden
 
Hallo,

Delphi-Quellcode:
//hiermit zerlegst du einen übergebenen string in seine einzelteile (getrennt durch (hier:) komma) und bekommst einen
//bestimmten teil zurück
function TForm1.ParseString(sTrenner, sString: string; iCount: Integer): string;
var
   i: Integer;
   sErgebnis: string;
begin
   Result := '';
   if Length(sString) > 0 then begin
      if sString[Length(sString)] <> sTrenner then begin
         sString := sString + sTrenner;
      end;
      for i := 1 to iCount do begin
         sErgebnis := Copy(sString, 0, Pos(LowerCase(sTrenner), LowerCase(sString)) - 1);
         sString := Copy(sString, Pos(LowerCase(sTrenner), LowerCase(sString)) + 1, Length(sString));
      end;
      Result := sErgebnis;
   end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
   slTemp: TStringlist;
   i: Integer;
begin
   slTemp := TStringlist.Create;
   try
      slTemp.LoadFromFile('C:\Download\textdatei.txt');
      for i := 1 to slTemp.Count - 1 do begin //from 1 cause no header
         ListBox1.Items.Add(ParseString(',', slTemp.Strings[i], 1)); //first item
      end;
   finally
      FreeAndNil(slTemp);
   end;
end;

r4in 27. Apr 2006 12:58

Re: Textdatei bis zum ersten Komma in ListBox laden
 
Und angenommen, ich mächte nur jede zweite Zeile in die ListBox1 laden?
Das müsste doch mit einer Zeile Code machtbar sein?

Delphi-Quellcode:

procedure TForm1.Button4Click(Sender: TObject);
var sl: TStringList;
    zeilennr: integer;
begin
  OpenDialog1.Execute;
  Edit3.Text:= Opendialog1.FileName;
  sl:=TStringList.Create;

 try
    sl.LoadFromFile(Edit3.Text); //Datei in Stringliste laden
    for zeilennr:=0 to sl.Count-1 do begin //Schleife über alle Zeilen, Zählung
                                   

end;
  finally
    sl.free; //Objekt wieder freigeben


ListBox1.Items.LoadFromFile(Edit3.Text);

Kann das jemand vervollständigen? Also dass ich praktisch nur ungerade Zeilen importieren (Zeile 1, 3, 5, 7....)

Klaus01 27. Apr 2006 13:15

Re: Textdatei bis zum ersten Komma in ListBox laden
 
Delphi-Quellcode:
procedure TForm1.Button4Click(Sender: TObject);
var
  sl: TStringList;
  dataFile : TextFile;
  s : String;
  odd : Boolean;

begin

  sl:=TStringList.Create;

  OpenDialog1.Execute;
  Edit3.Text:= Opendialog1.FileName;

  AssignFile(dataFile,OpenDialog1.FileName);
  {$I-}
  Reset(dataFile);
  {$I+}
  odd:=true;
  if ioresult = 0 then
    begin
      While not eof(dataFile) DO
        begin
          ReadLn(dataFile,s);
          if odd then
            begin
              s:=copy(s,1,pos(s,',')-1);
              sl.add(s);
            end;

          odd:= not odd;

        end; //while
      end; // if ioresult

  CloseFile(dataFile);
  // sl freigeben, wenn sie nit mehr benutzt wird

end;
ungetestet

Grüße
Klaus

[edit] odd := not odd versetzt [/edit]


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:47 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