Typ einer Variablen feststellen

Anfängerfragen zum Programmieren mit PureBasic.
chris_bdnsee
Beiträge: 10
Registriert: 07.04.2009 15:44

Typ einer Variablen feststellen

Beitrag 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
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag 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
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
chris_bdnsee
Beiträge: 10
Registriert: 07.04.2009 15:44

Beitrag 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:
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Das brauchste nicht feststellen, das weißt Du :mrgreen: ,zumindest wenn
Du der Programmierer bist, sollte es so sein.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
chris_bdnsee
Beiträge: 10
Registriert: 07.04.2009 15:44

Beitrag 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
Benutzeravatar
gekkonier
Beiträge: 314
Registriert: 20.04.2007 09:06
Wohnort: Wien

Beitrag von gekkonier »

Vielleicht kommst du mit DatabaseColumnType(#Datenbank, Spalte)
weiter? ;)
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag 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 ;-) .
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
chris_bdnsee
Beiträge: 10
Registriert: 07.04.2009 15:44

Beitrag 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
chris_bdnsee
Beiträge: 10
Registriert: 07.04.2009 15:44

Beitrag 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
Antworten