如何将buffer里的每两个字节组成有符号的整数呢
buffer为Pointer类型我现在是这么做,但不知道下一步怎么办
var
   Buf: array[0..8191] of Byte;
begin
  //pbar.Position := Trunc(Buffer[0]*100);
  Move(Buffer^, Buf, Count);
end
请大家请点一下

解决方案 »

  1.   

    var
     iValue:Smallint;... 
     iValue:= Buf[0]*$100 + Buf[1];
      

  2.   

    一个例子:var
      Buf   : array[0..8191] of Byte;
      Buffer: PSmallint;
      iLoop : Integer;
    begin
      Buf[0] := 1;
      Buf[1] := 0;
      Buf[2] := 2;
      Buf[3] := 0;  ......  Buffer := @Buf[0];
      for iLoop := 0 to SizeOf(Buf) div SizeOf(Smallint) - 1 do
      begin
        ShowMessage (IntToStr(Buffer^));
        inc(Buffer);
      end;
    end;
      

  3.   

    直接把对应位置的两个字节拷贝到一个有符号的smallint类型变量中。
    var
      value: smallint;
    begin
      Move(Buffer^,value,2);//拷贝buffer内存块的第一第二字节
    end 
      

  4.   

    支持楼上。
    var 
          Buf:   array[0..8191]   of   smallint; 
    begin 
        //pbar.Position   :=   Trunc(Buffer[0]*100); 
      for i := 0 to 8191 do begin
        Move(Buffer^,   Buf,   2);
        buffer := pointer(integer(buffer) + 2);
      end;
     
    end或者强制类型转换直接使用。
     buffer := pointer(interge(buffer)+移位)
     siResult := smallint(buffer^);