procedure TForm1.Button1Click(Sender: TObject);
procedure Fun1(p:Pointer);
begin
//ShowMessage(string(p^));
//假设我不知道 这里有没办法得知 p 是指向一个string
end;
var
s:string;
p:Pointer;
begin
s:='a';
fun1(@s);
end;
procedure Fun1(p:Pointer);
begin
//ShowMessage(string(p^));
//假设我不知道 这里有没办法得知 p 是指向一个string
end;
var
s:string;
p:Pointer;
begin
s:='a';
fun1(@s);
end;
procedure Fun1(p : variant);
begin
varisStr 来判断
end;
具体你可以了解下变体类型的知识。
如果 p是一个string的指针,那么:
pint(integer(p)-4)^=length(p^);
p^[length(p^)] = 0;但问题是你不能对任意一个指针进行pint(integer(p)-4)^ 访问,
有可能变成非法访问。