Anwendung im Form.Create Ereignis beenden

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
DL3AD
Beiträge: 478
Registriert: Fr 13. Sep 2013, 12:07
OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
CPU-Target: 64Bit
Wohnort: Rügen

Anwendung im Form.Create Ereignis beenden

Beitrag von DL3AD »

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

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Anwendung im Form.Create Ereignis beenden

Beitrag von m.fuchs »

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

DL3AD
Beiträge: 478
Registriert: Fr 13. Sep 2013, 12:07
OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
CPU-Target: 64Bit
Wohnort: Rügen

Re: Anwendung im Form.Create Ereignis beenden

Beitrag von DL3AD »

Hallo m.fuchs,

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

Warf
Beiträge: 1908
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: Anwendung im Form.Create Ereignis beenden

Beitrag von Warf »

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

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Anwendung im Form.Create Ereignis beenden

Beitrag von m.fuchs »

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

Mathias
Beiträge: 6167
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Anwendung im Form.Create Ereignis beenden

Beitrag von Mathias »

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 grün
Mit Java und C/C++ sehe ich rot

Antworten