Tut mir Leid, aber eine "gute" Lösung hab ich hierfür auch nicht.
Das Einzige, was du da machen kannst, ist die Ursache für den Fehler zu entfernen.
Du mußt also den Grund herausfinden, warum die Datei gesperrt ist (also nicht verschoben werden kann) und dann diese Sperrung aufheben.
So, nun mal zu mir ^^
Ich habe leider auch soeine Fehlermeldung ... hat eventuell einen ähnlichen Grund.
Zitat:
---------------------------
Fehler beim Löschen der Datei oder des Ordners
---------------------------
Datei kann nicht gelöscht werden: Die Quelldatei oder vom Quelldatenträger kann nicht gelesen werden.
---------------------------
OK
---------------------------
Bei mir ist es aber nicht unbedingt nötig das Löschen auszuführen, alerdings soll im Fehlerfall etwas anderes gemacht werden.
Zuerst hatte ich es so versucht:
Delphi-Quellcode:
Try
...
Result := SHFileOperation(ShellInfo) = S_OK;
Except
... was anderes
End;
Allerdings wurde dabei immernoch die "gemeine" Fehlermeldung angezeigt und das "Andere" wurde nicht ausgeführt.
Nach einigen Test bin ich nun darauf gekommen, daß zwar eine Fehlermeldung (samt dem nervigen Fehlergeräuch) ausgegeben, aber in Wirklichkeit wird keine
Exception erzeugt, weßhalb natürlich der Except-Block nicht ausgeführt wird.
Und da es sich um keine
Exception handelt, welche von Delphi's Fehlerbehandlungroutinen ausgewertet wird, ist es ebenfalls nicht möglich diesen "Fehler" per Try-Except zu unterdrücken.
Da jetzt natürlich das Try-Except "sinnlos" ist, wird es jetzt folgender Maßen behandelt und nun wird im Fehlerfall endlich auch das "Andere" ausgeführt.
Delphi-Quellcode:
Result := SHFileOperation(ShellInfo) = S_OK;
If not Result Then Begin
... was anderes
End;
Das Problem mit der erscheinenden "Fehlermeldung" bleibt aber erhalten.
Und da diese Meldung intern von SHFileOperation erzeugt und angezeigt wird, hab ich keine delphiengenen Möglichkeiten diese Meldung loszuwerden.
Gibt es also eine Möglichkeit dieses blöde Fehlerfenster abzustellen?
Ich hab ja leider (im WinSDK) nichts gefunden, womit dieses deaktiviert werden kann