This is odd.
I'm working on a splash screen for my app (since loading 3 years of transactions may take a few seconds) and ran into the following:
Here's from my LPR:
var
MyParam: String;
begin
if paramcount > 0 then begin
MyParam := Paramstr(1);
end;
if ((MyParam = '-h') or (MyParam = '-v')) then begin
writeln('CheckBook Tracker');
writeln('Written by Anthony Maro');
writeln('-----------------------');
writeln('Version 0.9.2');
end else begin
Application.Initialize;
FrmSplash := TFrmSplash.Create(Application);
FrmSplash.Show;
FrmSplash.Refresh;
Application.Processmessages;
Application.CreateForm(TFrmMain, FrmMain);
Application.CreateForm(TFrmAbout, FrmAbout);
Application.CreateForm(TFrmSettings, FrmSettings);
Application.CreateForm(TFrmBalance, FrmBalance);
Application.CreateForm(TFrmStarting, FrmStarting);
Application.CreateForm(TFrmNewSchedDep, FrmNewSchedDep);
Application.CreateForm(TFrmWorking, FrmWorking);
Application.CreateForm(TFrmEnterDep, FrmEnterDep);
Application.CreateForm(TFrmEnterWithdrawal, FrmEnterWithdrawal);
// Application.CreateForm(TFrmSplash, FrmSplash);
Application.Run;
end;
end.
You can see I'm forcing the FrmSplash to display prior to loading the other forms. I then close and free it at the end of the FrmMain.OnShow event
This works just great UNLESS the FrmMain position is set to poDesktopCenter. There may be other position settings that might crash too, but poDesigned and poDefault work fine.
net result is that as soon as FrmMain is shown, the application crashes in TCONTROL__SETVISIBLE line 1624 with access violation.