![]() |
Dateioperationen, schneller als mit SHFileOperation?
Ich möchte folgende Operation mit so wenig wie möglich Netzwerklast implementieren:
Code:
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.
If File is Directory then
CopyAllFiles(File, TargetDirectory) else CopyOneFile (File, TargetDirectory) Ich erspare mir also, jedesmal erst zu prüfen, ob es sich bei 'Filename' um ein Verzeichnis handelt.
Delphi-Quellcode:
Geht das noch resourcenschonender oder ruft CopyFile eh intern irgendwo vermutlich 'IsDirectory' auf?
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; |
Re: Dateioperationen, schneller als mit SHFileOperation?
Hallo alzaimar, mir ist noch nicht ganz klar wie du zu der Liste der zu kopierenden Files kommst.
Irgendwie musst Du ja die Liste erstellen (suchen ab einem bestimmten Verzeichnis?? etc.), und da könnte man doch unterscheiden ob Directory or not? FindFirstFile --> FindNextFile --> if Filename = . or = .. dann Directory? Sehe ich das richtig, dass du von einem Netzlaufwerk zu einem Anderen, über SMB, diverse File-Strukturen kopieren willst? lg. Astat |
Re: Dateioperationen, schneller als mit SHFileOperation?
Hi Astat,
... stimmt, ich bin ja auch ein Depp. Deine Nachfragen beinhalten die Lösung. Ich erstelle mit FindFirst/FindNext ein Verzeichnis, aus dem ich die zu kopierenden Dateien auswähle.. Die packe ich Depp in eine Stringliste und baue mir eine separate Methode, die alle Dateien dieser Stringlist kopiert, und wenns ein Verzeichnis ist, dann.. Ich weiss doch aber beim Erstellen der TStringlist, worum es sich handelt. Aua, tut das weh :wall: |
Re: Dateioperationen, schneller als mit SHFileOperation?
Zitat:
dann kann/wird CopyDirectory auch schiefgehn ... und es wird keine Fehlermeldung ausgelöst. PS: das Try-Except ist ja wohl nur da, um die im "Fehlerfall" absichtlich ausgelöste Exception abzufangen und das ist eine Mißhandlung dieser "Ausnahmebehandlung". Da du die Rückgabewerte eh nicht genau auswärtest, hätte dieses vollkommen ausgereicht.
Delphi-Quellcode:
procedure TFileOperation.CopyFileOrDirectory (filename, destination : String);
begin CopyFile(PChar (filename), PChar (destination), False)) or CopyDirectory(filename, destination); end; |
Re: Dateioperationen, schneller als mit SHFileOperation?
Zitat:
|
Re: Dateioperationen, schneller als mit SHFileOperation?
Zitat:
Zitat:
|
Re: Dateioperationen, schneller als mit SHFileOperation?
Wieso bin ich in letzter Zeit so mental inkompentent? :wall:
|
Re: Dateioperationen, schneller als mit SHFileOperation?
Zitat:
![]() |
Re: Dateioperationen, schneller als mit SHFileOperation?
Es tut gut, festzustellen, dass es nicht nur mir... was wollte ich nochmal sagen? Hallo Fräulein? :gruebel:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz