Autor Beitrag
Christian213
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 66
Erhaltene Danke: 3

Win XP, Win 7 64Bit
Lazarus 1.0.10
BeitragVerfasst: Di 25.06.13 13:27 
Hallo,

wahrscheinlich ist mein heutiges Problem trivial:

Ich möchte eine Anwendung im Regelfall ohne sichtbaren Dialog laufen lassen.
Den/die Dialog(e) möchte in manuell im Bedarfsfall (=Fehlerfall) anzeigen lassen.
Dazu habe ich die "Main Form" in den Projekteinstellungen aus dem "Auto Create" entfernt.
In der Main Unit habe ich nun folgendes stehen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
begin
  Application.Initialize;
  Application.Run;
end.


Der Dialog bleibt auch unsichtbar, jedoch beendet sich das Programm nicht mehr.
Ich vermute, dass es auf das OnClose-Event wartet.
Wie kann ich das Programm an sich beenden?
Und: Muss Application.Initialize und Application.Run grundsätzlich erfolgen, auch wenn ich gar keinen Dialog öffnen möchte?
Oder ist gar hier genau mein Denkfehler?

Danke und Gruß
Christian
WasWeißDennIch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 653
Erhaltene Danke: 160



BeitragVerfasst: Di 25.06.13 14:00 
Was meinst Du mit Dialog, generell alle Fenster? Was soll Dein Programm denn tun?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19326
Erhaltene Danke: 1749

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 25.06.13 14:03 
Du musst zwischen begin und end gar nichts stehen haben, nur beendet sich das Programm dann auch sobald aller Code, der dort steht, abgearbeitet ist. Ich denke mal das ist was du möchtest.

Application.Run führt eine Schleife aus, die Nachrichten abarbeitet bis das Programm beendet wird. Das willst du aber ja gar nicht, du willst ja eigenen Code stattdessen asuführen.

Für diesen Beitrag haben gedankt: Christian213
Christian213 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 66
Erhaltene Danke: 3

Win XP, Win 7 64Bit
Lazarus 1.0.10
BeitragVerfasst: Di 25.06.13 14:20 
user profile iconWasWeißDennIch hat folgendes geschrieben Zum zitierten Posting springen:
Was meinst Du mit Dialog, generell alle Fenster? Was soll Dein Programm denn tun?


Mein Programm tut verschiedene Dinge auf Dateiebene und Registry und startet anschließend ein anderes Programm mittels ExecuteProcess nach.
Dann soll es sich selbst beenden.
Die Form (und das Window) sollen nur dann geöffnet werden, wenn Benutzer-Interaktion notwendig sind.
Christian213 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 66
Erhaltene Danke: 3

Win XP, Win 7 64Bit
Lazarus 1.0.10
BeitragVerfasst: Di 25.06.13 14:32 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Du musst zwischen begin und end gar nichts stehen haben, nur beendet sich das Programm dann auch sobald aller Code, der dort steht, abgearbeitet ist. Ich denke mal das ist was du möchtest.

Application.Run führt eine Schleife aus, die Nachrichten abarbeitet bis das Programm beendet wird. Das willst du aber ja gar nicht, du willst ja eigenen Code stattdessen asuführen.


Hm, klingt logisch. Doch selbst wenn ich zwischen "begin" und "end." nicht stehen habe, bleibt der Prozess laufen. Ich muss dann in der IDE auf "Stop" klicken oder wenn ich die EXE manuell starte diese im Taskmanager killen...
WasWeißDennIch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 653
Erhaltene Danke: 160



BeitragVerfasst: Di 25.06.13 14:41 
Du kannst Deinen Code auch in die dpr schreiben und dort ggf. das Formular bei Bedarf laden und anzeigen.

Für diesen Beitrag haben gedankt: Christian213
Christian213 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 66
Erhaltene Danke: 3

Win XP, Win 7 64Bit
Lazarus 1.0.10
BeitragVerfasst: Di 25.06.13 14:53 
user profile iconWasWeißDennIch hat folgendes geschrieben Zum zitierten Posting springen:
Du kannst Deinen Code auch in die dpr schreiben und dort ggf. das Formular bei Bedarf laden und anzeigen.


Haha! Das war der entscheidende Tipp! Das File war leider standardmäßig im Code-Explorer geschlossen, daher habe ich folgendes nicht gesehen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
(...)
begin
  RequireDerivedFormResource := True;
  Application.Initialize;
  Application.Run;
end.


Vielen Dank an alle!

Gruß,
Christian