Hallo,
mit folgendem Code öffne ich einen Ordner:
Delphi-Quellcode:
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;
so, das funktioniert soweit auch ganz gut. jetzt zu meinem problem:
mit
deldir(ExtractFilePath(ParamStr(0))+'Musik\'+inttostr(Musiknr.text));
möchte ich den ordner löschen, das funktioniert auch soweit NUR das problem ist folgendes:
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:
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;
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).
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