[GELÖST] Was beinhaltet der Datentyp "Object"?

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

 

CO2

ehemals "SirMO"

Betreff: [GELÖST] Was beinhaltet der Datentyp "Object"?

BeitragDo, Dez 29, 2011 0:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
Ich habe da mal eine Frage:
Was beinhaltet der Datentyp "Object"? Werden da dann Type-Einträge erwartet? Oder wie sieht das aus?
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti
  • Zuletzt bearbeitet von CO2 am Do, Dez 29, 2011 1:43, insgesamt einmal bearbeitet

Xeres

Moderator

BeitragDo, Dez 29, 2011 0:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Jeder Type (und Strings) ist ein Object. Aus einem Object kann man den eigentlichen Type zurück casten. Ginge das nicht, müsste man z.B. Listen für jeden einzelnen Type neu schreiben.
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)

Holzchopf

Meisterpacker

BeitragDo, Dez 29, 2011 0:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Eine Variable des Typs Object kann alles ausser Byte, Short, Int, Long, Float und Double aufnehmen.

Ist also ganz praktisch, wenn du mal ein beliebiges Objekt in einem Type-Feld speichern willst (z.B. bei Linked Lists). Oder wenn du eine Lade-Funktion schreiben willst, die als Argument sowohl ein Dateipfad (auch Strings sind Objekte) oder ein Stream-Handle (TStream - du ahnst es - ist ebenfalls ein Objekt) entgegennimmt.

mfG
Holzchopf
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm
 

CO2

ehemals "SirMO"

BeitragDo, Dez 29, 2011 1:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok,

Ich bräuchte das für einen von mir erstellten Typen. Dieser Enthält 3 Felder: 1 Array und 2 Listen. Wie kann ich ihn in der Funktion Abfragen? Also so sieht momentan mein Code aus: BlitzMax: [AUSKLAPPEN]
Type TMapComponents
Field TileMap:Int[,]
Field CollisionMap:TList
Field ActionMap:TList
End Type

Function UpdateTileMap(TileMapData:Object)

End Function

Was muss ich in der Funktion schreiben um auf die Felder im Typ zugreifen zu können? Also muss ich dann immer z.b. "Feldwert:int = TileMapData.TileMap[3, 1]" schreiben oder wie spreche ich den Typen an? (Sorry, weiß gerade nicht wie ich es besser erklären soll Embarassed )

mfG,
CO2
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

Xeres

Moderator

BeitragDo, Dez 29, 2011 1:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Richtig casten:
BlitzMax: [AUSKLAPPEN]
Function UpdateTileMap(TileMapData:Object)
Local ThisMap:TMapComponents = TMapComponents(TileMapData)
If ThisMap <> Null Then
'[Wenn das Object ein TMapComponents ist, funktioniert der Cast und ThisMap ist nicht Null]
End Function
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)
 

CO2

ehemals "SirMO"

BeitragDo, Dez 29, 2011 1:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Achso, Und in der If-Abzweigung kann ich dann via "ThisMap.[BlaBla]" auf die "Feldwerte" zugreifen oder wie?
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

Xeres

Moderator

BeitragDo, Dez 29, 2011 1:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Da die Variable dann ein gültiges Objekt enthält, kannst du es ganz wie jedes andere diesen Typs benutzen.
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)

klin

BeitragDo, Dez 29, 2011 1:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich schreibe dir hier mal 2 Beispiele rein, wie man Objekte verwenden könnte.


BlitzMax: [AUSKLAPPEN]
Type TMapComponents
Field TileMap:Int[,]
Field CollisionMap:TList
Field ActionMap:TList
End Type

Function UpdateTileMap(TileMapData:Object,x:Int,y:Int)
'Überprüfen, ob das Objekt existiert / es ein TMapComponents ist.
If TMapComponents(TileMapData)=Null Then Return
Local blah:TMapComponents=TMapComponents(TileMapData)
WriteStdout("-> TileMap ["+x+","+y+"] = "+blah.TileMap[x,y]+"~n")
End Function


Du kannst jede Type-Art (außer die Ausnahmen) in einem "globalen" Objekt sichern (weil es auch eigentlich Objekte sind).

BlitzMax: [AUSKLAPPEN]

Type Ta
Field vari:Int
End Type

Type Tb
Field vari:Int
End Type

Local a:Ta=New Ta
a.vari=1234
Local b:Object=Object(a)

'Überprüfen, ob es nun 'Ta' oder 'Tb' ist:

If Ta(b) Then
WriteStdout("Es ist Ta!!~n->"+Ta(b).vari+"~n")
Else
WriteStdout("Es ist nicht Ta =(~n")
EndIf


Hoffe es hilft dir etwas weiter Wink

Klin
 

CO2

ehemals "SirMO"

BeitragDo, Dez 29, 2011 1:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Achso.

Ich bedanke mich bei allen die halfen! Problem gelöst.
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group