哪位大侠帮忙看看代码该怎么写,急,先谢谢了
小弟是学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