Ho convertito una vecchia applicazione D4 in Lazarus ma quando la lancio mi solleva l'eccezione in oggetto e poi appare la finestra assembler con queste linee:
ntdll!LdrDisableThreadCalloutsForDll
7C91E47C 8b4c2404 mov 0x4(%esp),%ecx
7C91E480 8b1c24 mov (%esp),%ebx *** ERRORE ***
7C91E483 51 push %ecx
7C91E484 53 push %ebx
7C91E485 e8e6c40100 call 0x7c93a970 <towlower+298>
7C91E48A 0ac0 or %al,%al
7C91E48C 740c je 0x7c91e49a <ntdll!LdrDisableThreadCalloutsForDll+30>
riferito al seguente codice contenuto nel file "control.inc":
procedure TControl.ReadState(Reader: TReader);
begin
Include(FControlFlags, cfLoading);
DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('TControl.ReadState'){$ENDIF};
try
Include(FControlState, csReadingState);
inherited ReadState(Reader); { *** ERRORE *** }
finally
Exclude(FControlState, csReadingState);
EnableAutoSizing{$IFDEF DebugDisableAutoSizing}('TControl.ReadState'){$ENDIF};
end;
end;
Ho provato a modificare il $MODE mettendo OBJFPC, ho corretto gli errori ma l'eccezione viene sollevata ugualmente.
Ho usato il debugger e passo-passo sono arrivato fino alla funzione che ritorna l'errore durante la creazione della Form principale:
E' la "Reader.ReadRootComponent(Instance);" nella unit LResources.
Anche facendo partire l'eseguibile da filesystem la sistuazione non cambia.
Ho cercato in giro ma non sono riuscito a trovare una soluzione.
Qualcuno ha qualche idea?
P.S. Utilizzo Lazarus 1.0.08 su XP32