![]() |
Daten anhängen
Hallo Zusammen,
folgendes Problem: Ich habe mehrere Textdateien welche ich auslesen will und deren Inhalt in einer Textdatei zusammenfassen will. Die Dateien haben folgende Struktur: Dateiname: file1.txt file2.txt... Dateiinhalt: daten1,daten2,... (aber nur eine Zeile!) Die "große" Enddatei soll dann den Inhalt der einzelnen Datei zeilenweise! beinhalten. Ich habe schon mit eof und append rumprobiert aber irgendwie stelle ich mich als Anfänger (oder überhaupt :wink: ) falsch an! Daher wäre ich über Tips oder sogar etwas Code dankbar! mfg Ringer |
Re: Daten anhängen
Wie kommst du an die ganzen Dateien die einzulesen sind?
|
Re: Daten anhängen
Die Dateien werden von verschiedenen Anwendern in einen zentralen Ordner zur Informationsübergabe bereitgestellt. Also ist so eine Art Datenbündelung, aber es müssen Textdateien sein!
|
Re: Daten anhängen
Das Einlesen aller Dateinamen dürfte ja dank FindFirst, FindNext,... kein Problem darstellen.
Das nächste Zauberwort heißt dann Schleife. |
Re: Daten anhängen
Naja dadurch das alle Dateien eh in einen Verzeichnis sind ist das nicht das Problem.
Ich weiss auch die Schleife ungefähr so aussehen muss:
Delphi-Quellcode:
ich hoffe das ist nicht totaler mist :D . Aber wie ich jetzt die eine Zeile aus der Datei auslese (das geht noch) und die dann in einer Datei zusammenfasse...
for i=1 to 50 (zahl ist egal) do
begin if fileExists('file'+i+'.txt') then... |
Re: Daten anhängen
Natürlich ungetestet, sollte aber die Vorgehensweise klar machen.
Delphi-Quellcode:
var ts_main, ts: TStringList;
begin ts_main := TStringList.Create; try ts := TStringList.Create; try for i := 1 to 50 do //hier deine dateien laden, woher auch immer ts.LoadFromFile(dateixy); if ts.Count > 0 then begin ts_main.Add(ts.Strings[0]); end; finally ts.Free; end; ts_main.SaveToFile(Haupdatei); finally ts_main.Free; end; |
Re: Daten anhängen
Sorry verstehe ich aber nicht! Vielleicht habe ich mich auch schlecht ausgedrückt :?: Aber es kann auch sein das eine Datei nicht da ist. Außerdem will ich das in der Hauptdatei die Einträge Zeile für Zeile vorliegen. Vielleicht könntest du mir als blutiger Anfänger noch einen Kommentar dazu schreiben :D
mfg Ringer |
Re: Daten anhängen
Ich code Dir hier mal eben das Kopieren des Inhaltes einer Datei in
eine andere runter und danach sage ich noch was zum Anhängen. Dieser Stil ist ein alter Pascal-Stil, den ich noch von damals aus dem Abi kann. Es gibt viele, andere Mittel dieses Problem zu lösen, Ich bin gerade auf der Arbeit und habe deshalb kein Delphi zur Hand. Ich konstruiere das mal eben "per Stift"! Ich werde Dir alles ausreichend dokumentieren, damit Du es nachvollziehen kannst.
Delphi-Quellcode:
So, zum Anhängen von Informationen an eine Datei machst Du Folgendes:
// Erst mal Pfad von Quelle und Zieldatei definieren:
Const Quelle = 'C:\Quelle.dat'; Const Ziel = 'C:\windows\Desktop\Ziel.dat'; // Datenstruktur Deiner Datei Type TRecord = Record ... // was auch immer, pack's einfach rein. end; Var QuellDat, ZielDat : File of TRecord; // Dateizuweisung des Datentyps! Var Hilf : TRecord; // Muss äquivalent mit "File of" sein !!! Begin AssignFile(QuellDat, Quelle); // QuellDat-Variable des ext. Namen zuweisen Reset(QuellDat); // vorhandene Datei öffnen If IOResult = 0 then // Wenn kein Fehler ... begin AssignFile(ZielDat, Ziel); // ZielDat-Variable des ext. Namen zuweisen Reset(ZielDat); // vorhandene Datei öffnen If IOResult <> 0 then // Wenn Datei nicht vorhanden ... Rewrite(ZielDat); // ... Erstelle neue Datei While not Eof(QuellDat) Do // Solange Datei nicht am Ende Begin Read(QuellDat, Hilf); // Lese Record von QuellDat Write(ZielDat, Hilf); // Schreibe Record in ZielDat end end else { Fehler }; // Fehlerbehandlung CloseFile(QuellDat); // Schließe QuellDat CloseFile(ZielDat); // Mach zu, das Ding end;
Delphi-Quellcode:
Also Leute, macht's gut. Ich fahre nun heim.
Type TDatei = File of String; // muss nicht String sein, bloß ein Beispiel
Function PrepareForAppend(Var Datei : TDatei; FileName : String) : Boolean; Begin AssignFile(Datei, FileName); // Wieder mal einer Dateiveriable den ext. Namen zuweisen Reset(Datei) // Vorhandene Datei öffnen. If IOResult <> 0 then Rewrite(Datei) // Bei nicht vorhanden sein, neu erstellen {Und jetzt kommt der Knackpunkt!} Seek(Datei, FileSize(Datei)); // Wir setzen den Cursor auf das Dateiende und damit können wir weitere Infos anhängen (konkatinieren) Result:= (IOResult = 0) AND FileExists(FileName); // True, wenn kein Fehler + Datei vorhanden ! end; DANNYBOY |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:17 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