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!
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 la parte commentata (che mi sembra banale e corretta) va tutto in crash!
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).
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;
Ho forse sbagliato qualcosa nella definizione della funzione?