pchar如何赋值
本帖最后由 fbiboss 于 2013-05-21 14:53:58 编辑
不能直接p:='fff';,是要用Strcopy(p,'fff');这样的吧?
但是如果是要读内存的,要怎么办啊?
这样写会有问题吗?
p:PChar;
allocmem(p,30);
ReadProcessMemory(phandle,Pointer(baseaddr),p,30,tmpNum);
freemem(p);
[解决办法]
我们给字符指针申请内存主要是为了在 API 中接受数据, 如果我们要直接赋给常量值, 系统会自动分配内存的, 譬如:
--------------------------------------------
var
p: PChar;
begin
p := '万一的 Delphi 博客';
ShowMessage(p); {万一的 Delphi 博客}
end;
--------------------------------------------
当然我们也可以用这种办法申请内存, 就是笨了点, 譬如:
--------------------------------------------
//获取系统目录
var
p: PChar;
begin
p := PChar(StringOfChar(Char(0), 256)); {反复一个空字符 256 次成一个字符串, 然后转为 PChar}
GetSystemDirectory(p, StrBufSize(p));
ShowMessage(p); {C:\WINDOWS\system32}
end;
--------------------------------------------
如果在 API 函数需要的字符指针是为了输入, 当然也不需要申请内存, 譬如:
--------------------------------------------
//设置窗口标题
var
p: PChar;
begin
p := '窗口新标题';
SetWindowText(Handle, p);
end;