Les types OLE Automation ci-dessous sont pris en compte par l'assistant Intégrateur de contrôles ActiveX.
Ce tableau fournit les intervalles de valeurs en fonction des différents types OLE Automation et Adélia. Il permet donc de fixer les correspondances établies sur la deuxième page de l'assistant, et surtout de les ajuster au cas par cas dans les pages suivantes, en fonction de la connaissance de l'ActiveX que possède l'utilisateur. Lorsque plusieurs choix sont possibles pour les types numériques, il n'est pas toujours possible d'avoir une correspondance identique au niveau des intervalles de valeurs.
Type OLE Automation |
Description |
Intervalle de valeurs |
Types Adélia correspondants |
Intervalle de valeurs et remarques |
BSTR |
Chaîne de caractères Automation (un caractère est codé sur 2 octets). |
|
ALPHA(n) |
|
DATE |
Contient une date et/ou une heure, mais sans les fractions de seconde. |
|
TIMESTAMP DATE TIME |
Les fractions de seconde contenues dans une variable TIMESTAMP sont perdues dans une variable DATE OLE Automation. |
float |
Nombre réel à virgule flottante sur 4 octets. |
Valeurs négatives : -3.402823 x 10e38 à -1.401298 x 10e-45 Valeurs positives : 1.401298 x 10e-45 à 3.402823 x 10e38 |
NUM_E(lg,dec) NUM_P(lg,dec) NUM_BIN_4 |
Dépend de lg et de dec.
Le type NUM_BIN_4 est intéressant dans le cas où la variable ne contient que des valeurs entières. |
double |
Nombre réel à virgule flottante sur 8 octets. |
Valeurs négatives : -1.79769313486232 x 10e308 à -4.94065645841247 x 10e-324 Valeurs positives : 4.94065645841247 x 10e-324 à 1.79769313486232 x 10e308 |
NUM_E(lg,dec) NUM_P(lg,dec) |
Dépend de lg et de dec. |
CURRENCY |
Devise (nombre réel à virgule fixe comportant 15 positions entières et 4 positions décimales). |
-922 337 203 685 477,5808 à 922 337 203 685 477,5807 |
NUM_E(lg,dec) NUM_P(lg,dec) |
Avec lg = 15 et dec = 4, l'intervalle est : -9 999 999 999,9999 à 9 999 999 999,9999 |
unsigned char |
Caractère non signé (1 octet). |
0 à 255 |
ALPHA(1)
NUM_BIN_2 |
Le code ANSI du caractère va de 0 à 255.
–32 768 à 32 767 |
char |
Caractère signé (1 octet). |
–128 à 127 |
NUM_BIN_2
ALPHA(1) |
–32 768 à 32 767
En pratique, le type char contient la plupart du temps une valeur positive, donc est utilisé en tant que caractère. |
unsigned short |
Entier court non signé (2 octets). |
0 à 65 535 |
NUM_BIN_4 NUM_BIN_2 |
–2 147 483 648 à 2 147 483 647 –32 768 à 32 767
Le type NUM_BIN_2 suffit dans le cas où la variable ne contient que des valeurs positives. |
short |
Entier court signé (2 octets). |
–32 768 à 32 767 |
NUM_BIN_2 |
Même intervalle que le type OLE Automation. |
unsigned int |
Entier machine non signé (4 octets). |
0 à 4 294 967 295 |
NUM_E(lg,dec) NUM_P(lg,dec) NUM_BIN_4 |
Avec lg = 10 et dec = 0 L'intervalle est 0 à 9 999 999 999.
Le type NUM_BIN_4 suffit dans le cas où la variable ne contient que des valeurs positives. |
int |
Entier machine signé (4 octets). |
–2 147 483 648 à 2 147 483 647 |
NUM_BIN_4 |
Même intervalle que le type OLE Automation. |
unsigned long |
Entier long non signé (4 octets). |
0 à 4 294 967 295 |
NUM_E(lg,dec) NUM_P(lg,dec) NUM_BIN_4 |
Avec lg = 10 et dec = 0 L'intervalle est 0 à 9 999 999 999.
Le type NUM_BIN_4 suffit dans le cas où la variable ne contient que des valeurs positives. |
long |
Entier long signé (4 octets). |
–2 147 483 648 à 2 147 483 647 |
NUM_BIN_4 |
Même intervalle que le type OLE Automation. |
HRESULT |
Code résultat. |
–2 147 483 648 à 2 147 483 647 |
NUM_BIN_4 |
Même intervalle que le type OLE Automation. |
__int64 |
Entier sur 64 bits signé (8 octets). |
–9223372036854775808 à 9223372036854775807 |
NUM_BIN_8 |
Même intervalle que le type OLE Automation. |
unsigned __int64 |
Entier sur 64 bits non signé (8 octets). |
0 à 18446744073709551615 |
NUM_BIN_8 |
Le type NUM_BIN_8 ne permet pas de gérer correctement les valeurs supérieures à 9223372036854775807. |
SCODE |
Code statut. |
–2 147 483 648 à 2 147 483 647 |
NUM_BIN_4 |
Même intervalle que le type OLE Automation. |
VARIANT_BOOL |
Booléen OLE Automation. |
|
BOOL |
Mêmes notions de vrai et faux. |
VARIANT |
Structure qui peut contenir un certain nombre de types simples ou de pointeurs, et l'information indiquant le type contenu. |
|
Un type Adélia quelconque (variable ou liste) et une constante fixant le type du VARIANT |
Un type interne au langage Visual Adélia et similaire au type VARIANT est utilisé.
(Voir la gestion du type VARIANT ci-dessous.) |
IDispatch* |
|
POINTEUR *IDISPATCH |
|
|
IUnknown* |
|
POINTEUR *IUNKNOWN |
|
Cas particulier : la gestion du type VARIANT et les constantes associées
Le type VARIANT OLE Automation peut se décrire approximativement comme une structure, c'est-à-dire un regroupement de différents types vu comme un nouveau type de variable. Cette structure peut contenir l'ensemble des types ci-dessus, un pointeur (adresse mémoire) sur l'un de ces types ou sur un tableau, et contient aussi l'information indiquant quel est le type effectivement contenu pour une variable donnée de type VARIANT.
Lors de l'intégration, une propriété de type VARIANT sera gérée sous forme d'une méthode de lecture, et d'une méthode d'écriture si la propriété n'est pas en lecture seule. Un paramètre de méthode ou d'événement de type VARIANT est géré en Adélia à travers deux paramètres. Le premier paramètre est une variable Adélia d'un type quelconque ou une liste non composée (c'est-à-dire définie par une seule variable Adélia), et le deuxième paramètre est le type du variant OLE.
Dans le cas d'un variant paramètre d'entrée de méthode, c'est-à-dire lorsque le programme Visual Adélia fournit le variant à l'ActiveX, ce deuxième paramètre sera utile pour créer un variant avec un type précis et dont la valeur sera celle de la variable Adélia, après une conversion éventuelle en fonction du type de variant souhaité.
Dans le cas d'un variant paramètre de sortie uniquement, c'est-à-dire lorsque l'ActiveX fournit un variant au programme Visual Adélia, ce deuxième paramètre permettra d'indiquer que le variant n'est qu'en sortie, et de savoir quel type contient précisément ce variant. De plus, cela permettra éventuellement, lors de la mise au point, d'utiliser une variable Adélia d'un type mieux adapté au contenu du variant, puisque ce contenu est éventuellement converti pour obéir au type de la variable Adélia.
Le cas d'un variant en entrée/sortie regroupe les cas précédents.
Les valeurs du paramètre indiquant le type du variant sont celles de la liste ci-dessous. Ces constantes sont générées systématiquement en tant que constantes de l'objet graphique lorsqu'il contient un paramètre de type variant.
Nom de la constante |
Valeur |
Type OLE Automation contenu dans le variant |
Remarque |
__VT_EMPTY |
0 |
|
Valeur à utiliser pour un variant en sortie. |
__VT_NULL |
1 |
|
Ne pas utiliser, cette valeur peut être rendue par un variant en sortie. |
__VT_I2 |
2 |
short |
|
__VT_I4 |
3 |
long |
|
__VT_R4 |
4 |
float |
|
__VT_R8 |
5 |
double |
|
__VT_CY |
6 |
CURRENCY |
|
__VT_DATE |
7 |
DATE |
|
__VT_BSTR |
8 |
BSTR |
|
__VT_DISPATCH |
9 |
IDispatch* |
|
__VT_ERROR |
10 |
SCODE |
|
__VT_BOOL |
11 |
VARIANT_BOOL |
|
__VT_VARIANT |
12 |
VARIANT* |
Ne pas utiliser, cette valeur peut être rendue par un variant en sortie. |
__VT_UNKNOWN |
13 |
IUnknown* |
|
|
|
|
|
__VT_I1 |
16 |
char |
|
__VT_UI1 |
17 |
unsigned char |
|
__VT_UI2 |
18 |
unsigned short |
|
__VT_UI4 |
19 |
unsigned long |
|
__VT_I8 |
20 |
__int64 |
|
__VT_UI8 |
21 |
unsigned __int64 |
|
__VT_INT |
22 |
int |
|
__VT_UINT |
23 |
unsigned int |
|
|
|
|
|
__VT_ARRAY |
8192 |
Le variant contient un tableau d'un des types ci-dessus. |
Valeur qui doit être ajoutée à celle du type concerné. |
__VT_BYREF |
16384 |
Le variant contient l'adresse d'un des types ci-dessus. |
Ne pas utiliser, cette valeur peut être rendue par un variant en sortie. |
Par exemple, lorsque l'utilisateur veut passer en paramètre un variant contenant un tableau d'entiers longs, il doit passer comme premier paramètre une variable Adélia de type liste de NUM_BIN_4, et comme second paramètre la somme (__VT_ARRAY + __VT_I4).
Retour au choix du contrôle ActiveX à intégrer.