Delphi与C语言杂交-----1:如何在delphi中调用vc写的如下函数(uchar对应delphi什么类型);2:如何将以下函数翻译成Delphi(30

  • 主题发起人 主题发起人 四库全书
  • 开始时间 开始时间

四库全书

Unregistered / Unconfirmed
GUEST, unregistred user!
Delphi与C语言杂交-----1:如何在delphi中调用vc写的如下函数(uchar对应delphi什么类型);2:如何将以下函数翻译成Delphi(300分)<br />bool GenerateKey(UCHAR *key, UINT *keylen)
参数:
key:密钥。
keylen:密钥长度。
返回值:
true:生成密钥成功。
false:生成密钥失败。
示例:
UCHAR key[32]={0};
UINT keyLength=32;
GenerateKey(key,&amp;keyLength);
 
function GenerateKey(key: PChar;
var keylen: Integer): BOOL;
示例
GetMem(Buf,32);
ZeroMemory(Buf,32);
KeyLen:=32;
GenerateKey(Buf,KeyLen);
FreeMem(Buf);
 
Buf就是参数key?pchar型?
 
UCHAR对应Byte;
function GenerateKey(key: PByte;
var keylen: Integer): Boolean;
stdcall;
var
buf: PByte;
KeyLen: Integer;
GenerateKey(buf, KeyLen);
 
写成PChar或是PByte都是无所谓,只有知道它是一个指向UCHAR型的指针就可以了,在一定意义上来说PChar=PByte
至于返回值 bool 对应应该是 LongBool;
看上面的示例,在调用时应该先给UCHAR *key分配内存
 
参数要以pchar传递
 
楼上的,如何把pbyte的地址去出来?读出来字符串?
 
var
s:string;
SetString(s,PChar(key),keylen)
ShowMessage(s)
不直接使用 String(PChar(key)) 的理由是防止GenerateKey不在key末尾设置0
 
SetString(s,PChar(key),keylen)
报错,why?
 
报什么错
key一开始你申请内存了吗
相关的全部代码贴出来
 
GetMem(Buf,32);
ZeroMemory(Buf,32);
KeyLen:=32;
GenerateKey(Buf,KeyLen);
FreeMem(Buf);
 
function GenerateKey(key: PChar;
keylen: PUINT):bool;
var
key:string;
keyLength:UINT;
setlength(key,32);
keyLength:=32;
GenerateKey(PChar(key),@keyLength);
绝对没问题
 
高定了,谢谢各位
 
没给分么?:)
 
这都值300分?
大款!! 
 
多人接受答案了。
 
后退
顶部