Ciao!
Sto scrivendo una dll a cui vengono fornite delle informazioni (tramite la chiamata di alcune funzioni) da un programma (che non posso modificare).
La maggior parte di queste funzioni non ha problemi, ma ce n'è una che continua a farmi andare in crash tutto il programma!
Se eseguo la parte commentata (che mi sembra banale e corretta) va tutto in crash!codice:OEDISPLAY_API void DrawDisplay(const char * ADisplayType) { /*const char * perova=ADisplayType; if (perova==(char *) 0) MessageBox (0, "Arrivo", "Hi", MB_ICONINFORMATION); if (perova==(char *) 1) MessageBox (0, "Partenza", "Hi", MB_ICONINFORMATION); if (perova==(char *) 2) MessageBox (0, "Intermedio", "Hi", MB_ICONINFORMATION);*/ MessageBox (0, ADisplayType, "Hi", MB_ICONINFORMATION); }
Se eseguo l'ultima riga va in crash dopo aver mostrato il MessageBox, ma solo e soltanto quando ADisplayType è 0. Negli altri casi (può essere solo 0, 1 o 2) non viene mostrata nessuna finestra e tutto continuo normalmente.
Siete d'accordo con me che è molto strano come comportamento?!
Io ho una parte della dll scritta in Pascal, dove questa funzione non fa niente di particolare (dovrebbe rendere visibili degli elementi in una finestra creata precedentemente dalla stessa dll).
Ho forse sbagliato qualcosa nella definizione della funzione?codice:procedure DrawDisplay(ADisplayType: byte); stdcall; var i: integer; begin if assigned(OEDisplayDemoForm) then begin with OEDisplayDemoForm do begin gb_TV.Show; end; end; end;

Rispondi quotando