首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

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

2013-04-20 
求高手把C++ 代码 转成delphi 谢谢DLL文件定义int RdrGetReaderStatus(char *readercode)int RdrGetCardid

求高手把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.

热点排行