Variable type variant [Resolu]
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Variable type variant [Resolu]
Bonjour à tous
J'essai de convertir un code VB en pure.
Certaines variables sont typée VARIANT
Quel est l'équivalent en PURE ?
Merci
Bonne journée
J'essai de convertir un code VB en pure.
Certaines variables sont typée VARIANT
Quel est l'équivalent en PURE ?
Merci
Bonne journée
Dernière modification par Kwai chang caine le mer. 23/avr./2008 15:13, modifié 1 fois.
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Pour simplifier, le variant en VB est une variable qui peut être de n'importe quel type selon les circonstances : chaîne, long, float, etc ...
Le variant est traduit en PB par une structure (voir la dernière version dans le visualisateur de structures) :La série #VT_* décrit tous les types possibles.
Ces variants sont beaucoup utilisés avec les inferfaces.
Le variant est traduit en PB par une structure (voir la dernière version dans le visualisateur de structures) :
Code : Tout sélectionner
Enumeration ; VARENUM
#VT_EMPTY = 0
#VT_NULL = 1
#VT_I2 = 2
#VT_I4 = 3
#VT_R4 = 4
#VT_R8 = 5
#VT_CY = 6
#VT_DATE = 7
#VT_BSTR = 8
#VT_DISPATCH = 9
#VT_ERROR = 10
#VT_BOOL = 11
#VT_VARIANT = 12
#VT_UNKNOWN = 13
#VT_DECIMAL = 14
#VT_I1 = 16
#VT_UI1 = 17
#VT_UI2 = 18
#VT_UI4 = 19
#VT_I8 = 20
#VT_UI8 = 21
#VT_INT = 22
#VT_UINT = 23
#VT_VOID = 24
#VT_HRESULT = 25
#VT_PTR = 26
#VT_SAFEARRAY = 27
#VT_CARRAY = 28
#VT_USERDEFINED = 29
#VT_LPSTR = 30
#VT_LPWSTR = 31
#VT_RECORD = 36
#VT_INT_PTR = 37
#VT_UINT_PTR = 38
#VT_FILETIME = 64
#VT_BLOB = 65
#VT_STREAM = 66
#VT_STORAGE = 67
#VT_STREAMED_OBJECT = 68
#VT_STORED_OBJECT = 69
#VT_BLOB_OBJECT = 70
#VT_CF = 71
#VT_CLSID = 72
#VT_VERSIONED_STREAM = 73
#VT_BSTR_BLOB = $fff
#VT_VECTOR = $1000
#VT_ARRAY = $2000
#VT_BYREF = $4000
#VT_RESERVED = $8000
#VT_ILLEGAL = $ffff
#VT_ILLEGALMASKED = $fff
#VT_TYPEMASK = $fff
EndEnumeration
Structure VARIANT
vt.w
wReserved1.w
wReserved2.w
wReserved3.w
StructureUnion
llVal.LARGE_INTEGER
lVal.l
bVal.b
iVal.w
fltVal.f
dblVal.LARGE_INTEGER
boolVal.l
bool.l
scode.l
cyVal.l
date.l
bstrVal.l
*punkVal.IUnknown
*pdispVal.IDispatch
*parray.l
*pbVal.BYTE
*piVal.WORD
*plVal.LONG
*pllVal.LARGE_INTEGER
*pfltVal.FLOAT
*pdblVal.LARGE_INTEGER
*pboolVal.LONG
*pbool.LONG
*pscode.LONG
*pcyVal.LONG
*pdate.LONG
*pbstrVal.LONG
*ppunkVal.LONG
*ppdispVal.LONG
*pparray.LONG
*pvarVal.VARIANT
byref.l
cVal.b
uiVal.w
ulVal.l
ullVal.LARGE_INTEGER
intVal.l
uintVal.l
*pdecVal.LONG
*pcVal.BYTE
*puiVal.WORD
*pulVal.LONG
*pullVal.LARGE_INTEGER
*pintVal.LONG
*puintVal.LONG
decVal.l
EndStructureUnion
EndStructure
Ces variants sont beaucoup utilisés avec les inferfaces.
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Ah bah dis donc heureusement que t'as simplifié, sinon j'aurais rien compris
D'ailleurs j'ai rien compris
Je t'adore GNOZAL tu sais toujours tout
Alors en SIMPLE il faut que je declare comment ma variable en debut de mon code pour remplacer le :
Il faut que j'ecrive tout ça ?? :
Merci mille fois de ton aide

D'ailleurs j'ai rien compris

Je t'adore GNOZAL tu sais toujours tout

Alors en SIMPLE il faut que je declare comment ma variable en debut de mon code pour remplacer le :
Code : Tout sélectionner
Dim Kwai as Variant
Code : Tout sélectionner
Enumeration ; VARENUM
#VT_EMPTY = 0
#VT_NULL = 1
#VT_I2 = 2
#VT_I4 = 3
#VT_R4 = 4
#VT_R8 = 5
#VT_CY = 6
#VT_DATE = 7
#VT_BSTR = 8
#VT_DISPATCH = 9
#VT_ERROR = 10
#VT_BOOL = 11
#VT_VARIANT = 12
#VT_UNKNOWN = 13
#VT_DECIMAL = 14
#VT_I1 = 16
#VT_UI1 = 17
#VT_UI2 = 18
#VT_UI4 = 19
#VT_I8 = 20
#VT_UI8 = 21
#VT_INT = 22
#VT_UINT = 23
#VT_VOID = 24
#VT_HRESULT = 25
#VT_PTR = 26
#VT_SAFEARRAY = 27
#VT_CARRAY = 28
#VT_USERDEFINED = 29
#VT_LPSTR = 30
#VT_LPWSTR = 31
#VT_RECORD = 36
#VT_INT_PTR = 37
#VT_UINT_PTR = 38
#VT_FILETIME = 64
#VT_BLOB = 65
#VT_STREAM = 66
#VT_STORAGE = 67
#VT_STREAMED_OBJECT = 68
#VT_STORED_OBJECT = 69
#VT_BLOB_OBJECT = 70
#VT_CF = 71
#VT_CLSID = 72
#VT_VERSIONED_STREAM = 73
#VT_BSTR_BLOB = $fff
#VT_VECTOR = $1000
#VT_ARRAY = $2000
#VT_BYREF = $4000
#VT_RESERVED = $8000
#VT_ILLEGAL = $ffff
#VT_ILLEGALMASKED = $fff
#VT_TYPEMASK = $fff
EndEnumeration
Structure VARIANT
vt.w
wReserved1.w
wReserved2.w
wReserved3.w
StructureUnion
llVal.LARGE_INTEGER
lVal.l
bVal.b
iVal.w
fltVal.f
dblVal.LARGE_INTEGER
boolVal.l
bool.l
scode.l
cyVal.l
date.l
bstrVal.l
*punkVal.IUnknown
*pdispVal.IDispatch
*parray.l
*pbVal.BYTE
*piVal.WORD
*plVal.LONG
*pllVal.LARGE_INTEGER
*pfltVal.FLOAT
*pdblVal.LARGE_INTEGER
*pboolVal.LONG
*pbool.LONG
*pscode.LONG
*pcyVal.LONG
*pdate.LONG
*pbstrVal.LONG
*ppunkVal.LONG
*ppdispVal.LONG
*pparray.LONG
*pvarVal.VARIANT
byref.l
cVal.b
uiVal.w
ulVal.l
ullVal.LARGE_INTEGER
intVal.l
uintVal.l
*pdecVal.LONG
*pcVal.BYTE
*puiVal.WORD
*pulVal.LONG
*pullVal.LARGE_INTEGER
*pintVal.LONG
*puintVal.LONG
decVal.l
EndStructureUnion
EndStructure
Define Kwai.Variant
non !!Kwai chang caine a écrit :Ah bah dis donc heureusement que t'as simplifié, sinon j'aurais rien compris![]()
D'ailleurs j'ai rien compris![]()
Je t'adore GNOZAL tu sais toujours tout![]()
Alors en SIMPLE il faut que je declare comment ma variable en debut de mon code pour remplacer le :Code : Tout sélectionner
Dim Kwai as Variant
une variable de type Variant peut recevoir un chiffre,ou de l'ascii
bref, c'est une variable qui n'a pas de type defini
en purebasic
A.f <-- c'est un Flottant
A.b<----- c'est un byte etc ....
en VB une variable de type Variant
peut recevoir soit
Dim A as Variant
A=12
soit
A="coucou"
bref n'importe qu'elle type de donné !!
l'idéal c'est de surveiller ta variable variant, et de voir qu'elle type de donné elle reçoit !!!
si elle ne reçoit que du numérique, et bien considère la comme une variable numérique (Long,Word,Byte) suivant le cas !!
souvent les variable sont déclaré de type Variant par fainéantise des programmeurs , en réalité, elle garde souvent un Type bien défini
c'est due en parti a l'obligation de déclarer une variable en VB , et comme le programmeur, ne sait pas trop a l'avance ce qu'il va faire avec cette variable, il le déclare en variant , de cette façon il est tranquille avec ça....
même si c'est pas une bonne habitude bien sur ...

soit dit en passant, j'aimerai bien avoir les variant en purebasic natif

- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
La structure VARIANT est définie dans les dernières versions de PB. Pas besoin du "mégacode", c'était pour décrire la structure.Kwai chang caine a écrit :Bonjour DOBRO
Bon d'accord, mais alors à quoi il sert le mega code de GNOZAL, si à la fin je déclare la variable en .l / .w / .b / .s
Quant à l'utilisation, voir les codes ici par exemple (attention, pas simple !) : http://www.purebasic.fr/english/viewtopic.php?t=16968
Comme dit plus haut, çà sert surtout pour utiliser les interfaces.
Pas très utile en programmation courante en PB.
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Ah bon d'accord, vous allez me dire que je suis lent à la détente, mais CONCRETEMENT si c'est inclus maintenant, qu'est ce que le met comme lettre derriere ma variable ???La structure VARIANT est définie dans les dernières versions de PB
Ou alors ça existe pas en PB et faut faire comme le dit DOBRO et se décider.
C'etait juste pour convertir un code VB en PB que j'etais tombé sur ce type, alors j'aurais aimé savoir si y'avais ou non l'équivalent en PB ?