数据流类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继承来的类可以方便地交换传递数据...