AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Txt Datei mit mehreren spalte in Listbox einladen...
Thema durchsuchen
Ansicht
Themen-Optionen

Txt Datei mit mehreren spalte in Listbox einladen...

Ein Thema von agm65 · begonnen am 4. Mär 2004 · letzter Beitrag vom 4. Mär 2004
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von agm65
agm65

Registriert seit: 21. Okt 2003
1.194 Beiträge
 
Delphi 2006 Professional
 
#1

Txt Datei mit mehreren spalte in Listbox einladen...

  Alt 4. Mär 2004, 06:19
guten morgen leute....
folgendes problem...ich habe eine text datei die mehrere zeilen und spalten beinhaltet.

bsp:
test test2 test3 test4
peter peter2 peter3 peter4
hanz hanz2 hanz3 hanz4

diese txt datei möchte ich jetzt in eine listbox einladen... (bzw ist eine listbox hierfür überhaupt angebracht?)

die listbox sollte die txt jetzt zeigen wie folgt

spalte1 spalte2 spalte3 spalte4 (und wie mache ich diesen header bei der lb)
-------------------------------
test test2 test3 test4
peter peter2 peter3 peter4
hanz hanz2 hanz3 hanz4


als seperator benutze ich jetzt mal freizeichen aber wenn es einfacher geht mit nem anderen zeichen dann bin ich offen für alles....

wie immer vielen dank für hilfe !!
cu agm65
Miniaturansicht angehängter Grafiken
lb.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von M-O-D
M-O-D

Registriert seit: 21. Feb 2004
Ort: Create(self)
74 Beiträge
 
Delphi 6 Enterprise
 
#2

Re: Txt Datei mit mehreren spalte in Listbox einladen...

  Alt 4. Mär 2004, 06:53
Morschen,

erstmal zum separator der List. Ich würde hier generell ein Semikolon oder ein Komma empfehlen, da es ja auch vorkommen kann, das Du einen String der durch leerzeichen getrennt ist in eine Zelle einlesen willst. Also zB:

Spalte1 | Spalte2 | Spalte3
Zwei Worte | Hallo | Noch was

Wenn Du die Textdatei mit Semikolon erstellen kannst, wäre daher besser. So jetzt erstmal zum verarbeiten. Ich mache das meistens mit 2 Stringlisten, die eine läd die Textdatei, die andere bekommt in Ihre Eigenschaft DelimitedText einfach jede einzelne Zeile aus der 1. Liste übergeben und zerlegt sie somit. Und ich würde es in eine Listview schreiben(Viewstyle vsReport) da eine Listbox dafür nicht sehr geeignet ist!

ungefähr so:
Delphi-Quellcode:
procedure Dateilesen(Sender: TObject);
var
   lst,lst2   : tStringlist;
   i,x,m   : integer;
   item   : TListItem;
begin

   lst      := TStringlist.Create;
   lst2   := TStringlist.Create;

   try
      

           //LV leeren wenn nötig
           LV.Clear;
           LV.Columns.Clear;

          lst.LoadFromFile(dlgOpen.FileName);
           //Trennzeichen festlegen
           lst2.Delimiter   := ';';


           //Spalten in der Listview erzeugen
           for i:=0 to lst.Count -1 do begin
              LV.Columns.Add;

               //Spaltenbezeichnung
               LV.Column[i].Caption := 'Spalte '+IntToStr(i+1);

               //Spaltenbreite frei nach wahl, einfach probieren
               LV.Column[i].Width := length(LV.Column[i].Caption)*14;

           end;

           //jetzt noch die Einträge in die Spalten
           for i:=0 to lst.Count-1 do begin
               //die zu zerlegende Zeile in die 2. Liste übergeben
               //Lst2 zerlegt den Text, jetzt kann man mit lst2[integer] auf die
               //einzelnen strings zugreifen
               lst2.DelimitedText   := lst[i];

               item   := LV.Items.Add;

               with LV do begin
                   //Die erste Spalte der LV füllen
                  item.Caption   := lst2[0];
                   //danach alle restlichen
                   for x:=1 to lst.Count-1 do
                      item.SubItems.Add(lst2[x]);

               end;
               application.ProcessMessages;
           end;

      
   finally
      lst.Free;
       lst2.free;
   end;
end;
Ich lebe zwar über meine Verhältnisse, aber immer noch unter meinem Niveau...
  Mit Zitat antworten Zitat
Benutzerbild von agm65
agm65

Registriert seit: 21. Okt 2003
1.194 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Txt Datei mit mehreren spalte in Listbox einladen...

  Alt 4. Mär 2004, 07:19
danke erstmal sieht schonmal besser aus....also bei
lst2.Delimeter gibt er mir ne fehler meldung undefinierter bezeichner ?
kannste mir da weiterhelfen ?

-----------------

hab grade nochmal alles getestet, scheint als würde es den befehl nicht geben..
  Mit Zitat antworten Zitat
Benutzerbild von M-O-D
M-O-D

Registriert seit: 21. Feb 2004
Ort: Create(self)
74 Beiträge
 
Delphi 6 Enterprise
 
#4

Re: Txt Datei mit mehreren spalte in Listbox einladen...

  Alt 4. Mär 2004, 08:30
Hallo,

es heißt nich lst2.Delimeter sondern lst2.Delimiter! Die Delphi Programmierhilfe sollte es Dir eigentlich richtig schreiben...

Das sollte dann gehn
Ich lebe zwar über meine Verhältnisse, aber immer noch unter meinem Niveau...
  Mit Zitat antworten Zitat
Benutzerbild von agm65
agm65

Registriert seit: 21. Okt 2003
1.194 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Txt Datei mit mehreren spalte in Listbox einladen...

  Alt 4. Mär 2004, 09:22
ja das ist das das problem, die delphi hilfe erkennt nichts von beiden...hab noch eineiges mehr versucht....es scheint eine keine Delimited funktion zu geben ? erbitte hilfe ! danke !

-------------------------------------

Noch ne idee ? vielleicht habe ich die funktion nicht richtig angegeben ? oder vielleicht fehlt nen uses ?
  Mit Zitat antworten Zitat
Benutzerbild von agm65
agm65

Registriert seit: 21. Okt 2003
1.194 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Txt Datei mit mehreren spalte in Listbox einladen...

  Alt 4. Mär 2004, 15:51
immer noch gleiches problem !! vielleicht noch einer ne idee ?
  Mit Zitat antworten Zitat
Benutzerbild von APP
APP

Registriert seit: 24. Feb 2003
Ort: Graz (A)
705 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Txt Datei mit mehreren spalte in Listbox einladen...

  Alt 4. Mär 2004, 16:18
Zitat von M-O-D:
... Die Delphi Programmierhilfe sollte es Dir eigentlich richtig schreiben...
Delphi 5 hat diese Stringlisten-Eigenschaft noch nicht
Armin P. Pressler

BEGIN
...real programmers are using C/C++ - smart developers Delphi;
END;
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Txt Datei mit mehreren spalte in Listbox einladen...

  Alt 4. Mär 2004, 18:55
Dann kann man noch explodeexplode benutzen zum Zerlegen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von agm65
agm65

Registriert seit: 21. Okt 2003
1.194 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Txt Datei mit mehreren spalte in Listbox einladen...

  Alt 4. Mär 2004, 19:06
habs mir mal angeschaut....das läd ja nicht den string in den listview ....und das ist mein ziel.....das kann doch nicht so schwer sein ...gibts keine komponente wo man das direkt angeben kann...

loadfromfile('test.txt', ';', index[i]+ 1

oder sowas ??
  Mit Zitat antworten Zitat
Benutzerbild von M-O-D
M-O-D

Registriert seit: 21. Feb 2004
Ort: Create(self)
74 Beiträge
 
Delphi 6 Enterprise
 
#10

Re: Txt Datei mit mehreren spalte in Listbox einladen...

  Alt 4. Mär 2004, 19:24
Hallo nochmal,

das D5 das noch nicht kennt wusst ich nich(habe mit D6 angefangen, aber ich habe mal selber ne Funktion geschrieben, die im Prinzip das selbe macht, die funktioniert super:

Delphi-Quellcode:
function GetStrings(Zeile, TZ: string; Liste: TStringlist): TStringlist;
//zerlegt einen String und gibt ihn in einer Liste wieder aus
var
   i   : integer;
   p   : integer;//Position des Trennzeichens
   Textteil : string;
begin

   TZ   := Trim(TZ);

   //löschen der Liste
   Liste.Clear;

   p   := pos(TZ,Zeile);

   //Solange Position des Trennzeichens größer 0
   while p > 0 do begin

      //Texteil = alles bis vor Trennzeichen
       Textteil   := copy(Zeile,0,p-1);

       //Anführungszeichen am Anfang und am Ende Entfernen
       if    Textteil <> 'then begin

          if (Textteil[1] ='"')
           and (Textteil[Length(Textteil)]='"')then begin
              Textteil[1]:=' ';
               Textteil[length(Textteil)]:=' ';
           end;

       end;
       //Einfügen des Textteiles in die Liste
       Liste.Add(Trim(Textteil));

       //löschen des Teiles bis zum ersten Trennzeichen
       Zeile   := copy(Zeile,p+1,length(Zeile));

       p   := pos(TZ, Zeile);

   end;
       //Letztes Element einfügen
          Liste.Add(Trim(Zeile));

end;
Beim Aufrufen übergibst Du der Funktion einfach ne leere Liste, welche dann mit den einzelnen Strings aus der Zeile gefüllt wird.
Delphi-Quellcode:

GetStrings(Kommatext, Trennzeichen, lst);
Danach kannst Du dann auf die Zeilen mit lst[integer] zugreifen.
Damit sollte es hinhauen...

Schönen Abend
Ich lebe zwar über meine Verhältnisse, aber immer noch unter meinem Niveau...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:18 Uhr.
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