Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Problem mit CopyFile
hRb - Do 28.03.19 22:58
Titel: Problem mit CopyFile
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
Delete - Do 28.03.19 23:35
- Nachträglich durch die Entwickler-Ecke gelöscht -
hRb - Do 28.03.19 23:53
Hallo Frühlingsrolle,
warst mal wieder schneller!!! Habe gerade noch etwas entdeckt, was auch funktioniert:
Delphi-Quelltext
1:
| if CopyFile(@sVon[1], @sNach[1], false) = false then ... |
Habe tatsächlich den Eindruck, dass diese Funktion deutlich schnelller ist und vor allem zu Ende kommt. Werde mir auch noch CopyFile2 ansehen und ggf. Fortschritttsanzeige einblenden.
Jedenfalls Danke
hRb
Delete - Fr 29.03.19 00:14
- Nachträglich durch die Entwickler-Ecke gelöscht -
hRb - Do 04.04.19 23:17
Danke, wieder was gelernt.
hRb
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!