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 1 von 2  1 2      
Helmut

Registriert seit: 22. Nov 2002
64 Beiträge
 
#1

Alle Variablen in einem Programm auf Knopfdruck zurücksetzen

  Alt 30. Jan 2003, 09:01
Hallo,

ich beschäftige mich grad mit folgendem Problem:
Nachdem in meinem Programm (spiel) der spieler gewonnen oder verloren hat kann er das spiel neustarten (oder auch mitten im spiel über die menüleiste).
Also wird auf knopfdruck wieder die form sichtbar wo man die spieleinstellungen angibt. Das Problem: ich hab so viele variablen, das ich immer wenn ich beim klick auf neustarten alle variablen auf die standartwerte manuell zurücksetze immer wleche vergesse. Ausserdem sind komponenten sichtbar die beim normalen start des programmes nicht sofort sichtbar sind (diese komponenten wurden erst im verlauf des spiels auf sichtbar gesetzt).

Gibt es eine Möglichkeit das "eleganter" zu machen? Vielleicht ein direkter befehl der alles auf originalstart zurücksetzt?

mfg
Helmut
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2
  Alt 30. Jan 2003, 09:10
Schreib dir eine Prozedur, in der du alles wieder zurücksetzt. Das mußt du dann zwar auch schreiben, aber nur einmal.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Helmut

Registriert seit: 22. Nov 2002
64 Beiträge
 
#3
  Alt 30. Jan 2003, 09:27
genau das wollte ich ja vermeiden

Ich hab das gemacht, allerdings ist da soviel zurückzusetzen das ich überhaupt nichtmehr durchblicke. Dauernd stürtzt mein programm nach dem neustart ab mitten im spiel und ich weiss nicht warum.
Hab auch schon bei application-methoden gesucht. Aber das einzige was mir hoffnung gab war application.restore und das macht ja nicht das was ich brauche...

Aber wenns nicht anders geht dann nehm ich den neustarten-knopf raus. Ist ja auchnicht so schlimm wenn der anwender das programm nochmal starten muss.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4
  Alt 30. Jan 2003, 09:37
Bei mir wäre das Spiel im Starmenü hier: Start -> Programme -> Zubehör -> Spiele.

Wäre nicht so toll alle 2 Minuten diesen ganzen Weg machen zu müssen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Helmut

Registriert seit: 22. Nov 2002
64 Beiträge
 
#5
  Alt 30. Jan 2003, 09:39
hm.... ja.. du hast ja recht, schön isses nicht grad
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#6
  Alt 30. Jan 2003, 10:34
Es gibt noch eine weitere prinzipielle Möglichkeit : Du packst alle Variablen in EINEN Record:

Code:
TYPE SpielTyp =
  RECORD
    punkte : integer;
    gewonnen : boolean;
    ...
  END;

VAR SpielVar : SpielTyp;
Das hat aber wiederum Vor- und Nachteile.

Vorteil : mit
Code:
FillChar (Spielvar,0,sizeof (SpielVar));
kannst Du auf einen Schlag alles auf Null, Leerzeichen und boolean auf false setzen, Du kannst nichts vergessen.

Nachteil : 1. Alles was <> 0 ist, z.B. true muß trotzdem von Hand auf einen Wert gesetzt werden. 2. Statt
Code:
punkte := 0
mußt Du dann schreiben :
Code:
SpielVar.punkte := 0;
also mehr Schreibarbeit. Letzteres kannst Du dir aber durch WITH fast sparen.

Ich habe das so noch nicht selber gemacht, aber bei Deiner Sache könnte eine solche Vorgehensweise durchaus Sinn machen. Trotzdem würde auch ich das ganze trotzdem in eine Prozedur packen,z.B.:
Code:
PROCEDURE SpielNeu;
  BEGIN
    FillChar (Spielvar,0,sizeof (SpielVar));
    WITH Spielvar DO BEGIN  // von 0 abweichende Werte setzen
      Level1 := 500;
      Leveel2 := 1000;
....
    END;
  END;
Gruß
Hansa
  Mit Zitat antworten Zitat
Helmut

Registriert seit: 22. Nov 2002
64 Beiträge
 
#7
  Alt 30. Jan 2003, 10:53
Hi Hansa,

deine Idee klingt echt gut, aber das ist wie du schon sagst noch mehr Arbeit, alle variablen umzubenennen.
Mein Spiel ist nun schon fertig, und ich müsste dann ja dne kompletten quelltext neuschreiben (bzw. alle variablennamen ändern). Also komtm das nicht in frage

Wenn es keine möglichkeit gibt (und sos cheint es ja...) dann mach ich das halt mit der normalen < alle-variablen-und-einstellungen-zurücksetzen >-methode. Zumindest weiss ich jetzt das es wohl nix gibt was mir das erleichtert.

Danke für eure Hilfe! Noch ein Paar sachen und das programm ist endlich fertig

[edit]

achja, nur um das nochmal zu sagen:

die ganze sache dreht sich zwar hauptsächlich um variablen zurücksetzen, aber auch andere sachen. Zum beispiel werden komponenten verscjoben, sichtbar/unsichtbar gemacht, enabled/disabled. Bilder werdne in timages geladen. Naja, und die abstürtze kommen halt wenn zum beispiel irgendetwas geladen/angezeigt wird was in dem zustand der komponente nicht möglich ist. Zum beispiel eine Form in den vordergrund holen die im moment disabled ist.
Hört sich eigentlich ganz einfach an das alles wieder zurückzustellen... aber irgendwie ist es das ganz und garnicht
Ich hab mind. 120 variablen, 9 forms und hunderte komponenten auf diesen die fast alle während des spiels verändert werden...

[/edit]
  Mit Zitat antworten Zitat
e-dancer

Registriert seit: 21. Feb 2003
28 Beiträge
 
Delphi 6 Personal
 
#8
  Alt 21. Feb 2003, 23:48
with spielvar do begin
.x
.y
.dsfdf
.dfdfdf
//und alle anderen variablen
end;

so ist es nicht mehr schreibarbeit!!
  Mit Zitat antworten Zitat
Haegar

Registriert seit: 10. Dez 2002
Ort: Peitz
319 Beiträge
 
Delphi 7 Professional
 
#9
  Alt 21. Feb 2003, 23:53
darf man fragen um was für ein spiel es sich denn handelt!?

gruß haegar
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10
  Alt 21. Feb 2003, 23:55
Zitat von Helmut:
Ich hab mind. 120 variablen, 9 forms und hunderte komponenten auf diesen die fast alle während des spiels verändert werden...
Tja, da würde ich sagen schlecht geplant. Bist du gar nicht am Anfang auf die Idee gekommen, dass man auch mal wieder von vorne anfagen wollen könnte?
Michael
Ein Teil meines Codes würde euch verunsichern.
  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 12:48 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