读书人

求高手把C++ 代码 转成delphi 多谢

发布时间: 2013-04-20 19:43:01 作者: rapoo

求高手把C++ 代码 转成delphi 谢谢
DLL文件定义
int RdrGetReaderStatus(char *readercode)
int RdrGetCardid(char *readercode, char *outcardid)
下面是代码
int retval = -1;
char outmachinecode[1025] = {0};
char outdata[4096] = {0};

int i=0;
while (1)
{
printf("-----------------------------------------------%d\r\n",i++);
// 查询UDP数据
ZeroMemory(outmachinecode,sizeof(outmachinecode));
RdrGetRecvUdpData(outmachinecode);
if (strlen(outmachinecode)>0)
{
printf(">>本地网UDP数据>>");
printf("\r\n%s", outmachinecode);
printf("\r\n");
}

// 查询被管理读卡器的连接状态
ZeroMemory(outmachinecode,sizeof(outmachinecode));
RdrGetReaderStatus(outmachinecode);
printf(">>读卡器状态>>");
printf("\r\n%s", outmachinecode);
printf("\r\n");

// 指定读卡器的机器号进行卡号数据的读取
// 读卡器内的读卡记录,先由动态库自动的收集缓存到本地
// 用户可以按照每500ms的节奏进行查询
ZeroMemory(outdata,sizeof(outdata));
RdrGetCardid("031211110426",outdata);
if (strlen(outdata)>0)
{
printf("%s", outdata);
printf("\r\n\r\n\r\n");
}
Sleep(50);
}


麻烦各位大侠把代码转成delphi 主要是读卡部分。谢谢~
[解决办法]


program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils;

function RdrGetReaderStatus(var readercode: PChar): Integer; stdcall; external
'你的.DLL';

function RdrGetCardid(readercode: PChar; var outcardid: PChar): Integer;
stdcall; external '你的.DLL';

const
omcSize = 1025;
odSize = 4096;
var
//retval: Integer = -1;
outmachinecode: PChar;
outdata: PChar;
i: Integer = 0;
begin
outmachinecode := GetMemory(omcSize);
outdata := GetMemory(odSize);
try
outmachinecode := '';
outdata := '';

while True do
begin
Inc(i);
Writeln(Format('----------------------------------------------- %d', [i]));
// 查询UDP数据
outmachinecode := '';
//RdrGetRecvUdpData(outmachinecode); { 没交代 RdrGetRecvUdpData }
if (StrLen(outmachinecode) > 0) then
begin
Writeln('>>本地网UDP数据>>');
Writeln(Format('%s', [outmachinecode]));
end;

// 查询被管理读卡器的连接状态
outmachinecode := '';
RdrGetReaderStatus(outmachinecode);
Writeln('>>读卡器状态>>');
Writeln(Format('%s', [outmachinecode]));

// 指定读卡器的机器号进行卡号数据的读取
// 读卡器内的读卡记录,先由动态库自动的收集缓存到本地


// 用户可以按照每500ms的节奏进行查询
outdata := '';
RdrGetCardid(PChar('031211110426'), outdata);
if (StrLen(outdata) > 0) then
begin
Writeln(Format('%s', [outdata]));
end;

Sleep(50);
end;
finally
FreeMemory(outmachinecode);
FreeMemory(outdata);
end;

readln;
end.

读书人网 >.NET

热点推荐