Pointer, mal wieder..
Übersicht

![]() |
MoepBetreff: Pointer, mal wieder.. |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo
hab mal wieder ein problem mit pointern. Kann es sein , dass BlitzMax keine string Pointer kennt? Code: [AUSKLAPPEN] str$="Hallo"
strPtr:String Ptr=VarPtr(str) '----> illegal pointertype '--------------------------------------------------------------------' objPtr:Object Ptr=VarPtr(irgendEinObjekt) '----------> das selbe Ich hoffe ihr könnt mir da weiterhelfen.Ich versuche das schon den ganzen Tag zu lösen. mfg Moep |
||
Hardstyle Schleichwerbung:
http://www.youtube.com/user/Hackepeter42 Achtung: Suchtgefahr! moep123.ohost.de |
real76 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Soweit mir gekannt ist, wurden String Pointer aus Blitzmax entfernt.
Hast Du mal einen einfachen Int Ptr versucht? Die werden auf alle Faelle noch unterstuetzt. Code: [AUSKLAPPEN] MyInt:Int=15
MyIntPtr:Int Ptr=VarPtr(MyInt) Gruss |
||
![]() |
Moep |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die 'zahlen'-pointer funzen ja auch(byte,int,float,double).
Aber ich brauch eben ein String Pointer. Trotzdem Thx mdg MoeP |
||
Hardstyle Schleichwerbung:
http://www.youtube.com/user/Hackepeter42 Achtung: Suchtgefahr! moep123.ohost.de |
![]() |
BtbN |
![]() Antworten mit Zitat ![]() |
---|---|---|
Warum willst du nen pointer auf nen String?
Ich glaube, das was du vor hast, kann man auch besser lösen. Was hast du vor? |
||
![]() |
Moep |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Type TVar
Field v:Int*string* Ptr ------------------> da will ich nen string pointer Field name$ Function Create:TVar(name$,val*$* Var) va:TVar=New TVar va.name=name va.v=Varptr(val) Return va End Function Method Get*$*() Return v[0] End Method Method Set(val*$*) v[0]=val End Method End Type mfg MoeP |
||
Hardstyle Schleichwerbung:
http://www.youtube.com/user/Hackepeter42 Achtung: Suchtgefahr! moep123.ohost.de |
![]() |
BtbN |
![]() Antworten mit Zitat ![]() |
---|---|---|
Was willst du damit erreichen?
Ich sehe dadrin keinerlei sinn. Und was bedeuten diese *$*? |
||
#ReaperNewsposter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Damit meint er sicherlicht, dass dort die Strings sein sollen | ||
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7 |
![]() |
BtbN |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Type TVar
Field v:String Field name:String Function Create:TVar(name:String,val:String) Local va:TVar=New TVar va.name=name va.v = val Return va End Function Method Get:String() Return v End Method Method Set(val:String) v = val End Method EndType Wo ist da jetzt das Problem? |
||
![]() |
Moep |
![]() Antworten mit Zitat ![]() |
---|---|---|
v soll sich mit der variable verändern.
Und mit den sternen meine ich , dass ich da strings haben will,funzt ja aber nicht. Das ganze ist für ne kleine scriptengine. z.b. Code: [AUSKLAPPEN] Local eineVariable$="Hallo"
local ScriptVariable:TVar=TVar.Create("eineVariable",eineVariable) Print eineVariable '---> ausgabe:Hallo Print ScriptVariable.Get() '----->ausgabe:Hallo eineVariable="Tschüss" Print ScriptVariable.Get() '----->ausgabe:Tschüss '---------------------und andersrum auch--------------------------- Print eineVariable '---> ausgabe:Hallo Print ScriptVariable.Get() '----->ausgabe:Hallo ScriptVariable.Set("Tschüss") Print eineVariable'----->ausgabe:Tschüss Ich hoffe ihr versteht einigermaßen was ich will^^. mfg MoeP |
||
Hardstyle Schleichwerbung:
http://www.youtube.com/user/Hackepeter42 Achtung: Suchtgefahr! moep123.ohost.de |
![]() |
FOODy |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zwar etwas umständlich aber so geht das:
(Bei mir zumindest ![]() Code: [AUSKLAPPEN] Framework BRL.StandardIO
Type TVar Field data:Byte Ptr Field name:String Method Set(value:String) MemCopy data,Varptr(value),4 EndMethod Method Get:String() Local tmp:String MemCopy Varptr(tmp),data,4 Return tmp EndMethod Function Create:TVar(value:String Var) Local v:TVar=New TVar v.data=Varptr(value) Return v EndFunction EndType Local str:String="Ich bin ein String" Local vari:TVar=TVar.Create(str) Print vari.Get() str="hmmm" Print vari.Get() vari.Set("Teeeeest") Print str Gruß, FOODy |
||
BlitzMax + MaxGUI, 64-bit Arch Linux: Intel Core² E8500 | 8 GB Ram | GeForce GTX 460 · 1024 MB |
![]() |
Moep |
![]() Antworten mit Zitat ![]() |
---|---|---|
Großes danke.
Ich kapier den code zwar im moment nicht aber das wird schon noch ![]() mfg MoeP |
||
Hardstyle Schleichwerbung:
http://www.youtube.com/user/Hackepeter42 Achtung: Suchtgefahr! moep123.ohost.de |
![]() |
FOODy |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich verstehe das so:
Da Strings ja im prinzip auch "Types" sind, beinhalten die Variablen die Referenz zur String Instance. Und diese kopiere ich dann einfach von einer Variable in die andere. Deshalb wird beim "Lesevorgang" eine "tmp" Variable benötigt, da Stringinstancen die Sonderheit haben bei Änderungen (weiß nicht genau ob bei jeder, nehm aber mal an das es nur dann geschieht wenn auf eine Stringinstanz mehr als eine "Speicherstelle" zeigt) sich neuzubilden, sprich eine neue Stringinstanz erzeugen und somit eine neue Referenz bilden. Ob das nun alles 100%ig korrekt ist weiß ich nicht. Hab selber ebend aus Neugier nur rumprobiert und diese "Lösung" gefunden. Gruß, FOODy |
||
BlitzMax + MaxGUI, 64-bit Arch Linux: Intel Core² E8500 | 8 GB Ram | GeForce GTX 460 · 1024 MB |
![]() |
Moep |
![]() Antworten mit Zitat ![]() |
---|---|---|
Naja jetzt versteh ich es einigermaßen.
Ich möchte euch natürlich nicht vorenthalten was ich damit mache. Durch diese klasse ist es jetzt in meiner ScriptEngine möglich variablen (in der script datei) zu erstellen und vom programm aus darauf zuzugreifen oder vom programm erstellte variablen im script zu benutzen. Thx Nochmals^^ mfg MoeP |
||
Hardstyle Schleichwerbung:
http://www.youtube.com/user/Hackepeter42 Achtung: Suchtgefahr! moep123.ohost.de |
![]() |
BtbN |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich würde dafür eher eine HashMap verwenden(BRL.Map).
Mit Pointern hab ich in BMax so die erfahrung gemacht, dass in einem von nen paar tausend fällen was schief läuft, und mist bei rum kommt. |
||
![]() |
Moep |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hatte ich auch vor.
Aber ich hab bei einer TMap keine möglichkeit gefunden die Werte der variablen zu verändern. mfg MoeP |
||
Hardstyle Schleichwerbung:
http://www.youtube.com/user/Hackepeter42 Achtung: Suchtgefahr! moep123.ohost.de |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das tut man ja auch nicht, das geht unter worse practise.
Man entfernt den wert und erzeugt in neu in einem managed environment. Werte eines strings kannst du auch nicht im string selbst ändern, das widerspricht ebenfalls good managed practise. hackansätze gibt es zwar, wird jedoch davon abgeraten wenn du nicht undebuggbare fehlresultate willst wenn du ansätze für scriptengines brauchst: MicroC, Squirrel etc module gibt es, kannst da ja reinschauen. aber vermutlich wirst du da um pures C nicht herum kommen. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Moep |
![]() Antworten mit Zitat ![]() |
---|---|---|
Soweit will ich ja nicht gehen^^.
Ich bin mit dem zu frieden was es bisher kann ![]() mfg MoeP |
||
Hardstyle Schleichwerbung:
http://www.youtube.com/user/Hackepeter42 Achtung: Suchtgefahr! moep123.ohost.de |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group