怎么将指针所指位置转换为16进制文本

如何将指针所指位置转换为16进制文本
已经知道
Buffer: Pointer;
BufferLength: Word

如何将转换为16进制文本呢.

var
 tmpArray    : array[0..4096] of Byte;
 ArraySize,i : DWORD;
 Count       : DWORD;
 tmpStr      : string;
 pStr        : PChar;
begin
   pStr := Buffer;
   tmpStr := string(pStr);
   Dec(PStr);
   for i:=0 to BufferLength-1 do
    begin
     inc(pStr);
     tmpArray[i] := Byte(pStr^);
    writeln(IntToHEX(Ord(tmpArray[i]),2));
    end;

end;



实际上结果应该是
00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF
但是
有丢包...
怎么将指针所指位置转换为16进制文本

------解决方案--------------------
在delphi2010以上版本,PChar实际上是PWideChar,是不是这个原因造成的。
------解决方案--------------------
定义   pStr : PAnsiChar; 
 


------解决方案--------------------

var
  P : PByte;
  i : integer;
begin
  P := Buffer;
  for i:=0 to Integer(BufferLength)-1 do begin
    WriteLn(IntToHEX(P^,2));
    Inc(P);
  end;
end;


楼主,你的代码转了很多次数据哦
------解决方案--------------------
是串口编程吗?用控件的话就把 IGNORENULLCHAR属性设置为FALSE, OUTX_XONXOFFFLOW 的值改为FALSE 。