读书人

数据流类Tmemorystream与Tstream有什么

发布时间: 2012-02-13 17:20:26 作者: rapoo

数据流类Tmemorystream与Tstream有什么区别?
如题

[解决办法]
TCustomMemoryStream = class(TStream)
private
FMemory: Pointer;
FSize, FPosition: Longint;
protected
procedure SetPointer(Ptr: Pointer; Size: Longint);
public
function Read(var Buffer; Count: Longint): Longint; override;
function Seek(Offset: Longint; Origin: Word): Longint; override;
procedure SaveToStream(Stream: TStream);
procedure SaveToFile(const FileName: string);
property Memory: Pointer read FMemory;
end;

{ TMemoryStream }

TMemoryStream = class(TCustomMemoryStream)
private
FCapacity: Longint;
procedure SetCapacity(NewCapacity: Longint);
protected
function Realloc(var NewCapacity: Longint): Pointer; virtual;
property Capacity: Longint read FCapacity write SetCapacity;
public
destructor Destroy; override;
procedure Clear;
procedure LoadFromStream(Stream: TStream);
procedure LoadFromFile(const FileName: string);
procedure SetSize(NewSize: Longint); override;
function Write(const Buffer; Count: Longint): Longint; override;
end;

就这样的关系
[解决办法]
TStream 是一个通用 Stream 抽像, 提供 Position, Read, Write 主要的流操作几个方法&属性

相关的有 TMemoryStream , TFileStream, TSocketStream

都派生自 TStream, SocketStream 中没有 Position
[解决办法]
祖先类与子类
[解决办法]
一个是抽象的

一个子类化了

TStream 不能直接实例化

TmemoryStream可以

利用TStream 可以

TMemoryStream TFileStream 等等 从TStream继承来的类可以方便地交换传递数据...

读书人网 >.NET

热点推荐