Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Sich selbst neu starten? (https://www.delphipraxis.net/67701-sich-selbst-neu-starten.html)

PeterPanino 18. Apr 2006 18:43


Sich selbst neu starten?
 
Was ist die beste Methode, mit der ein Programm sich selbst neu starten kann?

Es sollen aber nicht zwei Instanzen zur gleichen Zeit laufen, d.h. das neu zu startende Programm soll erst dann (besser: im gleichen Augenblick) gestartet werden, wenn das alte beendet ist.

Es ist mir klar, dass das nur über ein anderes Programm geht, aber vielleicht gibt es jemanden, der da besondere Tricks kennt oder Erfahrungen damit gemacht hat.

Nicodius 18. Apr 2006 19:17

Re: Sich selbst neu starten?
 
für was barauchst du das denn :shock:


sonst gibts heir in der codelib nen code dass nie 2 instanzen des programms gleichzeitig offen sind.
Und dann könntest du einfach das neue öffnen und das alte schliessen?


grüße Nico

mirage228 18. Apr 2006 19:24

Re: Sich selbst neu starten?
 
Hi,

Ich habe das mal so gemacht, dass ich ein Mini-Programm als Resource in das neu zustartende Programm integriert habe.
Muss selbiges neugestartet werden, dann wird das Mini-Programm entpackt (nach TEMP) und wartet solange bis sich das Hauptprogramm beendet hat (bzw. beendet dieses ggf. selbst) und startet dieses dann neu (das Mini-Programm beendet sich selbst und wird vom Hauptprogramm beim Start gelöscht).

mfG
mirage228

3_of_8 18. Apr 2006 19:29

Re: Sich selbst neu starten?
 
Du könntest auch die MainForm schließen und in die beim Projektquellcode eine bedingt terminierte Schleife drumrum machen.

PeterPanino 18. Apr 2006 20:07

Re: Sich selbst neu starten?
 
Zitat:

Zitat von 3_of_8
Du könntest auch die MainForm schließen und in die beim Projektquellcode eine bedingt terminierte Schleife drumrum machen.

Könntest du das bitte mal an einem konkreten Beispiel zeigen? Danke!

3_of_8 18. Apr 2006 20:15

Re: Sich selbst neu starten?
 
Du gehst auf Projekt/Quellcode anzeigen.

Dann steht da irgendwo

Delphi-Quellcode:
begin
Application.Initialize;
...
Application.Run;
end.
Ersetzen durch:

Delphi-Quellcode:
var Terminate: Boolean;
begin
repeat
Teminate:=True;
Application.Initialize;
...
Application.Run;
until Terminate;
end.
Wenn du das Programm neustarten musst, ruf einfach an der betreffenden Stelle auf:
Delphi-Quellcode:
Terminate:=false;
Close;
(Ungetestet)

PeterPanino 18. Apr 2006 21:52

Re: Sich selbst neu starten?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Danke, funktioniert aber leider nicht! S. angehängtes Projekt.

Zitat:

Zitat von 3_of_8
Du gehst auf Projekt/Quellcode anzeigen.

Dann steht da irgendwo

Delphi-Quellcode:
begin
Application.Initialize;
...
Application.Run;
end.
Ersetzen durch:

Delphi-Quellcode:
var Terminate: Boolean;
begin
repeat
Teminate:=True;
Application.Initialize;
...
Application.Run;
until Terminate;
end.
Wenn du das Programm neustarten musst, ruf einfach an der betreffenden Stelle auf:
Delphi-Quellcode:
Terminate:=false;
Close;
(Ungetestet)


3_of_8 19. Apr 2006 06:53

Re: Sich selbst neu starten?
 
Hmm, keine Ahnung. Der Code nach Application.Run wird irgendwie gar nicht ausgeführt. Du könntest es natürlich noch eleganter machen, indem du alle relevanten Variablen am Anfang in ein Array oder in eine Datei speicherst und sie dann wieder einliest.

Nicodius 19. Apr 2006 06:57

Re: Sich selbst neu starten?
 
Morgen

jetzt erklär mir nochmal wieso du das brauchst ;)


grüße Nico

Sascha L 19. Apr 2006 07:46

Re: Sich selbst neu starten?
 
Das ist doch völlig irrelevant für die Lösung, wieso er das braucht?! Es gibt 1000ende Anwendungsmöglichkeiten, wieso ein Programm neugestartet werden soll und da ist es für den User ein Komfort-Feature, wenn es das selber kann.

Ich würde einfach ein Mini-Programm schreiben welches das Programm beendet und danach neustartet. Dieses Programm in das Hauptprogramm zu packen, wie hier schon jmd. schrieb, finde ich aber unnötig. Das Programm kann ja ganz normal als zweite Exe im Hauptverzeichnis liegen. Das Programm schadet ja nicht. D.h. selbst wenn jmd. das Programm selber über den Explorer ausführt, wird ja nur das Programm - sofern es geöffnet ist - beendet und danach neugestartet.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:14 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz