2005. július 3., vasárnap
Delphi 6 - Imported Automation Events Bug
Problem/Question/Abstract:
Why don't any of the events in my imported ActiveX control work?
Answer:
Sad but true. Delphi 6's type library importer is badly broken with regards to the event sinks.
What's happening is that in InvokeEvent mehod that determines where to send the events by DispID each event handler called has its parameters reversed.
So for example in Delphi 5 where it's correct the imported event looks like this;
if Assigned(FOnRecognition) then
FOnRecognition(Self, Params[0] {Integer}, Params[1] {OleVariant}, Params[2]
{SpeechRecognitionType}, Params[3] {const ISpeechRecoResult});
while in Delphi 6 it looks like this;
if Assigned(FOnRecognition) then
FOnRecognition(Self, Params[3] {const ISpeechRecoResult}, Params[2]
{SpeechRecognitionType}, Params[1] {OleVariant}, Params[0] {Integer});
which just will not do.
The solution is to either
fix them all by hand
use an import created by Delphi 5
use official Borland pach for Delphi 6
Feliratkozás:
Megjegyzések küldése (Atom)
Nincsenek megjegyzések:
Megjegyzés küldése