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

哪位大侠帮忙看看代码该如何写,先多谢了

2013-09-26 
哪位大侠帮忙看看代码该怎么写,急,先谢谢了小弟是学C#的,最近有项目需要用到delphi,下面这个方法是照别人

哪位大侠帮忙看看代码该怎么写,急,先谢谢了
小弟是学C#的,最近有项目需要用到delphi,下面这个方法是照别人写的改了下,由于对delphi不熟悉,还请各位大侠帮忙了,
问题1:sTM在数据库里是BINARY(8)类型的字段,下面代码里我怎么把sTM赋给pTM呢?
问题2:怎么把pointer(pDAC)转换成string 返回呢

function GetCashCardBalanceDAC(sTM:PChar;cYE:Currency):string; stdcall;
var
  pTM, pDAC: PChar;
  mBalance: Currency;
  iBalance: Integer;
begin
   mBalance := 0;
   iBalance := 0;
   GetMem(pTM, 8);
   FillChar(pTM^, 8, $0);
   GetMem(pDAC, 8);
   FillChar(pDAC^, 8, $0);
   mBalance := cYE;
   pTM:=sTM; --问题1
   DesEncrypt(PChar(DesKey_DAC), pTM, 1);
   iBalance := round(mBalance * 100);
   Move(iBalance, pDAC^, 4);
   DesEncrypt(pTM, pDAC, 1);
  result:= String(Char(pointer(pDAC)^)) ; --问题2

    FreeMem(pTM);
    FreeMem(pDAC);
end;

问题1:sTM在数据库里是BINARY(8)类型的字段,下面代码里我怎么把sTM赋给pTM呢?
ZeroMemory(pTM, sizeof(pTM)); // 清空内存
CopyMemory(pTM, sTM, sizeof(sTM));// 把sTM的内存拷贝到pTM


问题2:怎么把pointer(pDAC)转换成string 返回呢
同样无非也是内存拷贝,不过string类型的字符内容索引是从1开始,0处保存的是字符串的长度信息
.......
SetLenght(result, sizeof(pDAC));// 给字符串指定长度
CopyMemory(pDAC, @result[1], sizeof(pDAC));//内存拷贝

需要注意的是,pchar是指向char的指针,是以0为终止符的字符串类型,你也许要确认下该pchar的最后一个字节是0

热点排行