|
|
导航: |
论坛 -> DELPHI技术
斑竹:liumazi,sephil |
|
作者: |
|
2023/3/28 13:05:28 |
标题: |
|
加入我的收藏 |
楼主: |
有个身份证读卡器的调用:IDCard_ReadCard(HANDLE icdev,char* message);
不知道怎么设置这个char* message;大神们指导一下;
以下是函数说明:
函数功能:读取身份证上的数据 函数声明:__int16 IDCard_ReadCard(HANDLE icdev,char* message); 入口参数:icdev: 通讯标识符 出口参数:message: 返回的操作信息(长度在8到18之间,定义时字节长度要大于18) 返回值: <>0 错误 =0 正确 举例: __int16 st=0; char RecMessage[20]; memset(RecMessage,0,20); st=IDCard_ReadCard(icdev,RecMessage);
----------------------------------------------
- |
作者: |
|
2023/3/28 13:09:28 |
1楼: |
message : Pointer即可
搞清楚到底是stdcall还是cdecl
----------------------------------------------
-
|
作者: |
|
2023/3/28 13:13:51 |
2楼: |
看说明是应该:stdcall
----------------------------------------------
-
|
作者: |
|
2023/3/28 13:19:11 |
3楼: |
我用: function IDCard_ReadCard(mHANDLE:Longint;GetMessage:Pchar):integer; stdcall; external 'mtx_32.dll' name 'IDCard_ReadCard';
GetMem(GetPchar,30); iRet:=IDCard_ReadCard(mHANDLE,GetPchar); 调用时一直不成功。
----------------------------------------------
-
|
作者: |
|
2023/3/28 13:56:53 |
4楼: |
可以了,定义: function IDCard_ReadCard(mHANDLE:Longint;GetMessage:PAnsiChar):integer; stdcall; external 'mtx_32.dll' name 'IDCard_ReadCard';
调用: PMsg:array[0..30] of Ansichar; PCardMsg:array[0..72] of Ansichar;
iRet:=IDCard_ReadCard(mHANDLE,@PMsg);
----------------------------------------------
-
|
作者: |
|
2023/3/28 18:38:37 |
5楼: |
从delphi支持unicode后pchar就变成了指向宽字符的字符串指针。 c++里面char*和wchar*是分开的,不过如果把他当作指针来说没区别。 实际上指针就是地址,只不过在转换的时候才分宽字符和ansi字符。 所以不管是char* wchar* int* void*当作地址用的时候没区别。
char* = PAnsiChar wchar*=PWideChar
TCHAR* = LPCTSTR 当定义unicode的时候=PWideChar,否则=PAnsiChar
----------------------------------------------
-
|
|