在内部函数见调用时使用string,在返回给外面用Pchar转换。 例如: function strtopchar(str:string):pchar; var arrchar:array[0..102400] of char; begin fillchar(arrchar,102400,#0); StrCopy(@arrchar[0],pansichar(str)); Result:=@arrchar[0]; end;
To:guanking 不太清楚我的问题,或许是我写得不清楚? 我是这样:由参数来取得dll里的数据; function strtopchar(var str:pchar):boolean; begin ... str:=? end;
procedure TForm1.Button1Click(Sender: TObject); var vBuffer: PChar; begin GetMem(vBuffer, Length(Edit1.Text) + 1); StrCopy(vBuffer, PChar(Edit1.Text)); Edit2.Text := vBuffer; FreeMem(vBuffer); ......这是我刚到网上找到的提示源码;
例如:
function strtopchar(str:string):pchar;
var
arrchar:array[0..102400] of char;
begin
fillchar(arrchar,102400,#0);
StrCopy(@arrchar[0],pansichar(str));
Result:=@arrchar[0];
end;
不太清楚我的问题,或许是我写得不清楚?
我是这样:由参数来取得dll里的数据;
function strtopchar(var str:pchar):boolean;
begin
...
str:=?
end;
var
vBuffer: PChar;
begin
GetMem(vBuffer, Length(Edit1.Text) + 1);
StrCopy(vBuffer, PChar(Edit1.Text));
Edit2.Text := vBuffer;
FreeMem(vBuffer);
......这是我刚到网上找到的提示源码;