delphi7 内存取值问题 无人能解!难题 高手支招
320039002E0039003600000000000000对应的是29.96但是ReadProcessMemory读出来的只是【2】{9.96}取不出来。问:Rea...
32 00 39 00 2E 00 39 00 36 00 00 00 00 00 00 00
对应的是29.96
但是ReadProcessMemory读出来的只是【2】 {9.96} 取不出来。
问:ReadProcessMemory 人说{字节是 00 文本被截断}后的自然也就读取不了了。
怎么读取完整的。 展开
对应的是29.96
但是ReadProcessMemory读出来的只是【2】 {9.96} 取不出来。
问:ReadProcessMemory 人说{字节是 00 文本被截断}后的自然也就读取不了了。
怎么读取完整的。 展开
1个回答
展开全部
1、我不是楼主您所谓的“高手”,但我觉得这个问题简单地跟个“一”,实有WR大家智商之嫌。
2、这段字符串显然是用Unicode双字节表示的,你用AnsiString读到00就认为是结尾了。
3、解决很简单,用宽字符读取就行了(不要告诉我您没用过)。假设buffer是ReadProcessMemory结果的缓冲:
var
p: PWideChar;
begin
//如果你的buffer不是指针而是数组的话,将下面一句改成p := @buffer;
p := buffer;
ShowMessage(p);
end;
4、你可以用下面的程序验证:
const
buffer: array[0..15] of Byte = ($32, $00, $39, $00, $2E, $00, $39, $00, $36, $00,
$00, $00, $00, $00, $00, $00);
procedure TForm1.Button1Click(Sender: TObject);
var
p: PWideChar;
begin
p := @buffer;
ShowMessage(p);
end;
2、这段字符串显然是用Unicode双字节表示的,你用AnsiString读到00就认为是结尾了。
3、解决很简单,用宽字符读取就行了(不要告诉我您没用过)。假设buffer是ReadProcessMemory结果的缓冲:
var
p: PWideChar;
begin
//如果你的buffer不是指针而是数组的话,将下面一句改成p := @buffer;
p := buffer;
ShowMessage(p);
end;
4、你可以用下面的程序验证:
const
buffer: array[0..15] of Byte = ($32, $00, $39, $00, $2E, $00, $39, $00, $36, $00,
$00, $00, $00, $00, $00, $00);
procedure TForm1.Button1Click(Sender: TObject);
var
p: PWideChar;
begin
p := @buffer;
ShowMessage(p);
end;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询