AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Einfrieren der Anwendung beim Löschen und Kopiern.

Einfrieren der Anwendung beim Löschen und Kopiern.

Ein Thema von Mohadrim · begonnen am 17. Jun 2012 · letzter Beitrag vom 20. Jun 2012
Antwort Antwort
Mohadrim

Registriert seit: 4. Jun 2004
8 Beiträge
 
#1

Einfrieren der Anwendung beim Löschen und Kopiern.

  Alt 17. Jun 2012, 11:35
Delphi-Version: 5
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

CopyFile(AltesVerzeichnis, NeuesVerzeichnis,true); Weiß jemand Rat?
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
7.266 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#2

AW: Einfrieren der Anwendung beim Löschen und Kopiern.

  Alt 17. Jun 2012, 11:43
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.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
34.931 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: Einfrieren der Anwendung beim Löschen und Kopiern.

  Alt 17. Jun 2012, 12:05
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.

Zitat von FOF_SILENT:
Do not display a progress dialog box.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Mohadrim

Registriert seit: 4. Jun 2004
8 Beiträge
 
#4

AW: Einfrieren der Anwendung beim Löschen und Kopiern.

  Alt 20. Jun 2012, 08:13
Ok danke ich teste mal einwenig rum.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf