![]() |
TSaveDialog verursacht Sperrung von Windows-Ordnern
Hallo
ich habe festgestellt, dass unter Windows2000 und XP nach der Verwendung von TSaveDialog/TOpenDialog der Zielordner gesperrt wird. Die Sperrung hat nichts mit der verwendeten Datei zu tun. Ab Vista und Win7 tritt dieses Problem nicht mehr auf. Ich verwende Delphi 6, 2007 und 2010.
Delphi-Quellcode:
Wenn ich nun den Zielordner umbenennen/löschen möchte, meldet Windows folgendes:
procedure TForm12.btn1Click(Sender: TObject);
var aSaveDlg: TSaveDialog; begin aSaveDlg:= TSaveDialog.Create(nil); try if aSaveDlg.Execute then ShowMessage(aSaveDlg.FileName); finally aSaveDlg.Free; end; end; "xxx kann nicht umbenannt werden: Eine Zugriffsverletzung ist aufgetreten. Die Quell- oder Zieldatei ist möglicherweise geöffnet." Diese Ordnersperre bleibt bis zum Ende des Programmes erhalten. Wie kann ich diese lästige Ordnersperre verhindern? |
AW: TSaveDialog verursacht Sperrung von Windows-Ordnern
Das ist mir noch nie aufgefallen. Muss ich nachher mal zu Hause unter XP ausprobieren.
Aber kann es sein, dass du in deinem Programm eine Datei in dem Ordner öffnest und diese nicht wieder schleißt bzw. erst bei Programmende? |
AW: TSaveDialog verursacht Sperrung von Windows-Ordnern
Zitat:
|
AW: TSaveDialog verursacht Sperrung von Windows-Ordnern
Das ist in Problem in Windows.
Erstmal läßt dieses bei Verwendung dieses Dialogs leider manchmal einige Dateihandle (für Ordnerzugriffe) geöffnet und dann ändert dieser Dialog das aktuelle Verzeichnis ( ![]() Fazit: Es wird wirklich noch auf dieses Verzeichnis zugegriffen und demnach kann man dann da auch nix ändern. Lösungen: - Das aktuelles Verzeichnis via ![]()
Delphi-Quellcode:
oder
ParamStr(0)
Delphi-Quellcode:
setzen.
Application.ExeName
- Für die vergessenen Dateihandle gibt's keine wirkliche Lösung. In einem Projekt hatte ich mal vor Aufruf alle Dateihandle des Programms aufgelistet, nach dem Aufruf nochmal und dann alle neuen Handles manuell geschlossen. > Leider war das Auslesen zu "aufwändig" und das Schließen brachte manchmal Nebenwirkungen, so daß ich dieses nicht mehr mache. |
AW: TSaveDialog verursacht Sperrung von Windows-Ordnern
Wie schauts denn mit dem Online-Virenscanner aus?
Der Scanner hat ja nichts besseres zu tun, als sich jede Datei und jedes Verzeichnis sofort zu krallen und zu scannen. Mit dem Tool ![]() Dazu das Verzeichnis mit rechter Maustaste anklicken und "Who locked me?..." im Kontextmenu auswählen. |
AW: TSaveDialog verursacht Sperrung von Windows-Ordnern
Zitat:
Was verstehst Du unter einem "Windows-Ordner"? Es würde mich nicht wundern, wenn man als nicht-Admin ein paar auf die Finger bekommt, wenn man versucht z.B. C:\Programme in C:\Fremdsoftware um zu benennen. Unter Vista / 7 gibt es ja die Einrichtung dieser virtuellen Verzeichnisse, mit denen kannst Du ja anstellen was Du willst, nach dem nächsten Booten ist wieder alles beim alten. (und irgendwo lauern dann Deine Sünden der letzten 3Monate/Jahre...) Gruß K-H |
AW: TSaveDialog verursacht Sperrung von Windows-Ordnern
Zitat:
Wenn, dann doch lieber ein ausgewachsenes Projekt, welches (bei mit) seit Jahren erfolgreich im Einsatz ist und noch keine Probleme verursacht hat ![]() ![]() (auf der Seite gibt es seit 'ner Weile aber auch noch eine Liste anderer/alternativer FileUnlocker) Die Tools von Sysinternals sind auch sehr empfehlenswert, aber für diesen Zweck sind sie etwas "umständlich". |
AW: TSaveDialog verursacht Sperrung von Windows-Ordnern
Hallo,
habe gerade kein Delphi in Reichweite, deshalb aus der Erinnerung: Es müsste bei den Dateidialogen in den Optionen auch eine geben, die das Wechseln des Verzeichnisses, bei der Dateiauswahl, verhindert. Das könnte Dir weiterhelfen. Normalerweise wechseln die Dialoge (wie himitsu weiter oben schon anführte) in das Verzeichnis, aus dem man eine Datei auswählt, bzw. in das man eine Datei schreibt. Damit ist das Verzeichnis solange "in Gebrauch", bis über einen Dialog (oder einen Programmbefehl) ein anderes Verzeichnis auswählt oder das Programm beendet. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:54 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