|
Globale Variablen bei Delphi Warum geht das nicht?
|
|
 19 Apr 2007, 12:49
|

3. Schein   
Punkte: 256
seit: 18.07.2006
|
Bevor ich hier mit der Schilderung meines Problems beginne, möchte ich höflichst darauf hinweisen, dass ich ein zartes Gemüt besitze. Aus diesem Grunde bitte ich euch, mich nicht aufgrund der von mir verwendeten Programmiersprache auszulachen und auszubuhen Es handelt sich um Delphi 6 *duck* Na ja, schien mir an geeignetsten für mein Vorhaben: Die Programmierung eines kurzweiligen Eroberungsspiel. Und so. Nach stundenlanger Vorbereitung und Skizzierung des Programmablaufs fing ich mit der Programmierung an. Meine Idee war, das Spiel in Runden zu gestalten, wobei jede Runde für ein Jahr steht. Das Jahr ist in "9 Forms" unterteilt, d.h. z.b. in Form 3 wird die Steuerhöhe bestimmt, dann schliesst sich Form 3 und Form 4 öffnet sich, in dem es um das Miliär geht usw... Schliesst man jedoch ein Form(ular), werden die Variablen nicht in das nächste Form(ular) übernommen, was ziemlich doof ist, da zum Beispiel Geld in jedem Formular benötigt wird. Und Lust jede Variable in einer Textdatei zu speichern hab ich auch nicht, zuviel Schreibkram. Also muss ich globale Variablen benutzen, hab ich auch versucht, nur funzt der Mist nicht so wie ich will. Also ich will folgendes: In Form 1 (Unit 1) eine globale Variable deklarieren, und sie mit einem Wert belegen. Anschliessend will ich Form 1 schliessen, Form 2 (Unit 2) öffnen, und es soll mir in diesem Form 2 die implementierte globale Variable aus Form 1 anzeigen. Klingt an sich simpel, aber es will einfach nicht funktionieren!!!! Danke für die Hilfe. //edit: Wer mir bei der Lösung meines Problems hilft, bekommt das irgendwann fertige Spiel statt für 49.99 Euro im Saturn umsonst Dieser Beitrag wurde von Bilderguckn: 19 Apr 2007, 12:51 bearbeitet
--------------------
"Wir haben keinen großen Krieg, keine große Depression. Unser großer Krieg ist ein spiritueller, unsere große Depression ist unser Leben."
|
|
|
Antworten
|
|
 19 Apr 2007, 19:17
|

3. Schein   
Punkte: 256
seit: 18.07.2006
|
Yocheckit und tingel, wo ich die Variablen deklarieren muss, ist mir klar. Nur wird die Variable komischerweise in einem anderen Unit nicht benutzt. Ich hab mal gegoogelt, und da stand irgendwas von "unit einbinden". Hab ich getan,aber hm... Folgender Aufbau: Ich hab ein Formular 1 , auf dem sich ein Editfeld 1 befindet, in das ich meinen Namen eingebe. Klicke ich nun auf Button 1, so wird das Editfeld 1 in der Variable "name" gespeichert und es schliesst Formular 1. Formular 2 öffnet sich. Jetzt müsste theoretisch die Variable "name" in Label 1 auf Formular 2 geschrieben werden. Tut es aber nicht. Ich wette, es ist ein saudummer Fehler, und wenn ich drauf komme, fällt es mir wie Schuppen von den Augen und ich erschiesse mich am nächsten Baum. Hier die Unit1 Zitat unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm) Edit1: TEdit; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1; name: string; // globale String-Variable
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); begin name := edit1.text; // Variable wird ein Wert zugewiesen
form1.Hide; form2.show; end;
end.
Und hier Unit2 Zitat unit Unit2;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm2 = class(TForm) Label1: TLabel; procedure FormShow(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.FormShow(Sender: TObject); begin label1.Caption := name; // Label1 aus Form2 soll in Unit1 deklarierte globale Variable anzeigen end;
end.
Wo ist der Fehler? Tingel, natürlich könnte ich die Objekte in ein Formular packen und über die Units manipulieren, aber das ist immenser Schreibkram,und darauf hab ich keine Lust Dieser Beitrag wurde von Bilderguckn: 19 Apr 2007, 19:30 bearbeitet
|
|
|
|
|
 19 Apr 2007, 20:24
|

tangel       
Punkte: 1038
seit: 18.01.2005
|
Zitat(Bilderguckn @ 19 Apr 2007, 19:17) Tingel, natürlich könnte ich die Objekte in ein Formular packen und über die Units manipulieren, aber das ist immenser Schreibkram,und darauf hab ich keine Lust  Machst du das Ganze, um Programmieren zu lernen? Dann wäre deine Herangehensweise lediglich dazu geeignet, zu lernen, daß sowas ganz schnell unübersichtlich und nervig wird. Darüber hinaus wird sich dein Programm schnell "funky" verhalten. Schon dein Kommentar, die Objekte in ein Formular zu packen verrät die Denkweise, die dahinter steckt  Google mal nach Model View Controller, da wirst du so einiges finden und mußt nicht alles auf die harte Tour lernen.
|
|
|
|
|
 19 Apr 2007, 20:34
|

3. Schein   
Punkte: 256
seit: 18.07.2006
|
Zitat(tingel @ 19 Apr 2007, 20:24) Machst du das Ganze, um Programmieren zu lernen? Dann wäre deine Herangehensweise lediglich dazu geeignet, zu lernen, daß sowas ganz schnell unübersichtlich und nervig wird. Darüber hinaus wird sich dein Programm schnell "funky" verhalten. Schon dein Kommentar, die Objekte in ein Formular zu packen verrät die Denkweise, die dahinter steckt  Google mal nach Model View Controller, da wirst du so einiges finden und mußt nicht alles auf die harte Tour lernen.  Ich meinte nicht,alles in EIN Formular packen, sondern eher alles in viele Formulare packen. Und Programmieren lernen will ich auch nicht, sondern nur mit meinen begrenzten Fähigkeiten ein Spiel basteln. Und alles was ich wissen wollte, ist wie ich eine Variable aus Unit1 auch in Unit2 benutzen kann  Ob das unübersichtlich oder "funky" ist, bleibt mein Problem. Noch vor 4-5 Jahren hab ich Delphi ganz gut beherrscht, allerdings hab ich es erst neulich wieder hervorgekramt und dabei leider festgestellt, dass ich viel vergessen und verlernt hab
|
|
|
1 Nutzer liest/lesen dieses Thema (1 Gäste)
0 Mitglieder:
|