Type-Verschachtelung

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Siri Tachi

Betreff: Type-Verschachtelung

BeitragSa, Aug 28, 2010 19:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Erst einmal Hallo an alle in diesem Forum!

Ich will nicht sagen, dass ich ein völliger Noob in Sachen programmieren bin. Habe vor ca. einem Jahr auch schon mal mit BB beschäftigt, aber mein Interesse hatte sich damals einer anderen Programmiersprache zugewandt. Doch nun bin ich zurückgekehrt und stehe direkt vor einem Problem, dass ich eigentlich nicht gewohnt bin.

Also, meine Frage ist Die:
Kann man einen Type in einem anderen Type benutzen?

Beispiel:
BlitzBasic: [AUSKLAPPEN]

Type nr1
Field Name$
Field anderesType
End Type

Type nr2
Field Name2$
End Type

Type1.nr1 = New nr1
Type2.nr2 = New nr2
Type1\Name = "Hallo"
Type2\Name2 = "Welt"
Type1\anderesType = Type1



Bei mir kommt der Fehler:

"Variable type missmatch"

Kann man das umgehen?
Wenn ja, wie?
Ich bin nicht verrückt. Ich teste nur die Nervenbelastung meine Mitmenschen.

Tennisball

BeitragSa, Aug 28, 2010 19:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

Code: [AUSKLAPPEN]
Type bla
field x
field y.blubb
end type

type blubb
field z
end type

w.blubb = new blubb
q.bla = new bla
q\y= w


mfg,
Tennisball

mpmxyz

BeitragSa, Aug 28, 2010 19:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Du gibst den Typ wie bei den Variablen an:
BlitzBasic: [AUSKLAPPEN]
Type nr1
Field Name$
Field anderesType.nr2
End Type

Type nr2
Field Name2$
End Type

Type1.nr1 = New nr1
Type2.nr2 = New nr2
Type1\Name = "Hallo"
Type2\Name2 = "Welt"
Type1\anderesType = Type1

mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer

Siri Tachi

BeitragSa, Aug 28, 2010 20:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für die schnellen Antworten (Geht echt fix hier Wink )

Habe mir die Beispiele zur Hand genommen und direkt erweitert:

BlitzBasic: [AUSKLAPPEN]

Type nr1
Field a.nr2
End Type

Type nr2
Field b.nr3
End Type

Type nr3
Field c$
End Type

Type1.nr1 = New nr1
Type2.nr2 = New nr2
Type3.nr3 = New nr3

Type3\c = "Hallo Welt"
Type2\b = Type3
Type1\a = Type2


Nun kommt:

"Illegial type conversion"

Was tun???
Ich bin nicht verrückt. Ich teste nur die Nervenbelastung meine Mitmenschen.

mpmxyz

BeitragSa, Aug 28, 2010 20:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei mir läuft das.
Hast du einen Teil des Codes vergessen gehabt?
mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer

Siri Tachi

BeitragSa, Aug 28, 2010 20:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab hier nur ein Beispiel für meinen Code genommen.

BlitzBasic: [AUSKLAPPEN]

ship1.Ship = New Ship
ship1\Name = "Exekutor"
ship1\Klasse = "Kreuzer"
ship1\Typ = "Supersternenzersörer"
ship1\light = bank1

waffe1.Weapon = New Weapon
waffe1\Name = "Turbolaser"
waffe1\Typ = "Laser"
waffe1\Size = "Light"
waffe1\Health = 30
waffe1\Damage = 10

bank1.LightLevel1 = New LightLevel1
bank1\waffe = waffe1

Type Ship

Field Name$
Field Klasse$
Field Typ$
Field Health$
Field light.LightLevel1

End Type

Type LightLevel1

Field waffe.Weapon

End Type

Type Weapon

Field Name$
Field Typ$
Field Size$
Field Health%
Field Damage%

End Type


Könnte es sein, dass es irgendwie an den anderen Feldern liegen könnte, die ich definiert habe?
Ich bin nicht verrückt. Ich teste nur die Nervenbelastung meine Mitmenschen.

Tennisball

BeitragSa, Aug 28, 2010 20:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
waffe1.Weapon = New Weapon
waffe1\Name = "Turbolaser"
waffe1\Typ = "Laser"
waffe1\Size = "Light"
waffe1\Health = 30
waffe1\Damage = 10

bank1.LightLevel1 = New LightLevel1
bank1\waffe = waffe1

ship1.Ship = New Ship
ship1\Name = "Exekutor"
ship1\Klasse = "Kreuzer"
ship1\Typ = "Supersternenzersörer"
ship1\light = bank1


Deine Reihenfolge war falsch.

Er weiss ja nicht was "bank1" ist, bevor du es definiert hast. So wie du es hattest dachte er, bank1 wäre ein Integer, was es aber nicht ist (sein darf).

Siri Tachi

BeitragSa, Aug 28, 2010 20:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh, Danke.

*im Boden verschwind*

Kann man auch einem Feld variabel einem Type zuordnen?
Ich bin nicht verrückt. Ich teste nur die Nervenbelastung meine Mitmenschen.

Tennisball

BeitragSa, Aug 28, 2010 21:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Meinst du, dass ein Field mal vom Typ A (.a) und mal vom Typ B (.b) ist?
Das geht so weit ich weiß nicht.

Xeres

Moderator

BeitragSa, Aug 28, 2010 21:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Man könnte mit Handle und Object arbeiten.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Siri Tachi

BeitragSo, Aug 29, 2010 13:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Jetzt habe ich erst einmal ein Beispielkonstrukt mit Object und Handle aufgebaut:

BlitzBasic: [AUSKLAPPEN]

Type ship
Field x.weapon
End Type

Type weapon
Field Name
End Type

Function CreateWindow()

obj.weapon = New weapon
obj\Name = "Hallo Welt"
Return Handle(obj)

End Function

wea1 = CreateWindow()
wea2 = CreateWindow()
ship1.ship = New ship
ship1\x.weapon = Object.weapon(wea1)
Print ship1\x\Name
ship1\x.weapon = Object.weapon(wea2)
Print ship1\x\Name
WaitKey()
End


So weit, so gut.
Ausführen klappt, allerdings wird bei mir nur zwei Nullen als Ausgabe erzeugt.
Woran könnte das liegen?
Ich bin nicht verrückt. Ich teste nur die Nervenbelastung meine Mitmenschen.

mpmxyz

BeitragSo, Aug 29, 2010 13:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Feld "Name" hat den Typ Integer. (ganze Zahlen)
Du weist ihm einen String zu.
Da dieser keine Zahl ist, kommt bei der Umwandlung 0 heraus.
Lösung: Mache "Name" zum String. ("$" an dem Namen heranhängen)
mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer
  • Zuletzt bearbeitet von mpmxyz am So, Aug 29, 2010 13:46, insgesamt einmal bearbeitet

Xeres

Moderator

BeitragSo, Aug 29, 2010 13:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Klar, solange Name nicht als String deklariert ist...
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group