读书人

vb中数组地址传递的有关问题

发布时间: 2012-01-14 20:02:35 作者: rapoo

vb中数组地址传递的问题,请教各位
在VC中,调用dll的函数说明及调用过程如下:
typedef int (PASCAL *pgetname)(BYTE *buf);
typedef int (PASCAL *pUCmmand1)(BYTE *pcmd,int *p1,int *p2,int *p3);

pUCmmand1mygetcard;
pgetname myget;
void CReadCardDlg::OnTimer(UINT nIDEvent)
{
BYTE cmd;
int parg0,parg1,parg2;
parg0=1;
parg1=8811;
parg2=9986;
cmd=0x43;
int z=mygetcard(&cmd,&parg0,&parg1,&parg2);
if(z==62171)
{
parg0=1;
cmd=0x44;
parg1=8811;
char *x;
x= "c:\\mycard ";
int p[20];
memcpy(p,x,10);
mygetcard(&cmd,&parg0,&parg1,p);
myget(buffer);
AfxMessageBox((char *)buffer);

}
CDialog::OnTimer(nIDEvent);
}

以上调用如何用vb来实现?主要是下边的字符串地址传递问题,请教各位高手.



[解决办法]
BYTE *声明成Byval As String就可以了
[解决办法]
也可以声明为byref buf as byte,然后传递buf的第1个元素
[解决办法]
dim data(1000) as byte
传递data(0)的地址byval VarPtr(data(0))
result = UCommand1(68, 1, 8811, byval VarPtr(data(0)))

读书人网 >VB

热点推荐