AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Durch SHFileOperation gelöschte Ordner bleiben bis Programmende bestehen
Thema durchsuchen
Ansicht
Themen-Optionen

Durch SHFileOperation gelöschte Ordner bleiben bis Programmende bestehen

Ein Thema von Y.Elm · begonnen am 24. Jan 2013 · letzter Beitrag vom 5. Feb 2013
Antwort Antwort
Y.Elm

Registriert seit: 19. Sep 2011
Ort: Berlin
21 Beiträge
 
Delphi 2010 Professional
 
#1

AW: Durch SHFileOperation gelöschte Ordner bleiben bis Programmende bestehen

  Alt 25. Jan 2013, 08:15
Wie schon gesagt, der gesamte Quellcode ist deutlich länger, als hier gepostet.
Die DLL kann mehrere Import-Objekte verwalten, von denen jedes einen anderen Import-Ordner überwacht und sich anders verhalten kann. Damit die Clear-Funktion nicht blind alle Import-Ordner säubert, wird das Handle zu dem Import-Objekt übergeben, dessen Ordner gesäubert werden soll.
Und die Ergebnisse der Funktionen werden natürlich auch ausgewertet.
Ich wollte nur nicht hunderte Zeilen von Code posten, die mit dem eigentlichen Problem nichts zu tun haben.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.869 Beiträge
 
Delphi 12 Athens
 
#2

AW: Durch SHFileOperation gelöschte Ordner bleiben bis Programmende bestehen

  Alt 25. Jan 2013, 10:46
So einen Effekt hatte ich auch schon einmal im Windows Explorer, da waren die Ordner aber manuell im Windows Explorer gelöscht worden. Ich hatte da das Antivirenprogramm (damals leider noch Antivir) in Verdacht als Ursache. Und die genannten Funktionen verursachen das jedenfalls nicht immer, da das in ähnlicher Form bei mir funktioniert.

Kannst du das vielleicht in ein kleines Demoprogramm verpacken, das bei dir das Problem zeigt? Denn dann ließe sich testen, ob das mit dem selben Programm auch woanders auftritt.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Y.Elm

Registriert seit: 19. Sep 2011
Ort: Berlin
21 Beiträge
 
Delphi 2010 Professional
 
#3

AW: Durch SHFileOperation gelöschte Ordner bleiben bis Programmende bestehen

  Alt 28. Jan 2013, 10:33
So, das hat leider etwas länger gedauert.
Ich habe ein kleines Testprojekt mit einer Exe und einer DLL erstellt. Beide sind auf die zwingend nötigen Codezeilen zusammengeschrumpft, also bitte nicht wundern, wenn einige Zeilen sinnlos erscheinen.

Verzeichnisstruktur:
000DeleteFolders = Projektdateien
000DeleteFolders\dcu = wie der Name schon sagt ... DCU-Verzeichnis
000DeleteFolders\source = alle *.pas und *.dfm Dateien
000DeleteFolders\binary = alle fertigen Kompilate
000DeleteFolders\binary\Import_Folder = Das Import-Verzeichnis, aus dem alle Unterverzeichnisse gelöscht werden sollen

Der Ablauf: Die DLL überwacht den Import-Ordner und meldet der Exe importierbare Dateien per Callback, welche den Import-Button enabled. Beim Click auf den Import-Button ruft die Exe die Liste der Dateien aus der DLL ab und importiert (zu Testzwecken: löscht) alle Dateien. Der Clear-Button wird enabled. Ein Klick darauf ruft nur die Funktion Clear() der DLL auf, in der genau das eingangs beschriebene Problem zu beobachten ist.
Angehängte Dateien
Dateityp: zip 000DeleteFolders.zip (1,01 MB, 27x aufgerufen)
  Mit Zitat antworten Zitat
Y.Elm

Registriert seit: 19. Sep 2011
Ort: Berlin
21 Beiträge
 
Delphi 2010 Professional
 
#4

AW: Durch SHFileOperation gelöschte Ordner bleiben bis Programmende bestehen

  Alt 1. Feb 2013, 08:27
Hat denn niemand eine Idee? Ist das Problem wenigstens auf anderen Rechnern / Betriebssystemen nachvollziehbar?
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: Durch SHFileOperation gelöschte Ordner bleiben bis Programmende bestehen

  Alt 1. Feb 2013, 14:13
Schick doch einfach ein refresh in welcher form auch immer an das jeweilige Fensterhandle (Ordner)
in dem sich die zu löschenden Dateien/Ordner befinden.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von Björn Ole
Björn Ole

Registriert seit: 11. Jul 2008
166 Beiträge
 
Delphi XE Professional
 
#6

AW: Durch SHFileOperation gelöschte Ordner bleiben bis Programmende bestehen

  Alt 1. Feb 2013, 23:19
In deiner function Clear() hast du für das zweite FindFirst (Zeile 277) das entsprechende FindClose vergessen.
  Mit Zitat antworten Zitat
Y.Elm

Registriert seit: 19. Sep 2011
Ort: Berlin
21 Beiträge
 
Delphi 2010 Professional
 
#7

AW: Durch SHFileOperation gelöschte Ordner bleiben bis Programmende bestehen

  Alt 4. Feb 2013, 10:56
Oh man, da war ich wohl doppelt blind . Ich hab den Code im Original mehrmals untersucht und beim Ableiten des Testprojektes nochmal, und dieser blöde Fehler ist mir nicht aufgefallen ...
Mich hat nur verwundert, dass die Ordner noch bis zum Schließen der Hauptapplikation bestehen blieben. Ich dachte, wenn die DLL noch irgendwelche Handles benutzt, müssten die Ordner beim Entladen der DLL verschwinden.
Vielen Dank an Björn Ole für die Lösung des Mysteriums, das bei genauer Betrachtung gar keins war.
  Mit Zitat antworten Zitat
Antwort Antwort


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 15:11 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 by Thomas Breitkreuz