AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Alle Variablen in einem Programm auf Knopfdruck zurücksetzen
Thema durchsuchen
Ansicht
Themen-Optionen

Alle Variablen in einem Programm auf Knopfdruck zurücksetzen

Ein Thema von Helmut · begonnen am 30. Jan 2003 · letzter Beitrag vom 30. Mär 2003
Antwort Antwort
Seite 2 von 2     12   
masters001

Registriert seit: 23. Dez 2002
78 Beiträge
 
#11
  Alt 21. Mär 2003, 14:52
Zu diesem Thema hab ich auch noch ein kleines Problem:
Ich habe ein zweites Form in meinem Programm was sich vom 'Hauptformular' öffnen lässt.
Wenn ich dieses Formular nun öffne, danach schliesse und wiederum öffne, hab ich das gefühl das die Variablen nicht wieder 'frei' sind sondern noch von den zuvor ausgeführten Aktionen (vor dem schliessen und danach erneutem öffnen )mit Werten belegt sind?
Wie kann ich es erreichen das alle Variablen wenn ein Form geöfnnet wird unbelegt sind? Oder wenn ein Form geschlossen wird gelöscht werden?
Vielen Dank
masters001
  Mit Zitat antworten Zitat
Touchdown

Registriert seit: 17. Feb 2003
227 Beiträge
 
#12
  Alt 21. Mär 2003, 15:21
Im OnCreate bzw. OnClose, oder noch besser Constructor bzw Destructor.
function getallfornothing: TGoldesel;
begin
result := TGoldesel.create;
end;
  Mit Zitat antworten Zitat
Benutzerbild von X-Dragon
X-Dragon

Registriert seit: 14. Jan 2003
Ort: Schortens
289 Beiträge
 
Delphi 6 Enterprise
 
#13
  Alt 21. Mär 2003, 15:23
Um was für Variablen geht es denn? Normal sollte man alle Variablen beim Programmstart bzw öffnen des neues Fensters erstmal z.B. auf 0 setzen so das das nicht passieren kann.

Wenn eine Variable immer ein Wert zugewiesen bekommt bevor sie abgerufen wird, ist es ja kein Problem, aber wenn kein direkte Zuweisung vorher erfolgt ist, kann immer irgend ein Zufallswert drin stehen, natürlich je nach dem was für Variablen und wo sie definiert sind.
  Mit Zitat antworten Zitat
teebee

Registriert seit: 17. Jan 2003
Ort: Köln
460 Beiträge
 
Delphi 6 Professional
 
#14
  Alt 21. Mär 2003, 15:25
Hi masters001,

Du hast prinzipiell zwei Möglichkeiten, ein zweites Formular zu öffnen:

1. Du kannst es von Delphi automatisch erzeugen lassen, und bei Bedarf mit MyForm.Show(Modal) anzeigen.

2. Du kannst es unmittelbar bevor Du es brauchst selbst erzeugen, anzeigen, und nach Gebrauch wieder zerstören.

Bei der ersten Version geht das Anzeigen schneller, aber der Speicher für das Formular ist während der gesamten Laufzeit der Applikation belegt. Resourcenschonender ist die zweite Version, dafür dauert das Anzeigen evtl. einen Tick länger, da erst alles erzeugt werden muss, und das jedesmal neu.

Wenn Du die erste Methode anwendest (ist die Standardeinstellung), kannst Du Deine Variablen im OnShow-Ereignis von MyForm initialisieren (nicht in OnCreate, das wird nur einmal zu Beginn des Programmes ausgelöst).

Bei der zweiten Methode kannst Du die Initialisierung ins OnCreate-Ereignis packen.

mfg, teebee
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#15
  Alt 21. Mär 2003, 16:30
Hallo Helmut,

Dein Problem kennt jeder dessen Programme bei der Programmierung wachsen. Da gibt es nur eine Lösung, Planung oder "Prinzip"!

Ich habe mir angewöhnt alle Variablen in den entsprechenden Objekten zu kapseln. Normalerweise initialisiert Delphi beim Create eines Objektes die Propertys mit null. Trotzdem setze auch ich in der Create-Methode meine Variablen vor (Vertrauen ist gut, vorbauen besser).

Bei Deinem Zurücksetzen würde ich einfach alle Objekte zerstören und dann neu creieren. So werden automatisch alle Eigenschaften auf die Startwerte gesetzt.

So bleibt meistens kaum noch Handarbeit übrig.

Gruß oki
  Mit Zitat antworten Zitat
masters001

Registriert seit: 23. Dez 2002
78 Beiträge
 
#16
  Alt 30. Mär 2003, 18:04
@ teebee
hi ich rufe mein Formular nach der ersten Methode auf
Ich schließe es ganz normal mit close.
Kannst du mir ein beispiel für deine zwiete beschriebene Methode posten?
Vielen Dank
  Mit Zitat antworten Zitat
Benutzerbild von Gregor
Gregor

Registriert seit: 14. Mär 2003
Ort: Jona
133 Beiträge
 
#17
  Alt 30. Mär 2003, 18:20
wie schon einige gesagt haben, stelle auch ich alle variabeln beim start auf 0 etc. wenns viele sind und ich im onload nix ausser die variabeln auf null habe dann mache ich einfach einen verweis auf diese procedure
<->Besser mit Klugen in die Hölle als mit Dummen ins Paradies.<->
  Mit Zitat antworten Zitat
Benutzerbild von X-Dragon
X-Dragon

Registriert seit: 14. Jan 2003
Ort: Schortens
289 Beiträge
 
Delphi 6 Enterprise
 
#18
  Alt 30. Mär 2003, 20:35
Zitat von masters001:
@ teebee
hi ich rufe mein Formular nach der ersten Methode auf
Ich schließe es ganz normal mit close.
Kannst du mir ein beispiel für deine zwiete beschriebene Methode posten?
Vielen Dank
Ich denke er meinte das z.B. so:

Delphi-Quellcode:
  FmTagesSetup := TFmTagesSetup.Create(Application);
  if FmTagesSetup.ShowModal = mrOK then
    FmTagesSetup.Release;
So mache ich es zumindest normal, weil damit der Programmstart um einiges beschleunigt wird, wenn man ein paar mehr Fenster hat. Es wird also immer nur das gerade benötigte Fenster geladen und anschliessend wieder entfernt.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 17:04 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