Seite 1 von 1
Typ einer Variablen feststellen
Verfasst: 12.06.2009 20:21
von chris_bdnsee
Hallo,
gibt es eine Möglichkeit in PB den Typ einer PB Variablen festzustellen ?
Ich denke gerade über einen generischen Ansatz nach um ein ListIcon Gadget mit Daten zu füllen - und da wäre es sehr praktisch wenn ich über den Typ der Variablen die Stringkonvertierung anstossen könnte.
Bin für jeden Schubs in die richtige Richtung dankbar...
Gruß vom Bodensee
Christian
Verfasst: 12.06.2009 20:24
von STARGÅTE
Code: Alles auswählen
Byte.b ; Ich bin ein Byte
Long.l ; Ich bin eine Long
String.s ; Ich bin ein String
Verfasst: 12.06.2009 20:30
von chris_bdnsee
Hmm - und wie kann ich nun in PB feststellen daß die Vaiable byte ein Typ byte ist und der string eine Variable vom Typ String ist ?
So ähnlich wie IsDatabase.....
Gruß vom Bodensee
Christian

Verfasst: 12.06.2009 20:31
von ts-soft
Das brauchste nicht feststellen, das weißt Du

,zumindest wenn
Du der Programmierer bist, sollte es so sein.
Verfasst: 12.06.2009 20:41
von chris_bdnsee
Wissen ist gut Kontrolle ist besser....
Nee, mal im Ernst - folgender Ansatz:
Die Daten werden aus der Datenbank in eine Structure eingelesen.
Nun kann ich natürlich bei jeder Anwendung mit unterschiedlichen Structures von Hand die Konvertierung anstoßen oder eben über den Typ der Variablen das ganze ohne Aufwand betreiben.
..............
Gruß vom Bodensee
Christian
Verfasst: 12.06.2009 20:47
von gekkonier
Vielleicht kommst du mit DatabaseColumnType(#Datenbank, Spalte)
weiter?

Verfasst: 12.06.2009 20:54
von DarkDragon
PureBasic hat nur festgelegte Typen. Wenn du mit Strukturen arbeitest kannst du sowas hier machen:
Code: Alles auswählen
Enumeration
#TYPE_BYTE
#TYPE_LONG
; ... alle Typen halt
EndEnumeration
Structure StructName
StructureUnion
b.b
l.l
; ... alle Typen halt
EndStructureUnion
type.l
EndStructure
Procedure Test(*variable.StructName)
Select *variable\type
Case #TYPE_BYTE
Debug "Typ: Byte"
Debug "Wert: " + Str(*variable\b)
Case #TYPE_LONG
Debug "Typ: Long"
Debug "Wert: " + Str(*variable\l)
; ... alle Typen halt
Default
Debug "Unbekannter typ?"
EndSelect
EndProcedure
a.StructName
b.StructName
a\b = 30 ; Wir nutzen byte
a\type = #TYPE_BYTE
b\l = 10004 ; Wir nutzen long
b\type = #TYPE_LONG
Test(@a)
Test(@b)
Aber wenn die Datenbank das mit einem unbekannten Typ liefert, dann geht sowas nicht, es sei denn das von gekkonier funktioniert, was ich stark vermute.
P.S.: Gruß zurück vom Bodensee

.
Verfasst: 12.06.2009 20:55
von chris_bdnsee
Danke - für db ist das kein Problem - gibt's sowas auch für die Variablen ???
Wenn nicht dann ist wohl der Weg über den DatabaseColumnType die einzige Möglichkeit.......
Gruß vom Bodensee
Christian
Verfasst: 12.06.2009 21:00
von chris_bdnsee
Hallo DarkDragon,
Herzlichen Dank für Deine Antwort - noch versteh' ichs zwar nicht aber werde' mirs über Wochenende reinziehen......
Gruß vom Bodensee
Christian