[Gelöst] Type in einem Type registrieren

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

uiwhee

Betreff: [Gelöst] Type in einem Type registrieren

BeitragSo, Nov 29, 2009 9:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Guten Morgen,

nach langem stillschweigendem Mitlesens hier im Forum endlich mein erster Post. Wohee!
Nun zu meinem Problem :
Ich suche nach einer Möglichkeit ein Type-Eintrag in einem anderen Type zu registrieren, damit ich später mit einer Schleife auf verschiedene Types zugreifen kann.
Damit das ganze nicht nur unverständlicher Kauderwelsch bleibt, hier das ganze nochmal als Wunschcode ausgedrückt.

Code: [AUSKLAPPEN]

type katze
   field a$
   field geblubber_was_katzen_spezifisch_ist
end type

type huhn
   field a$
   field noch_mehr_geblubber_was_huhn_spezifisch_ist
end type

type tiere
   field register
end type

k.katze = new katze
k\a$ = "Katze"

t.tiere = new tiere
t\register = k.katze

h.huhn = new huhn
h\a$ = "Huhn"

t.tiere = new tiere
t\register = h.huhn

;(...)

for t.tiere = each tiere
   text 50,50,t\registriert\a$,1,1
next

;(...)


Das ganze funktioniert ja leider nicht. Nach konsultierung der Onlinehilfe kam ich auf die Befehle Object und Handle. Nur leider bringen die beiden mich auch nicht wirklich weiter. Ich habe versucht das Handle der jeweiligen Types in dem "Registriertype" zu speichern und später irgendwie aufzurufen. Nur komm ich nicht ganz dahinter wie ich das anstellen kann.
Auch Google hat mir leider nicht geholfen.
Deswegen versuche ich es mal hier. Vielen Dank schonmal für eventuelle Lösungsansätze Smile

uiwhee
  • Zuletzt bearbeitet von uiwhee am So, Nov 29, 2009 18:55, insgesamt einmal bearbeitet

Eingeproggt

BeitragSo, Nov 29, 2009 9:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Oke... Also meine Lösung wäre ja folgende:

Code: [AUSKLAPPEN]
Type tier
  Field name$
  Field huhn.huhn
  Field katze.katze
End Type

Type huhn
  Field zeugs_was_huhn_spezifisch_ist
End Type

Type katzen
  Field zeugs_was_katze_spezifisch_ist
End Type

Local tier.tier=New tier
tier\name$="Mauzi"
tier\katze=New katze
tier\katze\...=...


Wenn du nun mit for-each alle tiere durchgehst kannst du abfragen ob tier\huhn<>Null oder tier\katze<>Null und dementsprechend handeln.


Eine andere Lösung die mir einfällt wenn ich mir deine Methode so ansehe ist über Handle zu bewerkstelligen.
Du speicherst in deinem Code in tier\register das Handle von katze oder huhn oder was auch immer.
Und beim Auslesen versuchst du mittels Object wieder Types daraus zu machen und vergleichst diese auf <>Null um festzustellen welche Tierart du da gerade hast, eetwa so:

Code: [AUSKLAPPEN]
for t.tiere = each tiere
  katze.katze=Object.katze(t\register)
  if katze<>Null Then
    Text 50,50,"Das is ne Katze!",1,1
  Endif
  huhn.huhn=Object.huhn(t\register)
  If huhn<>Null Then
    Text 50,50,"Das is n Huhn!",1,1
  Endif
next


Viel Erfolg und auf dass du das Richtige machst Smile
Christoph.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

uiwhee

BeitragSo, Nov 29, 2009 18:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Eingeproggt,

danke dir für die hilfreiche Antwort.
Das heißt also, dass Typeeinträge, egal aus welchem Type, nie die gleiche Handle ID haben? Das ist ja praktisch Smile Ich dachte bisher, dass diese ID für jeden Type seperat durchnummeriert wird.
So sollte das Ganze klappen. Problem gelöst.

uiwhee

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group