Ganz einfach... die
Exception die geworfen wurde weil das Programm dann versuchte, einen nicht existenten Registrykey zu lesen sorgte dafür dass das Programm direkt aus der TMainForm.CreateForm() in den Except-Block im *.dpr sprang. Der war leer und der Programmablauf danach zuende - Cleanup und tschüss.
Zur Verdeutlichung hier der entsprechende Schnipsel aus dem *.dpr:
[delphi]
begin
try
Application.Initialize;
Application.Title := 'MeinProgramm';
Application.CreateForm(TMainForm, MainForm);
Application.CreateForm(TForm1, Form1);
[...]
Application.Run;
except
end;
end.
Im CreateForm trat nun eine
Exception auf, die löste (auf Umwegen) den Handler oben aus und das Programm war zuende noch bevor es überhaupt richtig gestartet war.
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet.
" (Henning Richter)