![]() |
Txt Datei mit mehreren spalte in Listbox einladen...
Liste der Anhänge anzeigen (Anzahl: 1)
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 :gruebel: |
Re: Txt Datei mit mehreren spalte in Listbox einladen...
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; |
Re: Txt Datei mit mehreren spalte in Listbox einladen...
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.. |
Re: Txt Datei mit mehreren spalte in Listbox einladen...
Hallo,
es heißt nich lst2.Delimeter sondern lst2.Delimiter! Die Delphi Programmierhilfe sollte es Dir eigentlich richtig schreiben... Das sollte dann gehn :-D |
Re: Txt Datei mit mehreren spalte in Listbox einladen...
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 ? |
Re: Txt Datei mit mehreren spalte in Listbox einladen...
immer noch gleiches problem !! vielleicht noch einer ne idee ?
|
Re: Txt Datei mit mehreren spalte in Listbox einladen...
Zitat:
|
Re: Txt Datei mit mehreren spalte in Listbox einladen...
Dann kann man noch
![]() |
Re: Txt Datei mit mehreren spalte in Listbox einladen...
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 ?? |
Re: Txt Datei mit mehreren spalte in Listbox einladen...
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:
Beim Aufrufen übergibst Du der Funktion einfach ne leere Liste, welche dann mit den einzelnen Strings aus der Zeile gefüllt wird.
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;
Delphi-Quellcode:
Danach kannst Du dann auf die Zeilen mit lst[integer] zugreifen.GetStrings(Kommatext, Trennzeichen, lst); Damit sollte es hinhauen... Schönen Abend |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:59 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 by Thomas Breitkreuz