1、下面这段代码,为啥中间两个p不执行呢?
procedure TForm1.Button4Click(Sender: TObject);
var
ss:string;
p:pchar;
begin
ss:='a23'; //执行
p:=pchar(ss); //未执行
ss:='455';//执行
p:=pchar(ss);//未执行
ss:='888'; //执行
p:=pchar(ss);//执行2、封装的dll,其中一个参数是var
Function gettext(var inputtext:Pchar):Boolean;stdcallpb申明Function Boolean gettext(ref String inputtext) library "Mydll.dll"就是得不到返回的值,不是程序死掉就是返回乱码。
procedure TForm1.Button4Click(Sender: TObject);
var
ss:string;
p:pchar;
begin
ss:='a23'; //执行
p:=pchar(ss); //未执行
ss:='455';//执行
p:=pchar(ss);//未执行
ss:='888'; //执行
p:=pchar(ss);//执行2、封装的dll,其中一个参数是var
Function gettext(var inputtext:Pchar):Boolean;stdcallpb申明Function Boolean gettext(ref String inputtext) library "Mydll.dll"就是得不到返回的值,不是程序死掉就是返回乱码。
看你的 Projects Options->Compiler 把optimization 勾选去掉 这个是编译器优化
2,为什么又是var,又传指针呢,指针是不是被改了,var去掉试试