AGB  ·  Datenschutz  ·  Impressum  







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

Programm zurücksetzen

Ein Thema von Kacze · begonnen am 23. Nov 2005 · letzter Beitrag vom 1. Sep 2017
Antwort Antwort
Seite 1 von 2  1 2      
Kacze

Registriert seit: 4. Nov 2005
Ort: Bergkamen
18 Beiträge
 
#1

Programm zurücksetzen

  Alt 23. Nov 2005, 09:38
Guten Moin,

Ich möchte einen Button erstellen, der mein Programm auf den Anfangszustand zurück setzt?

ich hab ne Idee
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
  begin
    form1.close;
    form1.create;
  end;
oder so etwas in der Art
nur irgendwie will das ned
Gruß Kacze
  Mit Zitat antworten Zitat
Yan

Registriert seit: 26. Sep 2003
Ort: Aachen
129 Beiträge
 
Delphi 7 Personal
 
#2

Re: Programm zurücksetzen

  Alt 23. Nov 2005, 10:04
Je nach dem ob dein Programm lange braucht zum starten würde ich es per ShellExecute laden und dann das alte schließen... Ist zwar kein guter Programmierstil, aber immerhin eine Lösung
Yannick F.
mfG - Yannick
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Programm zurücksetzen

  Alt 23. Nov 2005, 10:07
Und warum machst du es nicht einfach manuell? Setze alle Captions neu, leere Listboxen, etc und du hast das alles viel schneller als wenn du das Programm erst neu startest.

//Edit:
Zitat von Kacze:
Guten Moin
Also "Guten guten Morgen" oder was?
Zitat von Kacze:
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
  begin
    form1.close;
    form1.create;
  end;
Das kann gar nicht klappen. Du schließt mit Form1.Close das Mainform deines Programmes. Damit wird das gesamte Programm geschlossen. Wie soll denn dann noch die nächste Code-Zeile bearbeitet werden?
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
Yan

Registriert seit: 26. Sep 2003
Ort: Aachen
129 Beiträge
 
Delphi 7 Personal
 
#4

Re: Programm zurücksetzen

  Alt 23. Nov 2005, 10:11
^
| Oder so. Schreib doch einfach eine procedure die alles wieder auf den Normalzustand zurücksetzt. Ist besser als das Programm neu zu laden...
Yannick F.
mfG - Yannick
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.350 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Programm zurücksetzen

  Alt 23. Nov 2005, 10:17
Hi,

folgende Procedure startet deine Anwendung neu oder beendet sie:
Delphi-Quellcode:
procedure ForceKillApplication(ARestart: boolean = False);
var
  AStartInfo: TStartupInfo;
  AProcInfo: TProcessInformation;
begin
  if ARestart then
  begin
    GetStartupInfo(AStartInfo);
    FillChar(AProcInfo, SizeOf(TProcessInformation), #0);
    CreateProcess(nil, GetCommandLine, nil, nil, False,
      CREATE_NEW_PROCESS_GROUP + NORMAL_PRIORITY_CLASS, nil,
      PChar(GetCurrentDir), AStartInfo, AProcInfo);
  end;
  TerminateProcess(GetCurrentProcess, 1);
end;
Gruß, Frank
Frank Reim
  Mit Zitat antworten Zitat
Kacze

Registriert seit: 4. Nov 2005
Ort: Bergkamen
18 Beiträge
 
#6

Re: Programm zurücksetzen

  Alt 23. Nov 2005, 10:39
Danke,
es hat funktioniert!
Gruß Kacze!
  Mit Zitat antworten Zitat
bronstein

Registriert seit: 3. Feb 2004
28 Beiträge
 
Delphi XE2 Professional
 
#7

AW: Programm zurücksetzen

  Alt 1. Sep 2017, 10:32
Code:
procedure ForceKillApplication(ARestart: boolean = False);
var
  AStartInfo: TStartupInfo;
  AProcInfo: TProcessInformation;
begin
  if ARestart then
  begin
    GetStartupInfo(AStartInfo);
    FillChar(AProcInfo, SizeOf(TProcessInformation), #0);

    CreateProcess(nil, GetCommandLine, nil, nil, False,
      CREATE_NEW_PROCESS_GROUP + NORMAL_PRIORITY_CLASS, nil,
      PChar(GetCurrentDir), AStartInfo, AProcInfo);


  end;
  TerminateProcess(GetCurrentProcess, 1);
end;
Gibt es auch noch die Möglichkeit einen Startparameter der Funktion zu übergaben und wo muss ich die Information bei CreateProcess plazieren?
  Mit Zitat antworten Zitat
Glados
(Gast)

n/a Beiträge
 
#8

AW: Programm zurücksetzen

  Alt 1. Sep 2017, 11:11
Zitat:
folgende Procedure startet deine Anwendung neu oder beendet sie:
Wenn man davon absieht, dass keines der folgenden Events durch Nutzung dieser Funktion aufgerufen wird und man mit dem Killen der Anwendung und ggf Datenverlust leben kann, ist der Code OK.
Ansonsten würde ich jedem davon abraten diesen Schnippsel zu verwenden.

Die folgenden Events werden durch das Nutzen dieser Funktion nicht aufgerufen:
Code:
- OnCloseQuery
- OnClose
- OnDestroy
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.168 Beiträge
 
Delphi 12 Athens
 
#9

AW: Programm zurücksetzen

  Alt 1. Sep 2017, 11:55
Natürlich nicht.
TerminateProcess beendet die Ausführung umgehen, also schießt die Anwendung ab.
> SendMessage+WM_CLOSE ans Hauptfenster oder PostThreadMessage+WM_CLOSE an den MainThread.
> bzw., da man hier im eigenen Prozess ist, Application.MainForm.Close oder Application.Terminate

Zitat:
- OnCloseQuery
- OnClose
- OnDestroy
Finalization aller Units usw.

Startparameter:
GetCommandLine sind die Startparameter und der Anwendungsname, der aktuell laufenden Anwendung.
Willst du das ändern, dann ParamStr(0) oder Application.ExeName für die Anwendung und für die eigenen Parameter siehe 3. Parameter bei Delphi-Referenz durchsuchenCreateProcess.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 1. Sep 2017 um 12:00 Uhr)
  Mit Zitat antworten Zitat
Glados
(Gast)

n/a Beiträge
 
#10

AW: Programm zurücksetzen

  Alt 1. Sep 2017, 11:59
Zitat:
Natürlich nicht.
Nur weiß man nicht, ob der Themenersteller das weiß oder nicht.
Daher meine Anmerkung.
Ich würde einen großen Bogen um diese Funktion machen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 00: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