![]() |
Anfänger braucht Hilfe
Hallo Zusammen,
ich habe gestern folgendes Problem ins Forum gestellt. Ich habe mehrere Dateien file1.txt, file2.txt usw. diese haben immer eine Zeile mit Informationen (wert1,wert2...). Nun will ich diese Informationen in einer "grossen" Textdatei zusammenfassen. Ich habe mir folgenden code überlegt aber er scheidert schon daran das ich die Dateinamen in einer Schleife erstellen will. Aber ich denke der Grundgedanke dürfte klar sein :?: . Ich als Anfänger bitte daher um etwas Hilfe :!: .
Delphi-Quellcode:
mfg
procedure TTest_1.Button5Click(Sender: TObject);
var ts_main, ts: TStringList; i : Integer; begin ts_main := TStringList.Create; try ts := TStringList.Create; try for i:= 1 to 20 do begin if fileExists('C:\file'+i+'.txt') then ts.LoadFromFile('C:\file'+i+'.txt'); if ts.Count > 0 then begin ts_main.Add(ts.strings[i]); end; end; finally ts.Free; end; ts_main.SaveToFile('C:\files.txt'); finally ts_main.Free; end; Ringer |
Re: Anfänger braucht Hilfe
Hallo!
...es könnte klappen, wenn Du i in eine Zeichenkette umwandelst!
Delphi-Quellcode:
Gruß
for i:= 1 to 20 do
begin if fileExists('C:\file'+IntToStr(i)+'.txt') then ts.LoadFromFile('C:\file'+IntToStr(i)+'.txt'); if ts.Count > 0 then begin ts_main.Add(ts.strings[i]); end; end; Billa |
Re: Anfänger braucht Hilfe
Danke erstmal! Wieder einen neuen Befehl gelernt :D . Wenn ich das "Programm" aber ausführe sagt er "Listenindex überschreitet das Maximum(1)". Was bedeutet das nun wieder :?: .
Ringer |
Re: Anfänger braucht Hilfe
Hallo,
Delphi-Quellcode:
try
for i:= 1 to 20 do begin if fileExists('C:\file'+i+'.txt') then ts.LoadFromFile('C:\file'+i+'.txt'); if ts.Count > 0 then begin ts_main.Add(ts.strings[i]); end; end; finally Du willst bis zu 20 Dateien lesen. Soweit Ok! Beim Einlesen aber benutzt Du den Dateienzähler als Zeilenindex, obwohl Du nicht weißt, ob z.B. bei der Datei Nr. 17 überhaupt 17 Zeilen vorhanden sind! Trenne Zeilenzähler und Dateizähler, dann wird's auf alle Fälle besser! Gruß Billa |
Re: Anfänger braucht Hilfe
Danke! Aber ich habe das jetzt getrennt und es funktioniert immer noch nicht! (Sicherlich ist aber die Trennung sinnvoll!) Allerdings verwirrt mich deine Aussage:
>Du willst bis zu 20 Dateien lesen. Soweit Ok! Beim Einlesen aber >benutzt Du den Dateienzähler als Zeilenindex, obwohl Du nicht weißt, >ob z.B. bei der Datei Nr. 17 überhaupt 17 Zeilen vorhanden sind! Denn in jeder Datei ist nur eine Zeile und die Enddatei hat genauso viele Eintragszeilen wie es Dateien gibt.
Delphi-Quellcode:
Gruß
procedure TTest_1.Button5Click(Sender: TObject);
var ts_main, ts: TStringList; i ,f: Integer; begin f:=0; ts_main := TStringList.Create; try ts := TStringList.Create; try for i:= 1 to 5 do begin if fileExists('C:\file'+IntToStr(i)+'.txt') then f:=f+1; ts.LoadFromFile('C:\file'+IntToStr(i)+'.txt'); if ts.Count > 0 then begin ts_main.add(ts.strings[f]); end; end; finally ts.Free; end; ts_main.SaveToFile('C:\files.txt'); finally ts_main.Free; end; end; Ringer |
Re: Anfänger braucht Hilfe
Hallo,
vielleicht sehe ich es nicht aber Du referenzierst doch die f.Zeile, oder?
Delphi-Quellcode:
Ich denke jede Datei und damit ts enthält jeweils nur eine Zeile?
ts_main.add(ts.strings[f]); <------
Gruß Billa |
Re: Anfänger braucht Hilfe
OK, dann hast du es richtig und ich deine Aussage falsch verstanden :D . Allerdings funktioniert es jetzt immer noch nicht :cry: .
Ringer |
Re: Anfänger braucht Hilfe
Hallo,
was klappt denn nicht? (Fehlermeldung?) Gruß Billa |
Re: Anfänger braucht Hilfe
Ist immernoch die gleiche Fehlermeldung!
Also "Listenindex überschreitet das Maximum(1)" Ringer |
Re: Anfänger braucht Hilfe
Hallo,
du referenzierst immer noch auf eine Zeile f, die gar nicht vorhanden ist
Delphi-Quellcode:
lass doch einfach f erstmal weg und benutze ts.strings[0] !
f:=f+1;
ts.LoadFromFile('C:\file'+IntToStr(i)+'.txt'); if ts.Count > 0 then begin ts_main.add(ts.strings[f]); end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:44 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