Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Einfrieren der Anwendung beim Löschen und Kopiern. (https://www.delphipraxis.net/168900-einfrieren-der-anwendung-beim-loeschen-und-kopiern.html)

Mohadrim 17. Jun 2012 11:35

Delphi-Version: 5

Einfrieren der Anwendung beim Löschen und Kopiern.
 
Diese Funktion hier funktioniert zwar super aber wenn ich 2GB Dateien und Unterverzeichnisse löschen, dann hängt die Anwendung solange reglos rum.


Delphi-Quellcode:
function DeleteFiles(const AFile: string): boolean;
var
  sh: SHFileOpStruct;
begin
  ZeroMemory(@sh, SizeOf(sh));
  with sh do
  begin
    Wnd := Application.Handle;
    wFunc := FO_DELETE;
    pFrom := PChar(AFile +#0);
    fFlags := FOF_SILENT or FOF_NOCONFIRMATION;
  end;
  result := SHFileOperation(sh) = 0;
end;
Das gleiche beim Kopieren von Dateien ca 2GB groß mit dem Befehl

Delphi-Quellcode:
CopyFile(AltesVerzeichnis, NeuesVerzeichnis,true);
Weiß jemand Rat?

jaenicke 17. Jun 2012 11:43

AW: Einfrieren der Anwendung beim Löschen und Kopiern.
 
Genau für so etwas sind Threads geradezu prädestiniert. ;-)

Erstelle am besten eine neue Klasse von TThread abgeleitet und packe den Code in dessen Execute-Methode.

himitsu 17. Jun 2012 12:05

AW: Einfrieren der Anwendung beim Löschen und Kopiern.
 
Die Funktion kehrt erst zurück, wenn alles fertig ist und du hast der Funktion auch noch explizit gesagt, daß sie auf nichts reagieren und keinen Fortschritsdialog anzeigen soll. :stupid:

Zitat:

Zitat von FOF_SILENT
Do not display a progress dialog box.


Mohadrim 20. Jun 2012 08:13

AW: Einfrieren der Anwendung beim Löschen und Kopiern.
 
Ok danke ich teste mal einwenig rum.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:06 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz