Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Einen Datentyp zu ordnen oder so ähnlich (https://www.delphipraxis.net/78900-einen-datentyp-zu-ordnen-oder-so-aehnlich.html)

der_wuwu_depp 12. Okt 2006 20:50


Einen Datentyp zu ordnen oder so ähnlich
 
Hi,
der Titel klingt etwas komisch. Ich weiß nämlich selbst nicht so richtig, wie ich das Beschreiben soll, deswegen versuche ich es an meinem konkreten Beispiel:
Ich programmiere ein Spiel mit 18 Feldern. Es soll etwas wie das Spiel "ACTIVITY" werden. Da gibt es ja Felder mit "Pantomime", "Zeichen" und so weiter. Jetzt will ich jedes Feld in einem Array speichern, das ich z.B. Spielfelder nenne.
Doch da ist das Problem: Es gibt 3 verschiedene Typen an Feldern. Warum nicht einfach jeden Typ in ein eigenes Array packen? Weil ich dann die Felder nicht per Zahl anwählen kann z.B. Spielfelder[zahl].
Gibt es da irgendeine Möglichkeit? Die Typen sind eben selbst definierte Klassen.
Z.B. TZeichnenFeld oder TPantomimeFeld.

habt ihr mich verstnaden?

Ich hoffe es! Dann bedanke ich mich schonmal für alle Antworten.

TheAn00bis 12. Okt 2006 20:54

Re: Einen Datentyp zu ordnen oder so ähnlich
 
Wie wäre es mit "Array of TObject" oder einer TObjectList?

Da gehen alle Objekte rein.
Du musst dann nur vor dem Zugriff casten.

mkinzler 12. Okt 2006 20:54

Re: Einen Datentyp zu ordnen oder so ähnlich
 
habe die Klassen einen gemeinsamen Vorfahren? dann kannst du den Array über diese Typ machen und die verschiedenen Klassen darin speichern.

SnuffMaster23 12. Okt 2006 20:58

Re: Einen Datentyp zu ordnen oder so ähnlich
 
Wenn deine Felder Records und keine Klassen sind dann würde ich sagen mach einen Redord-Typ mit case.
Ansonsten kannst du eine KLasse z.B. TFeld machen und davon TZeichenFeld oder TPantomimeFeld ableiten.
Dann reicht ein Array vom Typ TFeld.
Das heißt man Polymorphie (glaub ich^^).

//Roter Kasten: Genau das mein ich...

messie 12. Okt 2006 21:05

Re: Einen Datentyp zu ordnen oder so ähnlich
 
So richtig viel habe ich auch nicht verstanden. Sieht für mich so aus, als wolltest Du grafische Felder auf einem Spielbrett beschreiben und denen verschiedene Bedeutungen oder Funktionen zuweisen.

Ein einfacher Vorschlag wäre, daraus ein record zu machen:
Delphi-Quellcode:
type
Spielfelder = record
  Zeichnenfeld : array[0..5] of TZeichnenFeld;
  PantomimeFeld : array[0..10] of TPantomimeFeld;
end;
TPantomimeFeld und TZeichnenfeld müßte darüber deklariert werden.
Im Code greifst Du dann über
Delphi-Quellcode:
Spielfelder.Zeichnenfeld[x]
auf Deine Felder zu, evtl. auch im Zufallsmodus.

Ist das in etwa was Du suchst?

Grüße, Messie

der_wuwu_depp 12. Okt 2006 21:09

Re: Einen Datentyp zu ordnen oder so ähnlich
 
Vielen Dank! Ich hatte schon fast keine Hoffnung :wink:
Danke!

3_of_8 12. Okt 2006 21:15

Re: Einen Datentyp zu ordnen oder so ähnlich
 
Zitat:

Zitat von mkinzler
habe die Klassen einen gemeinsamen Vorfahren? dann kannst du den Array über diese Typ machen und die verschiedenen Klassen darin speichern.

Ich will ja nichts sagen, aber alle Klassen haben einen gemeinsamen Vorfahren: TObject. Ausgenommen TObject, das ist selber ein TObject. :mrgreen:

der_wuwu_depp 12. Okt 2006 21:18

Re: Einen Datentyp zu ordnen oder so ähnlich
 
Ich muss doch nochmal nachfragen: Wie "caste" ich? :roll:

mkinzler 12. Okt 2006 21:20

Re: Einen Datentyp zu ordnen oder so ähnlich
 
Zitat:

Ich will ja nichts sagen, aber alle Klassen haben einen gemeinsamen Vorfahren: TObject. Ausgenommen TObject, das ist selber ein TObject. Mr. Green
Klar, genau so wie wir miteinander verwandt sind ;-)
Ich ahtte ad eher an eine problembezogene Superklasse gedacht, aber auf TObject kann man sich natürlich immer beziehen.
[Edit:
Zitat:

Ich muss doch nochmal nachfragen: Wie "caste" ich? Rolling Eyes
Delphi-Quellcode:
(<Objekt> as <Klasse>)
oder
Delphi-Quellcode:
<Klasse>( <Objekt>)
]

der_wuwu_depp 12. Okt 2006 21:28

Re: Einen Datentyp zu ordnen oder so ähnlich
 
Tut mir leid, aber ich hab das noch nich ganz verstanden. Mein Code sieht jetzt so aus:
Delphi-Quellcode:
var
    Spielfelder : Array [1..18] of TObject;

procedure TForm1.FormCreate(Sender: TObject);
begin
    Spielfelder[1] as TSpielfelder;
    Spielfelder[1].erstellen();
    Spielfelder[1].Titel := 'Pantomime!';
end;
TSpielfelder liegt in einer eigenen Unit.

Das ist falsch... Ich habe davon leider noch keine Ahnung, vielleicht kann mir jemand das reinschreiben?


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:38 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz