Ich möchte folgende Operation mit so wenig wie möglich Netzwerklast implementieren:
Code:
If File is Directory then
CopyAllFiles(File, TargetDirectory)
else
CopyOneFile (File, TargetDirectory)
Mein bisheriger Ansatz: CopyFile aufrufen (ich versuch's einfach mal). Wenn es nicht funktioniert und GetLastError=5 (
Access denied) ist, könnte es ein Verzeichnis sein. Dann versuche ich mein Glück einfach.
Ich erspare mir also, jedesmal erst zu prüfen, ob es sich bei 'Filename' um ein Verzeichnis handelt.
Delphi-Quellcode:
procedure TFileOperation.CopyFileOrDirectory (filename, destination : String);
Procedure _CheckResult(aOpResult : Boolean);
Begin
if not aOpResult then
if GetLastError()=5 then
raise EAccessDeniedException.Create('');
End;
begin
Try
_CheckResult(CopyFile(PChar (filename), PChar (destination ), False));
Except
On E:EAccessDeniedException Do
CopyDirectory (filename, destination);
end;
end;
Geht das noch resourcenschonender oder ruft CopyFile eh intern irgendwo vermutlich 'IsDirectory' auf?