Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Zugriff auf Variable in type in type (https://www.delphipraxis.net/105557-zugriff-auf-variable-type-type.html)

Niklas- 24. Dez 2007 12:14


Zugriff auf Variable in type in type
 
Ich, als Anfänger, versuche mich gerade an einem Textadventure. Dazu möchte ich die Eigenschaften von Gegenstädnen in einem type speichern, welcher wiederum in einem type eines Raumes auftaucht:

Delphi-Quellcode:
type
  TInventar = class
    Name : String;
  end;

type
  TRaum = class
    Name : String;
    Objekte : Array[1..5] of TInventar;
  end;
[....]
var
  Form1 : TForm1;
  Keller : TRaum;
  Futter : TInventar;
Wenn ich das ganze dann erstelle und zuordne:

Delphi-Quellcode:
 
  Keller := Traum.Create;
  Keller.Name := ('Keller');
  Keller.Objekte[1] := Futter;
[....]
  Futter := TInventar.create;
  Futter.Name := 'riesen Haufen Futter';
müsste ich ja eigentlich mit
Delphi-Quellcode:
  label2.caption := Keller.Objekte[1].Name;
den Namen des Objekts (riesen Haufen Futter)ausgeben können dachte ich..

Nur Leider mag Delphi das nicht:
Zitat:

Im Projekt Project1.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse 00453B49 in Modul 'Project1.exe'. Lesen von Adresse 00000004'. Prozess wurde angehalten. Mit Einselne Anweisung oder Start fortsetzen
Und er markiert mir diese Zeile:
Delphi-Quellcode:
  label2.caption := Keller.Objekte[1].Name;
Hat da jemand eine Idee???

Danke!

Edit1: Variablen deklaration eingefügt

Apollonius 24. Dez 2007 12:20

Re: Zugriff auf Variable in type in type
 
Zu dem Zeitpunkt, an dem du Keller.Objekte[1] zuweist, ist Futter noch nil. Du musst erst Futter erstellen und dann zuweisen.

Die Erzeugung und Zerstörung von Objekten wird übrigens gewöhnlich in Konstruktor und Destruktor des übergeordneten Objekts (d.h. TRaum) geregelt.

Niklas- 24. Dez 2007 12:26

Re: Zugriff auf Variable in type in type
 
Meinst du das hier:
Delphi-Quellcode:
var
  Form1 : TForm1;
  Keller : TRaum;
  Futter : TInventar;
Das habe ich im Quellcode stehen, hatte ich nur vergessen mit zu posten, habs jetzt reineditiert

oki 24. Dez 2007 12:30

Re: Zugriff auf Variable in type in type
 
Hi,

ich nehme lieber TObjectList als Arrays. Alle nötigen Zugriffe wie Abfrage der Anzahl (Count), Entfernen einzelner Objecte usw. sind schon mit den entsprechenden Methoden versehen.

was deine Fehlermeldung betrifft, hat es Apollonius getroffen.

Gruß oki

Apollonius 24. Dez 2007 12:30

Re: Zugriff auf Variable in type in type
 
Nein, ich meine die Zuweisung. Erst Futter erstellen und initialisieren (Futter:=TInventar.Create etc.) und dann zuweisen!

oki 24. Dez 2007 12:32

Re: Zugriff auf Variable in type in type
 
so:

Delphi-Quellcode:
Keller := Traum.Create;
  Keller.Name := ('Keller');
  Futter := TInventar.create;
  Futter.Name := 'riesen Haufen Futter';
  Keller.Objekte[1] := Futter;
[....]
Gruß

Niklas- 24. Dez 2007 12:46

Re: Zugriff auf Variable in type in type
 
Danke!

Daran lags, ich hab jetzt einfach alle Create aufrufe nach oben gesetzt, dann sollte das nicht nochmal vorkommen...

Gibts irgendwo ein Tutorial wie man ein (Text-) Adventure vernünftigt und unkompliziert programmiert?? Denn ich mache im Moment einfach irgendwie und das ganze wird verdammt umfangreich und das geht doch bestimmt auch einfacher...


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:39 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