Hi!
Ich hab folgendes Problem. Ich erstelle gerade ein KLEINES Spielchen, mit mehreren Units, auf welchen jeweils eine Klasse und deren Routinen drauf sind.
Ausgangspunkt:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45:
| unit U_Main;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Buttons,U_Hero, jpeg, ComCtrls, Menus, U_Items;
type TForm1 = class(TForm) P_Intro: TPanel; L_INtro: TLabel; [...] procedure FormCreate(Sender: TObject); [...] private public end;
var Hero : THero; Trank : TItems;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject); begin Hero := THero.Create; Trank := TItems.Create; Hero.HPSpeichern(50); Hero.MaxHPSpeichern(200); Trank.PunkteSpeichern(50); end;
procedure TForm1.Button1Click(Sender: TObject); begin Trank.ItemUse; end;
end. |
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38:
| unit U_Hero;
interface
uses Messages, Dialogs, Sysutils;
type THero = class (TObject) private Lebensenergie : Integer; MaxHP : Integer; public procedure HPSpeichern(Wert : Integer); procedure MaxHPSpeichern(Wert : Integer); function HPAuslesen : Integer; end;
implementation
procedure THero.HPSpeichern(Wert : Integer); begin Lebensenergie := Wert; end;
procedure THero.MaxHPSpeichern(Wert : Integer); begin MaxHP := Wert; end;
function THero.HPAuslesen : Integer; begin Result := Lebensenergie; end;
end. |
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36:
| unit U_Items;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, Menus, ExtCtrls, StdCtrls, U_Hero;
type TItems = class (TObject) private HPReg : Integer; public procedure PunkteSpeichern(Wert : Integer); procedure ItemUse; end;
var Hero : THero;
implementation
procedure TItems.PunkteSpeichern(Wert : Integer); begin HPReg := Wert; end;
procedure TItems.ItemUse; begin Hero.HPSpeichern((Hero.HPAusgeben+HPReg)); end;
end. |
Also, ich will, dass ich vom Formular aus eine Routine aus U_Item aufrufen kann und diese Routine einen Wert in U_Hero ändert. Man sieht schon, dass das nicht funktionieren kann... ich habe aus Verzweiflung die Variable "Hero : THero" in der U_Items Unit nochmal deklariert, weil "unbekannter Bezeichner (Hero)" als Fehlermeldung kam. Jetzt kennt er zwar "Hero", aber "Hero" wird hier nicht created, also gibts nen Speicherfehler. Und WENN ich "Hero" hier create, dann ist das ein eigener "Hero", der mit dem auf dem Formuler createden nichts zu tun hat. Ich hab einfach vergessen, wie ich das alles verknüpfen muss, dass das so geht, wie ich das möchte
Hoffentlich könnt ihr mir schnell und einfach helfen, bin noch nicht so weit
Grüße!