vc制作的动态库。其中的某个函数返回值是unsigned char数组。在delphi中应该怎样对应呢?
解决方案 »
- Delphi的入门书籍有哪些?
- 我又来提问了。。DBGRID 问题
- 不用Dcom的三层架构,谁会呀,请给个介绍
- jinjazz大哥或liangpei2008大哥在吗,麻烦近来一下帮我解决一下这个在sun函数里不能用子查询的问题,万分感谢!
- 考得不错,发个邪恶的小玩意(别找我要分,我快穷死了)
- autocad的dwg显示和部件图元的查询
- 关于从EXCEL 导入到SQLSERVER 的问题。
- 在事件中怎么返回?
- 请问:如何制作一对多的报表(主要是思想问题)
- 下面的程序语句在Delphi5中编译通过,为什么在Delphi6中编译通不过?请各位解答!
- 有关delphi中的if语句的使用问题
- delphi中sql开发数据库,如何保证数据的唯一性?【特急】
type
TArrbyte = array[0..5] of byte;//定义一个数组类型
//将它的返回类型设为这个数组
function find_huhao(address:longword):TArrbyte;cdecl; far; external '.\apijx1.dll';
但取值的时候,只能取得第一个值。不知为何?
vc函数的代码
unsigned char find_huhao(unsigned char address)//,unsigned int dat);//{80}
{
//05 address 80 CRCH CRCL//
unsigned char buf[20];
unsigned int buf_crc;
//for(i=0;i<dat;i++)buf[i]=sendbuf[i];
buf[0]=0x05;
buf[1]=address;
buf[2]=0x80;
buf_crc=crc_data(buf,3);
buf[3]=(unsigned char)((buf_crc>>8)&0x00ff);
buf[4]=(unsigned char)(buf_crc&0x00ff);
return(*buf);
}
不过“返回的是char?不是char*”什么意思,返回的是个unsigned char指针吧?
我在delphi中这样调用
定义:function find_huhao(address:longword):PCHAR;cdecl; far; external '.\aKK.dll';
调用:
var
results:PCHAR;
a : array of byte;
begin
results:=find_huhao(1);
a:=@results;
然后得到的a是个4587531长的数组?怎么回事,不过第一个值是对的。我是极品菜鸟,不要骂我。
VC:
void __stdcall ForDelphi(unsigned char *Result,int size)
{
int i;
for (i=0;i<size-1;i++)
{
Result[i]='A'+i;
}
Result[size-1]='\0';
}
Delphi:
procedure ForDelphi(var Result:Char;size:Integer);stdcall;external 'delphitest.dll';
procedure TForm1.Button1Click(Sender: TObject);
var
tmpstr:array [0..26] of Char;
begin
tmpstr[0]:='A';
ForDelphi(tmpstr[0],27);
ShowMessage(tmpstr);
end;