TFiler, TWriter的源代码
TFiler = class(TObject)
private
FStream: TStream;//流, 将FBuffer缓冲区的内容写入流
FBuffer: Pointer; //内存
FBufSize: Integer;//内存大小
FBufPos: Integer;
FBufEnd: Integer;
FRoot: TComponent;
FLookupRoot: TComponent;
FAncestor: TPersistent;
FIgnoreChildren: Boolean;
constructor TFiler.Create(Stream: TStream; BufSize: Integer);
begin
FStream := Stream;
//FBuffer是一个指针
GetMem(FBuffer, BufSize);
FBufSize := BufSize;
end;
destructor TFiler.Destroy;
begin
if FBuffer <> nil then FreeMem(FBuffer, FBufSize);//释放内存.
end;
FRoot: TComponent;
FLookupRoot: TComponent;
FAncestor: TPersistent;
FIgnoreChildren: Boolean;
procedure TWriter.WriteBuffer; //将FBuffer缓冲区的内容写入流,同时FBuffer的当前位置为0.
begin
FStream.WriteBuffer(FBuffer^, FBufPos);
FBufPos := 0;
end;
function TWriter.GetPosition: Longint;
begin
Result := FStream.Position + FBufPos;
end;
procedure TWriter.FlushBuffer;
begin
WriteBuffer;
end;