Hallo,
ich schlage mich mit der CopyFile-Funktion herum. Habe ein Programm das Dateien kopiert und nutze bisher folgende Funktion (gekürzt und alle try-except, Result zur Übersicht weggelassen)
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| function FileCopy(sVon,sNach: String ): Boolean; var S,D: TFileStream; begin Result := False; S := TFileStream.Create(sVon, fmOpenRead ); D := TFileStream.Create(sNach, fmOpenWrite or fmCreate ); D.CopyFrom(S, S.Size ) ; D.Free; S.Free; end; |
Dieser Tage scheiterte ich bei großen Dateien, Funktion kommt möglicherweise an ihre Grenzen?. Habe mp4-Datei > 3 GB kopiert. Hier wird die Routine nicht mehr fertig, liefert aber auch keine Anzeigen. Wollte nun die CopyFile-Funktion nutzen. Hier finde ich in einem Forum folgende Funktion, die mir gleichzeitig die Arbeit der Datumsanpassung abnehmen würde.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| type TCopyFileFlag = (cffOverwriteFile, cffCreateDestDirectory, cffPreserveTime ); TCopyFileFlags = set of TCopyFileFlag; function CopyFile(const SrcFilename, DestFilename: string): boolean; function CopyFile(const SrcFilename, DestFilename: string; PreserveTime: boolean): boolean; function CopyFile(const SrcFilename, DestFilename: string; Flags: TCopyFileFlags=[cffOverwriteFile]): boolean;
uses ... fileutil ...
CopyFile(SourceName, DestName, [cffPreserveTime, cffOverwriteFile]); |
Mein Problem: Es wird Uses
FileUtil benötigt. Ich arbeite mit RAD-Studio Berlin 10.2. Dieser Compiler stellt diese Funktion nicht bereit.
Mein zweiter Versuch war, mit einer Microsoft-Routine zu arbeiten
Delphi-Quelltext
1: 2: 3: 4: 5:
| BOOL CopyFile( LPCTSTR lpExistingFileName, LPCTSTR lpNewFileName, BOOL bFailIfExists ); |
Beim Befehl
Delphi-Quelltext
1:
| if CopyFile(sVon, sNach, false) = 0 then |
meckert auch hier der Compiler mit: E2010
Inkompatible Typen: 'PWideChar' und 'string'. Dabei werden Pfadnamen doch imer als String übergeben.
Kann mir jemand zur einen oder anderen Variante hilfreiche Tipps geben, damit ich zumindest mal compilieren und testen kann.
MfG hRb