小弟是学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呢?
问题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;
解决方案 »
- 能在静态方法中引用祖先类的相同静态方法吗?
- Quick Report调用print方法以后打印机没有任何输出,怎么办?
- 关于菜单的问题,忘各位多多帮忙!!!
- 请教delphi中如何调用vc++写的dll
- 求在RichEidt中显示汉字的代码
- char型变量的赋值问题
- 想找个朋友讨论一下Delphi中如何把MDI子窗体放在Dll中的问题???
- delphi截取图像:用TBitMap.canvas.CopyRect,保存后结果失真严重,
- 可以同时装多个不同版本的Delphi吗?(Delphi5.0 Delphi6.0)
- 结构的长度
- delphi7中开发的程序可否无缝移植到DELPHI2010中
- 如何画很多图像点?
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