Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#1

Dateioperationen, schneller als mit SHFileOperation?

  Alt 9. Feb 2010, 21:04
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?
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat