PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV 2024 → Passage d'une structure en paramètre à une DLL
Passage d'une structure en paramètre à une DLL
Started by yvan.pomes, Aug., 23 2004 4:28 PM - 1 reply
Posted on August, 23 2004 - 4:28 PM
Bonjour,
Pour utiliser une DLL écrite en C, je dois passer une variable de type <structure>
mais la dll renvoie un message d'erreur : paramètre invalide. Apparemment,
ce sont les chaines de caractères définies dans la structure qui posent problème
(elles sont vides ...).
Quelqu'un pourrait-il me conseiller pour définir correctement cette structure
en WinDev ?

Exemple:
//WinDev //C
_CARD est une structure
eCard est un entier sur 2 octets //int eCard;enum{SIS,SAM}
zSection est une chaîne //CHAR zSection[20]
zPin est une chaîne //CHAR zPin[5]
FIN
sCARD est un _CARD
sCARD:eCard = 1 //sCard.eCard=
sCARD:zSection="" //strcpy(sCard.zSection,"")
sCARD:zPin="3634" //strcpy(sCard.zPin,zSamPin->Text.c_str())

_GATE est une structure
zCtm est une chaîne
zDev est une chaîne
zSlot est une chaîne
FIN
sGATE est un _GATE
sGATE:zCtm="CTM1" //strcpy(sGate.zCtm ,zSamCtm->Text.c_str());
sGATE:zDev="CHERRY" //strcpy(sGate.zDev ,zSamDev->Text.c_str());
sGATE:zSlot="PLUGIN0" //strcpy(sGate.zSlot ,zSamSlot->Text.c_str());

//Appel de la DLL dans l'aaplication C de demo
//BncsResOpen(HDL *phCtmHdl, LPSTR zPrompt, sCARD *psaCard, sGATE *psgGate,
LPSTR zConfig, INT16 *piStatus);
//Transcription de cet appel en WinDev:
RCcode est un entier sur 2 octets //INT16 RC
RCcode=AppelDLL32("BNCSW32.DLL","BncsResOpen", &hSAM , prompt , &sCARD ,
&sGATE , config , &uiSt )
//Message d'erreur de la DLL
23/08/2004 12:42:41:101 === SisLib Version 1.0.6k (c) ===
23/08/2004 12:42:41:101 BncsResOpen...
23/08/2004 12:42:41:101 Verify mandatory input parameters
23/08/2004 12:42:41:111 zConfig :E:\WDProjects7\Polyclinic\exe\local.ini
23/08/2004 12:42:41:111 sGate :zCtm=,zDev=,zSlot=
23/08/2004 12:42:41:121 eCard :1 or SAM
23/08/2004 12:42:41:131 wrong slotname syntax (EXTERN? or PLUGIN?) :

23/08/2004 12:42:41:131 BNCS Error = -206:parameter in the call is invalid
23/08/2004 12:42:41:141 BNCS Error = -206,parameter in the call is invalid

Merci d'avance
Yvan
Posted on August, 23 2004 - 5:29 PM
yvan wrote:
Bonjour,
Pour utiliser une DLL écrite en C, je dois passer une variable de
type <structure> mais la dll renvoie un message d'erreur : paramètre
invalide. Apparemment,
ce sont les chaines de caractères définies dans la structure qui
posent problème (elles sont vides ...).
Quelqu'un pourrait-il me conseiller pour définir correctement cette
structure
en WinDev ?


Salut,

Il faut utiliser des chaines asciiz

--
Cordialement,

Erick :-)
Fiduciaire Informatique - Saint-Etienne