先看如下代码:
var
str: string;
int: Integer;
begin
str := '123';
int := Integer(PChar(str));
ShowMessage(IntToStr(int));
str := PChar(int);
ShowMessage(str);
第一个showmessage显示的不是123,而是存放str这个变量的地址,第二个showmessage显示的是123。这样就可以将地址发送过去,从而得到这个变量的值。
典型的应用是postmessage,都知道postmessage最后两个参数是wparam和lparam,但这两个参数是int类型。所以就可以把变量的地址传过去,接收消息的时候pchar()转换一下就能得到所要的内容,如:
发送代码:
var
str: string;
str := '123';
PostMessage(TheHandle,WM_ME,Integer(PChar(str)),0)
接收代码:
var
str: string;
if msg.Msg = WM_ME then
begin
str:= PChar(msg.WParam);
end;