![]() |
mehrere Dateien in 1
Liste der Anhänge anzeigen (Anzahl: 1)
Mosche
hab immernoch das Problem mit meinen Log Dateien Und zwar möchte ich jetzt alle inhalte aus allen log datein (bis zu 31) in eine speichern. Wie stell ich das am besten an?? Hab bist jetzt das hier:
Delphi-Quellcode:
procedure TForm1.Button5Click(Sender: TObject);
Var sl1 : TStringList; sl2 : TStringList; i : Integer; begin Memo1.Lines.BeginUpdate; try for I := 1 to 10000 do sl1:= TStringList.Create; sl1:= TStringList.Create; sl1.LoadFromFile(FileListBox1.FileName); sl2:= sl1; Memo1.Text:= sl2.Text; Finally Memo1.Lines.EndUpdate; end; end; |
Re: mehrere Dateien in 1
Und wo ist jetzt dein Problem bzw. wie lautet deine Frage?
|
Re: mehrere Dateien in 1
Zitat:
|
Re: mehrere Dateien in 1
Hai fuknersascha,
schaue Dir deine Code noch mal genau an ;-) Zu erzeugst erst 10 000 x eine Instanz von TStringList (sl1). Dann erzeugst Du noch einmal ein. Dann lädst Du Text in sl1. Und dann weisst Du die Instanz von sl1 der Variablen sl2 zu. Das sind wohl mehrere Fehler im Code und im Design. |
Re: mehrere Dateien in 1
Ähm... In deinem Code sind mehr Fehler drin, wie man in so wenig Zeilen überhaupt schreiben kann. Sorry :oops:
Das sieht mir ziemlich einfach mal so dahingeklatscht aus. Beachte mal meine Punkte, und ich denke du wirst schon ein gutes Stück näher ans Ziel kommen. |
Re: mehrere Dateien in 1
Jo, mit Verlaub gesagt : dein Quelltext ist Schwachsinn. Na gut, Unfug. :mrgreen: Eventuell wäre zu überlegen, die Dateien einfach aneinanderzuhängen in diesem Stil : copy Datei1 + Datei2 DateiGesamt Kommt die 31 von Tage pro Monat her ?
|
Re: mehrere Dateien in 1
TFileStream wäre auch noch eine Möglichkeit. IMO zumindest eine bessere als immer wieder in einem Memo Zeilen hinzuzufügen.
|
Re: mehrere Dateien in 1
Grundsätzliche Frage:
Soll das eine einmalige Reorganisation vorhandener Dateien werden, die inhaltlich nicht verändert werden? Dann im DOS-Fenster mit copy xxx verketten und nix selber machen! Wenn nicht, dann musst du natürlich Delphi bemühen. |
Re: mehrere Dateien in 1
Zitat:
Zitat:
Zitat:
|
Re: mehrere Dateien in 1
Na gut, mit Stringlisten kannst Du das ja so machen:
- Erzeugen einer "Gesamt"-Stringliste und einer "Teil"-Stringliste - in einer Schleife Teilliste aus Datei laden und mit AddStrings der Gesamtliste hinzufügen - Gesamtliste abspeichern - beide Listen freigeben |
Re: mehrere Dateien in 1
Ok hab schonmal einige Fehler raus wie offne ich jetzt jede einzelne Datei und übergebe immer die neuen Strings in die Liste
|
Re: mehrere Dateien in 1
Ok mit ein bissel nachdenken hab ich jetzt geschaft
Kann man das auch schneller machen dauert bissel lange bei mir
Delphi-Quellcode:
procedure TForm1.Button5Click(Sender: TObject);
Var sl1 : TStringList; sl2 : TStringList; i : Integer; begin Memo1.Lines.BeginUpdate; try sl1:= TStringList.Create; sl2:= TStringList.Create; for i := 0 to FileListBox1.Items.Count - 1 do begin sl1.LoadFromFile(FileListbox1.Items[i]); sl2.add(sl1.Text); end; Memo1.Text:= sl2.Text; Finally memo1.Lines.SaveToFile('c:\test.txt'); Memo1.Lines.EndUpdate; end; end; |
Re: mehrere Dateien in 1
Delphi-Quellcode:
is einfach nur runter getippt, sollte aber klappen
var
sl1: TStringlist; i: integer; begin memo1.lines.beginupdate; try sl1 := TStringlist.create; for i := filelistbox1.items.count-1 downto 0 do begin sl1.loadfromfile(filelistbox1.items[i]); memo1.text := memo1.text + sl1.text; end; finally sl1.free; memo1.lines.endupdate; memo1.savetofile('C:\test.txt'); end; end; MfG |
Re: mehrere Dateien in 1
Delphi-Quellcode:
Habe ich
procedure MergeFiles(FileName2add, SumFileName : TFileName) ;
// FileName2add == the name of the first piece of the split file // SumFileName == the name of the resulting merged file var fs, ss: TFileStream; cnt: integer; begin cnt := 1; fs := TFileStream.Create(SumFileName, fmCreate or fmShareExclusive) ; try while FileExists(FileName2add) do begin ss := TFileStream.Create(FileName2add, fmOpenRead or fmShareDenyWrite) ; try fs.CopyFrom(ss, 0) ; finally ss.Free; end; Inc(cnt) ; FileName2add := ChangeFileExt(FileName2add, Format('%s%d', ['._',cnt])) ; end; finally fs.Free; end; end; Usage: MergeFiles('c:\mypicture._1','c:\mymergedpicture.bmp') ; ![]() Grüße Klaus |
Re: mehrere Dateien in 1
@Klaus01
ja Danke Klaus den hatte ich auch schon gefunden nur da verstehe ich mal wieder nichts und so habe ich es verstanden. Wenn ich immer nur abtippe lerne ich nichts und ich laufe gefahr das Ihr irgenwann kein Bock mehr habt auf meine Fragen zu Antworten. Dank dir trotzdem |
Re: mehrere Dateien in 1
Dann versuch es mal so:
Delphi-Quellcode:
Evtl. vorherige Zeilen mit Memo1.Clear entfernen.
procedure TForm1.Button5Click(Sender: TObject);
Var sl1 : TStringList; i : Integer; begin Memo1.Lines.BeginUpdate; try sl1:= TStringList.Create; try for i := 0 to FileListBox1.Items.Count - 1 do begin sl1.LoadFromFile(FileListbox1.Items[i]); Memo1.Lines.AddStrings(sl1); end; finally sl1.Free; end; memo1.Lines.SaveToFile('c:\test.txt'); finally Memo1.Lines.EndUpdate; end; end; |
Re: mehrere Dateien in 1
Zitat:
|
Re: mehrere Dateien in 1
@fuknersascha: du gibst die Stringlisten Instanzen nicht mehr frei.
@p0w3r5tr34m3r: Dein Code sollte eine Warnung bringen, dass sl1 möglicherweise nicht initialisiert worden ist (wo er Recht hat). @Hansa: Das wäre zwar einfach, aber unperformant, da er ständig Lines[] -> string und string -> Lines[] bastelt. Dafür gibt es ![]() |
Re: mehrere Dateien in 1
Wenn das geht, dann soll er das auch so machen, zumindest anfangen. Antworten sind genug da. :P
|
Re: mehrere Dateien in 1
Zitat:
|
Re: mehrere Dateien in 1
Mit Create vor dem ersten Zugriff :zwinker:
|
Re: mehrere Dateien in 1
Das habe ich schon vor dem 1 Zugriff und auch Create kommt aber immernoch die Meldung
Delphi-Quellcode:
//=====================Dateien aneinander hängen==============================
procedure TForm1.Button5Click(Sender: TObject); Var sl1 : TStringList; sl2 : TStringList; i,x : Integer; begin ForceDirectories(JvComputerInfoEx1.Folders.Desktop+ '\'+ExtractFileName(ShellTreeView2.Path)+'_CDR_'+ ComBobox3.Text + '_' + ComboBox1.Text); try sl1:= TStringList.Create; sl2:= TStringList.Create; for i := 0 to FileListBox1.Items.Count - 1 do begin sl1.LoadFromFile(FileListbox1.Items[i]); for x := Pred(sl1.Count) downTo 0 do begin if Trim(sl1[x]) = '' then//or (Trim(sl1[x]) = 'Date') then begin sl1.Delete(x); end; end; sl2.addStrings(sl1); end; sl2.SaveToFile (JvComputerInfoEx1.Folders.Desktop+ '\'+ExtractFileName(ShellTreeView2.Path)+'_CDR_'+ ComBobox3.Text + '_' + ComboBox1.Text +'\'+ ComBobox3.Text+'_'+ ComboBox1.Text+'.log'); Finally sl2.Free; Sl1.Free; end; Button6.Click; end; |
Re: mehrere Dateien in 1
Setz das try mal weiter nach hinten.
Delphi-Quellcode:
sl1:= TStringList.Create;
sl2:= TStringList.Create; try ... |
Re: mehrere Dateien in 1
uuupppsss
Danke das wars falls jemand noch ne Verbesserung hat bin ich gerne offen aber hab noch ne andere Frage schreib ich aber in den berits schon offenem Post |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:22 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