Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Aus laufendem Programm Programm beenden und neu starten (https://www.delphipraxis.net/206034-aus-laufendem-programm-programm-beenden-und-neu-starten.html)

wendelin 11. Nov 2020 18:39

Aus laufendem Programm Programm beenden und neu starten
 
Hallo,
ich habe eine vielleicht dumme Frage.
Ich habe ein Programm translated (aus Python 3.x nach Delphi7 (Corona-Simulation)) und möchte aus dem laufenden Programm heraus dieses beenden
und neu starten.
Der Grund : ich bin zu faul für alle glob. Variablen (dyn. Array's) den Speicher freizugeben und neu zu initialisieren.
Ist sowas überhaupt möglich ?

Wendelin

hoika 11. Nov 2020 18:43

AW: Aus laufendem Programm Programm beenden und neu starten
 
Hallo,
separates Programm benutzen.
Dieses starten, das eigene Programm beenden und das andere Programm startet dein eigenes Programm neu.

Dalai 11. Nov 2020 19:08

AW: Aus laufendem Programm Programm beenden und neu starten
 
So richtig verstehen tue ich die Problemstellung nicht. Es ist doch simpel, das eigene Programm, also ParamStr(0) oder Application.ExeName, mit ShellExecute(Ex) zu starten und die erste Instanz danach zu beenden (Application.MainForm.Close oder Self.Close, abhängig vom Code-Kontext).

Grüße
Dalai

Alallart 11. Nov 2020 19:21

AW: Aus laufendem Programm Programm beenden und neu starten
 
@Dalai

Stimmt schon, vorausgesetzt es stört nicht, dass zwei Programme gleichzeitig offen sind und sich evtl. überlagern.

Ansonsten kann man z.B. eine Bachdatei im Temp-Ordner erstellen und starten, eigenes Programm beenden, und die Bachdatei startet dann das neue Programm. Danach die Bachdatei löschen.

Problem dabei ist, dass die Bachdatei das neue Programm starten wird, während das erste noch beendet wird. Sollte es so sein, dass immer nur eine Instanz eines Programms gestartet sein soll, sollte man in die Bachdatei eine kurze Verzögerung einbauen.

Ansonsten ein kleines Tool programmieren und als Ressource einbinden. Dann auslagern und so weiter wie bei der Bachdatei. Vorteil hier - man hat mehr Möglichkeit und kann z.B. prüfen ob das alte Programm noch offen ist.

Jasocul 12. Nov 2020 06:04

AW: Aus laufendem Programm Programm beenden und neu starten
 
Zitat:

Zitat von wendelin (Beitrag 1477162)
Der Grund : ich bin zu faul für alle glob. Variablen (dyn. Array's) den Speicher freizugeben und neu zu initialisieren.

Zumindest ehrlich.:thumb:
Wieiviel Zeit hast du jetzt investiert, um das Problem mit dem Neustart zu lösen und wie lange hätte es gedauert, den Speicher freizugeben und die Variablen zu initialisieren?

jaenicke 12. Nov 2020 07:29

AW: Aus laufendem Programm Programm beenden und neu starten
 
Wenn du eine Klasse mit privaten Feldern statt der globalen Variablen verwendet hättest, müsstest du nur die Klasse neu erzeugen. Deren Felder werden nämlich (wie globale Variablen beim Start der Anwendung) beim Erzeugen der Klasse mit 0, nil usw. initialisiert.

Zudem hättest du gleich eine bessere Struktur im Programm.

wendelin 12. Nov 2020 09:12

AW: Aus laufendem Programm Programm beenden und neu starten
 
Danke an Euch alle für Eure Lösungsvorschläge.

Was ich noch genau machen werde weis ich nicht.
Vielleicht lasse ich es auch dabei.
Dann muß eben der User nach jeder Berechnung das Programm
beenden und gegebenenfalls neu starten.

Wenn das Programm so läuft wie ich es möchte, werde ich es
in die 'Projekte der Mitglieder' einstellen.

Wendelin


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:17 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