![]() |
shellexecute (ordner öffnen,später löschen) - Problem
Hallo,
mit folgendem Code öffne ich einen Ordner:
Delphi-Quellcode:
so, das funktioniert soweit auch ganz gut. jetzt zu meinem problem:
procedure ShowFolder(strFolder: string);
begin ShellExecute(Application.Handle, PChar('open'), PChar(strFolder), nil, nil, SW_SHOWNORMAL); end; procedure Form2.sTabSheet2Show(Sender: TObject); begin messagedlg('Es wird nun ein Ordner Fenster geöffnet, indem Sie alle Dateien speichern können',mtInformation,[mbOK],0); ShowFolder(ExtractFilePath(ParamStr(0))+'\Musik\'+inttostr(strtoint(Musiknr.text)-1)); end; mit
Delphi-Quellcode:
möchte ich den ordner löschen, das funktioniert auch soweit NUR das problem ist folgendes:
deldir(ExtractFilePath(ParamStr(0))+'Musik\'+inttostr(Musiknr.text));
ich öffne mein programm, lass den ordner öffne via delphi und kopier dann alles was ich will in diesen ordner rein. dann geh ich ganz normal auf schließen (da es ja ein "normaler" windows ordner ist). so, wenn ich das gemacht habe, dann kommt bei der DelDir Funktion:
Delphi-Quellcode:
ein fehler und zwar dass der Zugriff verweigert wurde (warscheinlich weil irgendwo im hintergrund der ordner trotzdem noch offen ist und somit geschützt ist).
function deldir(dir: string): Boolean;
var fos: TSHFileOpStruct; begin ZeroMemory(@fos, SizeOf(fos)); with fos do begin wFunc := FO_DELETE; fFlags := FOF_SILENT or FOF_NOCONFIRMATION; pFrom := PChar(dir + #0); end; Result := (0 = ShFileOperation(fos)); end; wenn ich mein programm dann schließe, wird der ordner auch gelöscht nur es kommt im programm halt immer der fehler, dass der zugriff verweigert wurde und das irritiert den user ja. woran liegt das? mfg |
Re: shellexecute (ordner öffnen,später löschen) - Problem
Problem gelöst: lag nicht an einer instanz, sondern durch das nutzen eines shelltreviews war da noch eine gewisse verbindung da (die meiner meinung eigentlich beim schließen des formulars geschlossen werden sollte), die zu diesem fehler führt.
ein tabsheet2.destroy (wo die shelltreeview komponente vorhanden ist) im onclose ereignis löst das problem |
Re: shellexecute (ordner öffnen,später löschen) - Problem
Statt Destroy solltest Du aber Free verwenden.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:16 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