OVH Cloud OVH Cloud

[WDnn / VB] Declarations de variables

8 réponses
Avatar
MMoreno
Bonjour,
je dois appeler une DLL , je n'ai a disposition qu'un programme
d'exemple en VB. Y aurait il un specialiste qui pourrait m'aider a
traduire certaines definitions de variables ?

Public Type GKD_LEVEL
Level As Long
ApplicationId As SD_APPLICATION_ID
CompanyId As Long
End Type

Public Type GKD_DIR
NumberOfLevels As Long
Level(0 To GKD_MAX_LEVEL - 1) As GKD_LEVEL
End Type


Public Enum SD_APPLICATION_ID
SD_APPLICATION_1 = 1
SD_APPLICATION_2 = 19
SD_APPLICATION_3 = 21
SD_APPLICATION_4 = 23
SD_APPLICATION_5 = 26
SD_APPLICATION_6 = 27
SD_APPLICATION_7 = 30
End Enum


Merci beaucoup

Michel

8 réponses

Avatar
Romain PETIT
MMoreno a formulé ce mercredi :
Bonjour,
je dois appeler une DLL , je n'ai a disposition qu'un programme
d'exemple en VB. Y aurait il un specialiste qui pourrait m'aider a
traduire certaines definitions de variables ?

Public Type GKD_LEVEL
Level As Long
ApplicationId As SD_APPLICATION_ID
CompanyId As Long
End Type



Utiliser les structures.
(là il faut savoir à quoi correspond SD_APPLICATION_ID)
(vu ce qu'il y a en bas, cela semble être une aure structure de 7
entiers longs)
SD_APPLICATION_ID est un structure
SD_APPLICATION_1 est un entier
SD_APPLICATION_2 est un entier
SD_APPLICATION_3 est un entier
SD_APPLICATION_4 est un entier
SD_APPLICATION_5 est un entier
SD_APPLICATION_6 est un entier
SD_APPLICATION_7 est un entier
FIN
GKD_LEVEL est une structure
Level est un entier
ApplicationId est une SD_APPLICATION_ID
CompanyId est un entier
FIN


Public Type GKD_DIR
NumberOfLevels As Long
Level(0 To GKD_MAX_LEVEL - 1) As GKD_LEVEL
End Type



Une autre structure avec un tableau d'une structure
Ici, tu seras obligé de connaitre avant (et de fixer avec une
constante) le paramètre GKD_MAX_LEVEL
(ou alors définir un tableau dynamique dont tu devras donner la
dimension après avoir défini ta variable de type GKD_DIR.)

Attention également au fait que le tableau en WD commence à 1 (en VB,
et très clairement spécifié ici, le tableau commence à 0...)

CONSTANTE
GKD_MAX_LEVEL = 10
FIN
GKD_DIR est une structure
NumberOfLevels est un entier
Level est un tableau fixe de GKD_MAX_LEVEL GKD_LEVEL
FIN


Public Enum SD_APPLICATION_ID
SD_APPLICATION_1 = 1
SD_APPLICATION_2 = 19
SD_APPLICATION_3 = 21
SD_APPLICATION_4 = 23
SD_APPLICATION_5 = 26
SD_APPLICATION_6 = 27
SD_APPLICATION_7 = 30
End Enum



L'Enum n'existe pas en WD, il faut affecter élément par élément.
SD_APPLICATION_ID:SD_APPLICATION_1 = 1
SD_APPLICATION_ID:SD_APPLICATION_2 = 19
SD_APPLICATION_ID:SD_APPLICATION_3 = 21
SD_APPLICATION_ID:SD_APPLICATION_4 = 23
SD_APPLICATION_ID:SD_APPLICATION_5 = 26
SD_APPLICATION_ID:SD_APPLICATION_6 = 27
SD_APPLICATION_ID:SD_APPLICATION_7 = 30

A+

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
MMoreno
Romain PETIT wrote:
MMoreno a formulé ce mercredi :
> Bonjour,
> je dois appeler une DLL , je n'ai a disposition qu'un programme
> d'exemple en VB. Y aurait il un specialiste qui pourrait m'aider a
> traduire certaines definitions de variables ?
>
> Public Type GKD_LEVEL
> Level As Long
> ApplicationId As SD_APPLICATION_ID
> CompanyId As Long
> End Type

Utiliser les structures.
(là il faut savoir à quoi correspond SD_APPLICATION_ID)
(vu ce qu'il y a en bas, cela semble être une aure structure de 7
entiers longs)
SD_APPLICATION_ID est un structure
SD_APPLICATION_1 est un entier
SD_APPLICATION_2 est un entier
SD_APPLICATION_3 est un entier
SD_APPLICATION_4 est un entier
SD_APPLICATION_5 est un entier
SD_APPLICATION_6 est un entier
SD_APPLICATION_7 est un entier
FIN
GKD_LEVEL est une structure
Level est un entier
ApplicationId est une SD_APPLICATION_ID
CompanyId est un entier
FIN


> Public Type GKD_DIR
> NumberOfLevels As Long
> Level(0 To GKD_MAX_LEVEL - 1) As GKD_LEVEL
> End Type

Une autre structure avec un tableau d'une structure
Ici, tu seras obligé de connaitre avant (et de fixer avec une
constante) le paramètre GKD_MAX_LEVEL
(ou alors définir un tableau dynamique dont tu devras donner la
dimension après avoir défini ta variable de type GKD_DIR.)

Attention également au fait que le tableau en WD commence à 1 (en VB,
et très clairement spécifié ici, le tableau commence à 0...)

CONSTANTE
GKD_MAX_LEVEL = 10
FIN
GKD_DIR est une structure
NumberOfLevels est un entier
Level est un tableau fixe de GKD_MAX_LEVEL GKD_LEVEL
FIN


> Public Enum SD_APPLICATION_ID
> SD_APPLICATION_1 = 1
> SD_APPLICATION_2 = 19
> SD_APPLICATION_3 = 21
> SD_APPLICATION_4 = 23
> SD_APPLICATION_5 = 26
> SD_APPLICATION_6 = 27
> SD_APPLICATION_7 = 30
> End Enum

L'Enum n'existe pas en WD, il faut affecter élément par élément.
SD_APPLICATION_ID:SD_APPLICATION_1 = 1
SD_APPLICATION_ID:SD_APPLICATION_2 = 19
SD_APPLICATION_ID:SD_APPLICATION_3 = 21
SD_APPLICATION_ID:SD_APPLICATION_4 = 23
SD_APPLICATION_ID:SD_APPLICATION_5 = 26
SD_APPLICATION_ID:SD_APPLICATION_6 = 27
SD_APPLICATION_ID:SD_APPLICATION_7 = 30

A+

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)



Merci beaucoup de cette reponse rapide.
Malheureusement , ca ne fonctionne pas , j'ai toujours le message :
"Types incompatibles durant une affectation." donne par Windev

Michel
Avatar
Romain PETIT
MMoreno a présenté l'énoncé suivant :

Merci beaucoup de cette reponse rapide.
Malheureusement , ca ne fonctionne pas , j'ai toujours le message :
"Types incompatibles durant une affectation." donne par Windev



Quel est ton code ?

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Romain PETIT
MMoreno a couché sur son écran :
Malheureusement , ca ne fonctionne pas , j'ai toujours le message :
"Types incompatibles durant une affectation." donne par Windev



Oui, pour l'affectation, il faut évidement utiliser une variable typée
par la structure :

varSD_Application_ID est une SD_APPLICATION_ID

varSD_Application_ID:SD_APPLICATION_1 = 1
varSD_Application_ID:SD_APPLICATION_2 = 19
varSD_Application_ID:SD_APPLICATION_3 = 21
varSD_Application_ID:SD_APPLICATION_4 = 23
varSD_Application_ID:SD_APPLICATION_5 = 26
varSD_Application_ID:SD_APPLICATION_6 = 27
varSD_Application_ID:SD_APPLICATION_7 = 30


--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
MMoreno
Romain PETIT wrote:
MMoreno a présenté l'énoncé suivant :

> Merci beaucoup de cette reponse rapide.
> Malheureusement , ca ne fonctionne pas , j'ai toujours le message :
> "Types incompatibles durant une affectation." donne par Windev

Quel est ton code ?

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)



Windev ou VB ?

d'autre part j'ai cherche a savoir a quoi correspondait l'Enum , j'ai
trouve ca :
"Enum is new to VB5. It allows you to define a set of long integer
constants that are global. If you have ever wanted constants in a class
module to be accessible to the client application, you now have the
capability with the Enum key word."
Donc SD_APPLICATION_ID parait bien etre une strucutre de 7 entiers
longs, et c'est peut etre pas la peine de les initialiser comme
constantes plus bas.

Michel
Avatar
Romain PETIT
MMoreno avait énoncé :

Donc SD_APPLICATION_ID parait bien etre une strucutre de 7 entiers
longs, et c'est peut etre pas la peine de les initialiser comme
constantes plus bas.



En W-langage, il te faudra définir la structure, puis une variable
typée dans cette srtucture.
Quand tu utiliseras tes autres structures, il te faudra également faire
l'affectation (pour cela, la fonction transfert sera plus pratique
qu'une affectation membre par membre)

varGDDir est une GKD_DIR
varGDDir:NumberOfLevels = 1
varGDDir:Level[1]:Level = 1
varGDDir:Level[1]:ApplicationID:SD_APPLICATION_1 = 1
varGDDir:Level[1]:ApplicationID:SD_APPLICATION_2 = 19
varGDDir:Level[1]:ApplicationID:SD_APPLICATION_3 = 21
...
varGDDir:Level[1]:CompanyID = 123

ou, avec Transfert, pour ce qui concerne la structure
SD_Application_ID :
transfert(&varGDDir:Level[1]:ApplicationID, &varSD_Application_ID,
dimension(arSD_Application_ID))

A+

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
MMoreno
Romain PETIT wrote:
MMoreno avait énoncé :

> Donc SD_APPLICATION_ID parait bien etre une strucutre de 7 entiers
> longs, et c'est peut etre pas la peine de les initialiser comme
> constantes plus bas.

En W-langage, il te faudra définir la structure, puis une variable
typée dans cette srtucture.
Quand tu utiliseras tes autres structures, il te faudra également faire
l'affectation (pour cela, la fonction transfert sera plus pratique
qu'une affectation membre par membre)

varGDDir est une GKD_DIR
varGDDir:NumberOfLevels = 1
varGDDir:Level[1]:Level = 1
varGDDir:Level[1]:ApplicationID:SD_APPLICATION_1 = 1
varGDDir:Level[1]:ApplicationID:SD_APPLICATION_2 = 19
varGDDir:Level[1]:ApplicationID:SD_APPLICATION_3 = 21
...
varGDDir:Level[1]:CompanyID = 123

ou, avec Transfert, pour ce qui concerne la structure
SD_Application_ID :
transfert(&varGDDir:Level[1]:ApplicationID, &varSD_Application_ID,
dimension(arSD_Application_ID))

A+

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)



En fait , pour l'instant je n'ai pas a les renseigner , l'appel a la
DLL doit me remplir ces champs (ordre de lecture).

Merci de tes reponses.

Michel
Avatar
MMoreno
Romain PETIT wrote:
MMoreno a formulé ce mercredi :
> Bonjour,
> je dois appeler une DLL , je n'ai a disposition qu'un programme
> d'exemple en VB. Y aurait il un specialiste qui pourrait m'aider a
> traduire certaines definitions de variables ?
>
> Public Type GKD_LEVEL
> Level As Long
> ApplicationId As SD_APPLICATION_ID
> CompanyId As Long
> End Type

Utiliser les structures.
(là il faut savoir à quoi correspond SD_APPLICATION_ID)
(vu ce qu'il y a en bas, cela semble être une aure structure de 7
entiers longs)
SD_APPLICATION_ID est un structure
SD_APPLICATION_1 est un entier
SD_APPLICATION_2 est un entier
SD_APPLICATION_3 est un entier
SD_APPLICATION_4 est un entier
SD_APPLICATION_5 est un entier
SD_APPLICATION_6 est un entier
SD_APPLICATION_7 est un entier
FIN
GKD_LEVEL est une structure
Level est un entier
ApplicationId est une SD_APPLICATION_ID
CompanyId est un entier
FIN


> Public Type GKD_DIR
> NumberOfLevels As Long
> Level(0 To GKD_MAX_LEVEL - 1) As GKD_LEVEL
> End Type

Une autre structure avec un tableau d'une structure
Ici, tu seras obligé de connaitre avant (et de fixer avec une
constante) le paramètre GKD_MAX_LEVEL
(ou alors définir un tableau dynamique dont tu devras donner la
dimension après avoir défini ta variable de type GKD_DIR.)

Attention également au fait que le tableau en WD commence à 1 (en VB,
et très clairement spécifié ici, le tableau commence à 0...)

CONSTANTE
GKD_MAX_LEVEL = 10
FIN
GKD_DIR est une structure
NumberOfLevels est un entier
Level est un tableau fixe de GKD_MAX_LEVEL GKD_LEVEL
FIN


> Public Enum SD_APPLICATION_ID
> SD_APPLICATION_1 = 1
> SD_APPLICATION_2 = 19
> SD_APPLICATION_3 = 21
> SD_APPLICATION_4 = 23
> SD_APPLICATION_5 = 26
> SD_APPLICATION_6 = 27
> SD_APPLICATION_7 = 30
> End Enum

L'Enum n'existe pas en WD, il faut affecter élément par élément.
SD_APPLICATION_ID:SD_APPLICATION_1 = 1
SD_APPLICATION_ID:SD_APPLICATION_2 = 19
SD_APPLICATION_ID:SD_APPLICATION_3 = 21
SD_APPLICATION_ID:SD_APPLICATION_4 = 23
SD_APPLICATION_ID:SD_APPLICATION_5 = 26
SD_APPLICATION_ID:SD_APPLICATION_6 = 27
SD_APPLICATION_ID:SD_APPLICATION_7 = 30

A+

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)



C'est bon Romain , ca marche. Encore merci pour ton aide.

Michel

PS : voila les variables telles que je les decrits (et ca fonctionne)

SD_APPLICATION_ID est un structure
SD_APPLICATION_1 est un entier
FIN
GKD_LEVEL est une structure
Level est un entier
ApplicationId est un SD_APPLICATION_ID
CompanyId est un entier
FIN


GKD_DIR est une structure
NumberOfLevels est un entier
Level est un tableau fixe de 5 GKD_LEVEL
FIN

KD_Dir est un GKD_DIR