AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Sich selbst neu starten?

Ein Thema von PeterPanino · begonnen am 18. Apr 2006 · letzter Beitrag vom 29. Jul 2010
Antwort Antwort
Seite 1 von 3  1 23      
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#1

Sich selbst neu starten?

  Alt 18. Apr 2006, 19:43
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.
  Mit Zitat antworten Zitat
Nicodius

Registriert seit: 25. Apr 2003
Ort: Graz
2.234 Beiträge
 
Delphi 2006 Architect
 
#2

Re: Sich selbst neu starten?

  Alt 18. Apr 2006, 20:17
für was barauchst du das denn


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
Nico Müller
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Sich selbst neu starten?

  Alt 18. Apr 2006, 20:24
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
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Sich selbst neu starten?

  Alt 18. Apr 2006, 20:29
Du könntest auch die MainForm schließen und in die beim Projektquellcode eine bedingt terminierte Schleife drumrum machen.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Sich selbst neu starten?

  Alt 18. Apr 2006, 21:07
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!
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Sich selbst neu starten?

  Alt 18. Apr 2006, 21:15
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)
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Sich selbst neu starten?

  Alt 18. Apr 2006, 22:52
Danke, funktioniert aber leider nicht! S. angehängtes Projekt.

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)
Angehängte Dateien
Dateityp: zip restart_108.zip (1,1 KB, 26x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Sich selbst neu starten?

  Alt 19. Apr 2006, 07:53
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.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Nicodius

Registriert seit: 25. Apr 2003
Ort: Graz
2.234 Beiträge
 
Delphi 2006 Architect
 
#9

Re: Sich selbst neu starten?

  Alt 19. Apr 2006, 07:57
Morgen

jetzt erklär mir nochmal wieso du das brauchst


grüße Nico
Nico Müller
  Mit Zitat antworten Zitat
Sascha L

Registriert seit: 4. Jun 2004
Ort: Hamm
390 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Sich selbst neu starten?

  Alt 19. Apr 2006, 08:46
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.
Sascha
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:59 Uhr.
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