Anwendung im Form.Create Ereignis beenden

Für Fragen von Einsteigern und Programmieranfängern...

Anwendung im Form.Create Ereignis beenden

Beitragvon DL3AD » 14. Dez 2017, 16:42 Anwendung im Form.Create Ereignis beenden

Hallo,

Ich prüfe im Form.Create Ereignis auf zum Ausführen der Anwendung notwendige Dateien.
Wenn sie fehlen dann soll eine SchowMessage kommen und die Anwendung beendet werden ohne dass das Form.Show Ereignis eintritt.
Wie kann man das realisieren ?

Gruß Frank
DL3AD
 
Beiträge: 368
Registriert: 13. Sep 2013, 11:07
Wohnort: Rügen
OS, Lazarus, FPC: Win7 (L 1.8.0 FPC 3.0.4) und Debian Stretch (L 1.8.0 FPC 3.0.4) | 
CPU-Target: 32Bit/64Bit
Nach oben

Beitragvon m.fuchs » 14. Dez 2017, 17:04 Re: Anwendung im Form.Create Ereignis beenden

Code: Alles auswählen
procedure TForm1.FormCreate(Sender: TObject);
begin
  if 1 = 1 then begin
    ShowMessage('Blafasel');
    Halt;
  end;
end;


Im Gegensatz zu Application.Terminate wird bei Halt das Programm sofort und nicht erst nach dem Show des Forms beendet.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
m.fuchs
 
Beiträge: 1963
Registriert: 22. Sep 2006, 18:32
Wohnort: Berlin
OS, Lazarus, FPC: Winux (L 1.8.4, FPC 3.0.4) | 
CPU-Target: x86, x64, arm
Nach oben

Beitragvon DL3AD » 14. Dez 2017, 17:13 Re: Anwendung im Form.Create Ereignis beenden

Hallo m.fuchs,

DANKE für den Tipp ! - manche Dinge sind so simpel, dass man einfach nicht darauf kommt :oops:
DL3AD
 
Beiträge: 368
Registriert: 13. Sep 2013, 11:07
Wohnort: Rügen
OS, Lazarus, FPC: Win7 (L 1.8.0 FPC 3.0.4) und Debian Stretch (L 1.8.0 FPC 3.0.4) | 
CPU-Target: 32Bit/64Bit
Nach oben

Beitragvon Warf » 14. Dez 2017, 17:53 Re: Anwendung im Form.Create Ereignis beenden

DL3AD hat geschrieben:Hallo m.fuchs,

DANKE für den Tipp ! - manche Dinge sind so simpel, dass man einfach nicht darauf kommt :oops:

Denk aber dran das Halt dir das Programm direkt killt. Soweit ich weiß werden dann keine Destruktoren aufgerufen. Ich bin mir nicht mal sicher of Finalize Code aufgerufen wird. Wenn du also Logs speichern willst solltest du das auf jeden fall vor dem Finalize machen
Warf
 
Beiträge: 964
Registriert: 23. Sep 2014, 16:46
Wohnort: Aachen
OS, Lazarus, FPC: Mac OSX 10.11 | Win 10 | FPC 3.0.0 | L trunk | 
CPU-Target: x86_64, i368, ARM
Nach oben

Beitragvon m.fuchs » 14. Dez 2017, 18:06 Re: Anwendung im Form.Create Ereignis beenden

Warf hat geschrieben:Soweit ich weiß werden dann keine Destruktoren aufgerufen.

Aber sicher doch. Wenn das Halt im OnCreate des Forms passiert, wird sowohl OnDestroy als auch Destroy durchgeführt.
Was natürlich nicht passiert, sind die entsprechenden Aufrufe von Forms die erst später erzeugt werden. Wurden jedoch Forms vor dem erzeugt, welches im Create ein Halt aufruft, so werden auch deren OnDestroy und Destroy abgearbeitet.

Warf hat geschrieben:Ich bin mir nicht mal sicher of Finalize Code aufgerufen wird. Wenn du also Logs speichern willst solltest du das auf jeden fall vor dem Finalize machen

Alle finalize-Blöcke von benutzten Units werden abgearbeitet.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
m.fuchs
 
Beiträge: 1963
Registriert: 22. Sep 2006, 18:32
Wohnort: Berlin
OS, Lazarus, FPC: Winux (L 1.8.4, FPC 3.0.4) | 
CPU-Target: x86, x64, arm
Nach oben

Beitragvon Mathias » 14. Dez 2017, 18:35 Re: Anwendung im Form.Create Ereignis beenden

So wie es scheint, ist HALT nicht mehr so brutal wie früher. Ich habe ein wenig die Source von FPC angeguckt, da wird noch recht viel gemacht, bis endgültig das Ende kommt.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4262
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

• Themenende •

Zurück zu Einsteigerfragen



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste

porpoises-institution
accuracy-worried