"Troels Thomsen" <asdf@asdf.dk> wrote in message
news:42baafbb$0$267$edfadb0f@dread11.news.tele.dk...
> Jeg har et program hvor jeg er nødt til at lave noget dummy kode, ellers
> går programmet ned med "Access Violation at 0xFFFFFFFFF".
>
> void __fastcall TForm1::init_callbackClick(TObject *Sender)
> {
> void* pR = myReceiveFunc; // ?????
> void* pT = myTransmitFunc; // ?????
> void* pM = myMajorErrorFunc; // ?????
Det allokerer formodentlig noget plads på stakken.
> if (pR || pT || pM) pR = 0 ; // ?????
>
> g_Event_Receive(myReceiveFunc);
> g_Event_Transmit(myTransmitFunc);
> g_Event_MajorError(myMajorErrorFunc);
>
> }
>
> De nederst tre kald er funktionspointere der er loaded med adressen på den
> pågældende funtion i en dll. De er ikke null.
>
> myReceiveFunc etc er funktioner jeg har skrevet, de er heller ikke null
>
>
> Et par definitioner:
> typedef void (__stdcall *PEvent_Receive)(void (ReceiveFunc)(ESACAN_MSG
> *msg, int reply));
> PEvent_Receive g_Event_Receive;
>
> Det skal siges at programmet går ned før dll'en får lyst til at kalde
> disse funktioner, så det er ikke selve callbackfunktionerne der er fejl i.
>
> Ellers virker programmet fint...
Mon dog ?
Selvom du laver nogle dummy variable, er der nok en fejl i programmet som
ligger og lurer.
>
> Det er jo super giftigt hvis jeg ikke har de rigtige antal parametre og
> returværdier til sådan nogle funktionspointere.
Det burde compilerens typesystem gerne fange - så det er ikke det mest
oplagte problem.
> Kan det være derfor at det er en fordel at der lige ligger nogle
> autoparametre på stacken ??
>
> Hvad kan jeg gøre for at indkredse problemet ?
Det ligner noget C++Builder kode.
Hvis det er C++Builder V6 Professional, så slår du CodeGuard til (Project |
Options | CodeGuard) og så vil du sikkert få noget mere at vide om hvad der
er galt.
Venlig hilsen
Mogens Hansen