vahes, PWideString - это указатель на WideString который сам по сути является указателем, то есть указатель на указатель получается...
чтоб работало надо так:
delphi Код:
Procedure OnUserInfo(PPck: pointer);
begin
UserInfo.X:=PDword(Dword(PPck))^;
UserInfo.Y:=PDword(Dword(PPck)+4)^;
UserInfo.Z:=PDword(Dword(PPck)+8)^;
UserInfo.ObjectID:=PDword(Dword(PPck)+16)^;
UserInfo.Name:=PWideChar(Dword(PPck)+20);
...
и компилятор уже сам позаботится о превращении PWideChar в WideString