Hallo himitsu,
erstmal ganz herzlichen Dank, das Du Dir so viel Mühe mit meinem Thema gegeben hast.
Das Programm ist echt noch in einem Betastadium, deswegen sind auch noch nicht alle Programmieraufgaben vollständig und korrekt erledigt. Natürlich hast Du recht mit den Try-Block und ich werde mich auch bemühen, dass zum Schluss alles so ist, wie es sein soll.
Ich wollte nicht die gesamte
Unit posten, da das doch ein wenig zu umfangreich wäre. Und es geht mir ja wie gesagt auch nur um dieses merkwürdige Löschverhalten.
In einem solchem Probierstadium kommt es bei mir auch immer wieder vor, das z. B. Variablen benutzt und wieder verworfen wurden, die dann aber immer noch in der Deklaration herumlungern. Auch das wird natürlich in der Endfassung beseitigt sein.
Das der Compiler nicht über die Variable l_result gemeckert hat ist doch aber klar: Für den war das nur eine ungenutzte Variable, die aber keinen Schaden anrichtet. Und die Funktion hat ja selber eine Result-Variable, die nicht extra deklariert werden muss. Mein Fehler war es natürlich, nicht diese interne Result-Variable zu nutzen und auf den Fehler abzufragen. Wenn man das Programm nicht nur kompiliert sondern auch noch ein Build macht, dann gibt es allerdings schon einen Hinweis auf eine ungenutzte Variable. Aber das nur nebenbei, denn das ist ja nicht mein Problem und wird wie gesagt in der Endfassung bereinigt.
Das hast Du sehr viel besser gelöst und vom Ablauf her ist jetzt einiges klarer.
Nur habe ich leider immer noch das Problem mit dem unterschiedlichem Löschen:
- Zur Laufzeit aus Delphi heraus eben nicht in den Papierkorb
- Mit ausführbarer Exe-Datei wie gewollt in den Papierkorb
Das Result der Funktion SHFileOperation bringt beim debuggen den Integer-Wert 0 und erzeugt daher keine Fehlermeldung.
Eigentlich könnte ich ja alles so lassen, denn im Endeffekt passiert ja genau das, was ich will. Aber ich finde eine solche Situation doch äußerst unbefriedigend und außerdem stört es auch beim Testen aus Delphi heraus.
Also verstehen kann ich das immer noch nicht. Vielleicht kannst ja Du oder irgendwer doch noch dazu beitragen meine Verwirrung aufzulösen.
Vielen Dank und Gruß Andreas!