Objekt -> Speicheradresse -> Objekt

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

Ratchet

Betreff: Objekt -> Speicheradresse -> Objekt

BeitragMi, Feb 21, 2007 11:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich kann mir ja mit Object.ToString() die Speicheradresse des Objekts als Hex-Code ausgeben lassen. Ist es irgendwie möglich mit diesem Hex-String wieder auf das Objekt zuzugreifen? Theoretisch müsste ich doch den Hex-Wert nur in einen Integer umwandeln, auf diese Adresse zugreifen und dann mit dem entsprechenden Objekttypen Typecasten; aber wie?
[iMac 27"] [3,4GHz Intel Core i5 ] [8GB Ram] [NVIDIA GeForce GTX 775M 2GB] [MacOS X Yosemite] [BlitzMax + MaxGui] [Monkey X Pro]

BtbN

BeitragMi, Feb 21, 2007 14:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, ist es. Über HandleToObject/HandleFromObject:

Code: [AUSKLAPPEN]
Global obj:TImage=CreateImage(10,10)
Print obj.toString()
Print Int(obj.toString().Replace("0x","$"))

Global pt:Byte Ptr = Byte Ptr(obj.toString().Replace("0x","$").toInt())

Local tmp:Int = HandleFromObject(obj)
Global obj2:TImage = TImage(HandleToObject(tmp))
Release(tmp)


If obj2 = obj Then Print "Juhu!"

End


Ps:
Wahlweise kann die zeile
Code: [AUSKLAPPEN]
Global pt:Byte Ptr = Byte Ptr(obj.toString().Replace("0x","$").toInt())
auch durch
Code: [AUSKLAPPEN]
Global pt:Byte Ptr = Varptr obj
ersetzt werden. Wink

Ratchet

BeitragMi, Feb 21, 2007 16:03
Antworten mit Zitat
Benutzer-Profile anzeigen
HandleFromObject und HandleToObject hab ich gesucht. Mir war doch so als würde es da was geben. Dankeschön!
[iMac 27"] [3,4GHz Intel Core i5 ] [8GB Ram] [NVIDIA GeForce GTX 775M 2GB] [MacOS X Yosemite] [BlitzMax + MaxGui] [Monkey X Pro]

BtbN

BeitragMi, Feb 21, 2007 16:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Aber immer schön ans release denken.
Und bedenke auch: Das ist eine SEHR unschöne lösung. Es wäre problemlos möglich, einen poiner in ein Type-Handle umzuwandeln. Aber da stellt sich BMax (noch?) quer.
eine lösung dafür wäre eventuell eine mini-C-Funktion:

Code: [AUSKLAPPEN]
void* byte_ptr_to_object(void* in) {return in;}


Wenn ich das richtig denke, könnte man dieser funktion in BMax als eingabe-type Byte Ptr geben, und als rückgabe-Type Object. Damit wäre das Problem dann behoben.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group