小编Ben*_*boy的帖子

我怎样才能从TFileStream和TMemoryStream中下载?

我有一个继承自TFileStream的类和一个继承自TMemoryStream的类.两者都实现与读取数据完全相同的功能,例如:

TCustomFileStream = class (TFileStream)
  function ReadByte: byte;
  function ReadWord: word;
  function ReadWordBE: word;
  function ReadDWord: longword;
  function ReadDWordBE: longword;
  function ReadString(Length: integer): string;
  function ReadBlockName: string;
  etc
Run Code Online (Sandbox Code Playgroud)

当我想编写一个可以将任何类型的流作为参数的函数时,我必须使用TStream:

function DoStuff(SourceStream: TStream);
Run Code Online (Sandbox Code Playgroud)

这当然意味着我无法使用自定义功能.什么是解决这个问题的最好方法?理想情况下,我希望能够有一个兼容FileStream或MemoryStream的Tst​​ream兼容类,所以我可以做这样的事情,如果流是FileStream或MemoryStream则无关紧要:

function DoStuff(SourceStream: TMyCustomStream);
begin
    data := SourceStream.ReadDWord;
    otherData := SourceStream.Read(Buffer, 20);

end;
Run Code Online (Sandbox Code Playgroud)

delphi tfilestream tstream

4
推荐指数
2
解决办法
388
查看次数

标签 统计

delphi ×1

tfilestream ×1

tstream ×1