TStream读取单个字节

时间:2015-03-27 07:32:50

标签: delphi

我想用TStream(streamIn)或缓存文件中的任何流逐字节读取。

我不喜欢'我知道Streams很好,实际上我想逐字节地读取缓存文件。 当这个"读"从另一个类调用的函数必须读取缓存文件中的下一个字节。但是TStream没有" readbyte"方法。

function TStringInputStream.read : Integer;
begin
if not back then 
   lastByte:= streamIn.ReadByte -> ???
back:= false;
Result:= lastByte;
end;

function TStringInputStream.readLine: String;
var
  c     : Integer;
  ns    : Boolean;
  endd  : Boolean;
  res   : String;
begin
  ns:= True;
  endd:= False;

  while not endd do
  begin
    c:= read;
    if (c = -1) and (ns) then
    begin
      Result:= '';
      Exit;
    end;
    ns:= false;

    if (c = LF) or (c = -1) then
      endd:= true
    else if c = CR then
    begin
      if read <> LF then
        rewind;
      endd:= true;
    end
    else
      res:= IntToStr(c);
  end;

  Result:= res;
end;

1 个答案:

答案 0 :(得分:4)

使用ReadBuffer读取单个字节。

var
  B: Byte;
....
Stream.ReadBuffer(B, SizeOf(B));

或者,如果您使用XE3或更高版本,则可以使用ReadData

Stream.ReadData(B);