首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

关于delphi中TStreamMemory 将byte数组写下流中和把流中数据写入byte数组中

2013-09-10 
关于delphi中TStreamMemory 将byte数组写入流中和把流中数据写入byte数组中varmStream : TStreamMemoryby

关于delphi中TStreamMemory 将byte数组写入流中和把流中数据写入byte数组中
var
  mStream : TStreamMemory;
  bytVal1,bytVal2 : array[0..5]of byte;
  i :integer;
begin
  for i:=0 to 5 do
  begin
    bytVal1[i] := 90+i;
  end;
  fillchar(bytVal2,Sizeof(bytVal2),0); 
  mStream :=  TStreamMemory.Create();
  mStream.Position :=0;
  mStream.WriteBuffer(bytVal1[0],length(byteval1));
  mStream.Read(bytVal2[0],mStream.Size);
end;
//上面这个例子,出现的问题是:将数组1的数据写入流中,数据流的大小变为6,但读出数据到数据2确一个数据也没有填充进去。是不是写入没成功,如果没成功数据流大小为什么会是数据1的长度。 delphi
[解决办法]
谁跟你说的,有源码为啥不自己看
ReadBuffer的源码,其中也只是调用了Read,不过给包装了个异常
procedure TStream.ReadBuffer(var Buffer; Count: Longint);
begin
  // 直接调用Read,读取count大小数据,读取后如果数据大小不一致就抛出个异常
  if (Count <> 0) and (Read(Buffer, Count) <> Count) then
    raise EReadError.CreateRes(@SReadError);
end;

往流中写入或读出一个字节,postion都+1,读写完成后,postion就停在最后的位置,你得自己把postion还原到你希望的位置。这个数组是一个道理,只不过数组名即是指向首元素,而流的读写直接找postion

热点排行