delphi的DLL导出函数中pchar问题 10
用delphi做了一个DLL,导出函数格式如下:functionCal(a1,a2,a3:integer;a8:pchar):integer;varstr:string;...
用delphi做了一个DLL,导出函数格式如下:
function Cal(a1,a2,a3:integer;a8:pchar):integer;
var
str:string;
begin
str := format('%1d%2d%3d',[a1,a2,a3]);
CopyMemory(a8,pchar(str),8);
result := 0;
end
结果a8在内存中总是多了'#$12'!'
例如a1=1,a2=68,a3=888时
a8 在调试时总是'16888'#$12'!'
求解
同样的代码我写在一个EXE里
function Cal(a1,a2,a3:integer;a8:pchar):integer;
var
str:string;
begin
str := format('%1d%2d%3d',[a1,a2,a3]);
CopyMemory(a8,pchar(str),8);
result := 0;
end
procedure TForm1.Button1Click(Sender: TObject);
var
CodeBuff :array[0..7] of char;
temp :integer;
beign
temp:= Cal(1,2,3,@CodeBuff[0]);
Edit1.Text := CodeBuff;
end
这个EDIT控件的文本总是多一点出来 展开
function Cal(a1,a2,a3:integer;a8:pchar):integer;
var
str:string;
begin
str := format('%1d%2d%3d',[a1,a2,a3]);
CopyMemory(a8,pchar(str),8);
result := 0;
end
结果a8在内存中总是多了'#$12'!'
例如a1=1,a2=68,a3=888时
a8 在调试时总是'16888'#$12'!'
求解
同样的代码我写在一个EXE里
function Cal(a1,a2,a3:integer;a8:pchar):integer;
var
str:string;
begin
str := format('%1d%2d%3d',[a1,a2,a3]);
CopyMemory(a8,pchar(str),8);
result := 0;
end
procedure TForm1.Button1Click(Sender: TObject);
var
CodeBuff :array[0..7] of char;
temp :integer;
beign
temp:= Cal(1,2,3,@CodeBuff[0]);
Edit1.Text := CodeBuff;
end
这个EDIT控件的文本总是多一点出来 展开
2个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询