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 :wink:

Verfasst: 12.06.2009 20:31
von ts-soft
Das brauchste nicht feststellen, das weißt Du :mrgreen: ,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.

.............. :mrgreen:

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 ???
:allright:
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