Hallo
Ich mehrere Datein übereinander kopieren ähnlich der msdos funktion Copy /b file1+file3 = output.file
dazu benutze ich folgende funktion:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44:
| FileList : ARRAY[1..5] OF STRING = ('1.k', '2.k', '3.k', '4.k', '5.k'); CombinedFile = 'Combined.DAT';
procedure TForm1.Rebuild; VAR i : INTEGER; s : ARRAY[1..5] OF STRING; size : INTEGER; Stream : TMemoryStream;
begin FOR i := Low(FileList) TO High(FileList) DO BEGIN IF FileExists(FileList[i]) THEN BEGIN Stream := TMemoryStream.Create; TRY Stream.LoadFromFile(FileList[i]); SetLength(s[i], Stream.Size); Stream.Read(s[i][1], Stream.Size) FINALLY Stream.Free END
END ELSE s[i] := ''; END; DeleteFile(CombinedFile); Stream := TMemoryStream.Create; TRY FOR i := Low(s) TO High(s) DO BEGIN size := LENGTH(s[i]); Stream.Write(size, SizeOf(size)); Stream.Write(s[i][1], size); END;
Stream.SaveToFile(CombinedFile) FINALLY Stream.Free END; end; |
nur hat die combined.dat for jeder neuen Datei ein 0100 0000 ?!
Aber wieso schreibt die prozedur das darein? kann ich auch irgendwie Dynamische Arrays benutzen in die Dann eine textdatei geladen wird mit den dateien die übereinander kopiert werden sollen ?
Moderiert von
tommie-lie: Code- durch Delphi-Tags ersetzt