Variable type variant [Resolu]

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Variable type variant [Resolu]

Message par Kwai chang caine »

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
Dernière modification par Kwai chang caine le mer. 23/avr./2008 15:13, modifié 1 fois.
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Message par brossden »

Bonjour KCC machin truc chose !

Variant, sauf erreur de ma part, c'est une chaine de longueur variable, c'est le cas sous PureBasic donc il suffit de déclarer une chaine toute simple !
Denis

Bonne Jounée à tous
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Merci mon bon BROSSDEN.
ça faisait longtemps que nous n'avions pas discutaillé ensemble :D
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Message par gnozal »

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

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
La série #VT_* décrit tous les types possibles.
Ces variants sont beaucoup utilisés avec les inferfaces.
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Ah bah dis donc heureusement que t'as simplifié, sinon j'aurais rien compris :lol:
D'ailleurs j'ai rien compris :lol:
Je t'adore GNOZAL tu sais toujours tout :wink:

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
Il faut que j'ecrive tout ça ?? :

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
Merci mille fois de ton aide
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Kwai chang caine a écrit :Ah bah dis donc heureusement que t'as simplifié, sinon j'aurais rien compris :lol:
D'ailleurs j'ai rien compris :lol:
Je t'adore GNOZAL tu sais toujours tout :wink:

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
non !!

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 :)
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

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 8O
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Message par gnozal »

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 8O
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.
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.
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

La structure VARIANT est définie dans les dernières versions de PB
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 ???
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 ?
Répondre