已经知道
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
但是
有丢包...

解决方案 »

  1.   

    我觉得你先保存出来,再writeln应该就没问题了。这种写法没问题的,丢包应该还是内存发生了变化造成的。
      

  2.   

    在delphi2010以上版本,PChar实际上是PWideChar,是不是这个原因造成的。
      

  3.   

    定义   pStr : PAnsiChar; 
     
      

  4.   


    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;
    楼主,你的代码转了很多次数据哦
      

  5.   

    是串口编程吗?用控件的话就把 IGNORENULLCHAR属性设置为FALSE, OUTX_XONXOFFFLOW 的值改为FALSE 。