利用TFileStream.Read函数读取几兆的文件,FileStream.Read(ReturnString[0],FileStream.Size);
把读到的值赋给PCHAR的变量ReturnString,则可以像数组一样操作,A:=ReturnString[10];现在我定义了一个B:^BYTE;
FileStream.Read(B,FileStream.Size);现在我想其B像数组一样操作。怎么实现啊?
或者有更好的办法了?

解决方案 »

  1.   

    例子:
    在type后加入
    pByte = ^Byte;方法如下:
    procedure TForm1.Button3Click(Sender: TObject);
    var
      b : array of byte;
      i : integer;
      procedure SetPByte(Apbyte : pType;size : byte);
      const
        BaseValue = 1;
      var
        i : integer;
      begin
        for i:=1 to size do
        begin
          Apbyte^ := BaseValue + i;
          inc(Apbyte);
        end;
      end;
    begin
      SetLength(b,2);
      SetPByte(@b[0],2);
      for i:=0 to 1 do
      begin
        ShowMessage(IntToStr(b[i]));
      end;
    end;
    楼主有点儿太抠门了吧,我费了半个小时才写出这段例子,好辛苦
      

  2.   

    不要用^Byte,用PByteArray就可以了
      

  3.   

    B:PByteArray,
    但是在FileStream.Read(B,FileStream.Size);编译不过啊!cuilj(一云忆水) :
    FileStream.Read(B,FileStream.Size)在这里B已经被赋制值了,那又怎么把B和array of byte数组联合起来了?
      

  4.   

    for i:=1 to Size do
      begin
        ShowMessage(IntToStr(B^));
        inc(B);
      end;