要从内存中读取一个字符串,字符串最多为9个汉字长,而且是Unicode的
nname:array[0..17] of WideChar;
ReadProcessMemory (hProcess, Pointer(test), @nname, 18, tt );
for num:=0 to 17 do begin
if nname[num]<>'#0' then begin
nnum:=nnum+1;
end else begin nnum:=nnum+1; break;
end;
end;
Label30.caption :=WideCharLenToString(nname,nnum);我用这个方法读,有时候读出的字符串后面会跟着一些乱码,'#0'判断用在这里不对么...?
nname:array[0..17] of WideChar;
ReadProcessMemory (hProcess, Pointer(test), @nname, 18, tt );
for num:=0 to 17 do begin
if nname[num]<>'#0' then begin
nnum:=nnum+1;
end else begin nnum:=nnum+1; break;
end;
end;
Label30.caption :=WideCharLenToString(nname,nnum);我用这个方法读,有时候读出的字符串后面会跟着一些乱码,'#0'判断用在这里不对么...?
解决方案 »
- 请问现在学6.0好还是7.0好啊?区别大不大啊?送分啊!!!!!!!
- 关于ERP系统中的细能力排产的调整算法
- 各位大哥,怎么样在程序中对选中的节点的text进行修改?
- 如何实现这样的交叉表查询
- 求个Delphi打开网站,并返回网站所有内容的DLL
- delphi提示这个错误,是什么意思,急?
- 我的delphi在调试状态下,怎么不显示变量的值了?重新装了几次都没有用!急死我了!
- --------我发现一个问题,还是关于SQL server的日期类型.请高手进来看看!------
- 为什么程序关闭时会很慢??
- 请问:如何将一个单机版的数据库应用系统过渡为网络版?
- 请问cxgrid查询界面英文如何换成中文?
- 我發現一個Delphi7的Bug
if nname[num] <> #0 then begin
label30.caption:=trim(nname);但结尾有时还是会有小尾巴……
你直接
Label30.caption :=WideCharLenToString(nname, tt div 2);
应该就可以了。
for num := 0 to 17 do
begin
if nname[num] <> #0 then
nnum := nnum + 1
else
break;
end;
Label30.caption := WideCharLenToString(nname, nnum);