读书人

pchar怎么赋值

发布时间: 2013-06-26 14:29:32 作者: rapoo

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;

读书人网 >.NET

热点推荐