Ok, nachdem ich in der Interface-
Unit bzgl. dieser GetMute-Funktion nun das Boolean durchs Bool ersetzt habe (und das auch noch in meinem Prog getan habe), sind die Exceptions verschwunden. Thx all. Müssten demnach dann nicht eigentlich auch noch alle übrigen Boolean-Typen in dieser Interface-
Unit durch ein Bool ausgewechselt werden? Nehme mal an, ja. Hatte diese
Unit irgendwann mal aus dem Netz gedownloaded. Und wie gesagt: Mit TurboDelphi hatte es immer problemlos geklappt.
Jap mit ziemlicher Sicherheit. Microsoft Schnittstellen bzw. C im allgemeinen verwendet in der Regel 4-Byte Booleans (= BOOL). Dass es vorher geklappt hat war reiner Zufall, da du dir mit den falschen Parametern auf jeden Fall den Stack kaputt machst. Die Integer Results sind btw. auch falsch, das müsste HRESULT sein und
stdcall
kannst du mit
safecall
ersetzen, wenn du lieber Exceptions statt Error-Codes hast. Generell solltest du auf jeden Fall die Fehlercodes von
CoCreateInstance und den Interface Methoden prüfen.