smlyk 发表于 2011-4-2 10:07:56

请懂的朋友帮看看这个函数的返回值为什么只能取第一个字

Function Tform1.GW():WideChar;
var
XID,a,b:PDWORD;                  // XID为当前选定怪物的ID
GWName:PWideChar;         //这个定义的是怪物的名字
begin
a:=Pointer(GameBase);
a:=Pointer(a^+$1C);
XID:=Pointer(a^+$24);
XID:=Pointer(XID^+$974);
    begin
      b:=Pointer(a^+$8);
      b:=Pointer(b^+$20);
      b:=Pointer(b^+$18);
      b:=Pointer(b^+4*(XID^ mod $301));
      b:=Pointer(b^+$4);
      b:=Pointer(b^+$274);
      GWName:=Pointer(b^);
      Result:=GWName^;
end;

procedure TForm1.Button22Click(Sender: TObject);
begin
Edit1.Text:=GW();                     //编辑框里只显示了怪物名字的第一个字
end;


请朋友们帮我看看怎么取到完整的怪物名??

chc2203 发表于 2011-4-2 10:08:06

返回值是WideChar(宽字符型) 字节数2个.正好一个汉字.
估计这个要修改返回值类型.

wwgywl 发表于 2011-4-2 10:08:14

这里改一下试试:
GWName:arrayof widechar;//怪物名字
页: [1]
查看完整版本: 请懂的朋友帮看看这个函数的返回值为什么只能取第一个字