Dateien verschmelzen
Möchten Sie mehrere Dateien zu einer Datei verschmelzen, hilft Ihnen die untenstehende Routine weiter.
Folgende Routine erwartet zwei Parameter: Eine Liste mit Dateinamen, aus denen später die Zieldatei gebildet wird und den Dateinamen der Zieldatei. Die Dateien aus der Dateiliste müssen sich nicht im gleichen Verzeichnis befinden.
procedure ReUniteFile(const Files: TStrings; const FileName: string); var f1, f2: TFileStream; i: integer; begin f1 := TFileStream.Create(Filename, fmCreate or fmShareDenyWrite); try for i:=0 to Files.Count-1 do begin f2 := TFileStream.Create(Files[i], fmOpenRead or fmShareDenyNone); try f1.CopyFrom(f2, 0); finally f2.Free; end; end; finally f1.Free; end; end;
Die Procedure überprüft nicht, ob es Sinn macht die angegebenen Dateien zu verschmelzen. Es lassen sich beliebige Dateien kombinieren, die später aber nicht unbedingt wieder getrennt werden können, da die Dateigröße eines jeden Segments unbekannt ist.
Die Dateien werden in der Reihenfolge verschmolzen, wie sie in der Liste stehen. Bitte beachten Sie, dass TFileStream, den die Routine intern verwendet, mit großen Dateien über 2 GB Probleme bekommt.
Die Routine kann so aufgerufen werden:
procedure TForm1.Button1Click(Sender: TObject); var sl: TStringlist; begin sl := TStringlist.Create; try sl.Add('c:\Bild.bmp.001'); sl.Add('c:\Bild.bmp.002'); ReUniteFile(sl, 'c:\NeuesBild.bmp'); finally sl.Free; end; end;