ddocstore.pas

来自「KSDev.BlockEngine.v3.03.rar 界面控件」· PAS 代码 · 共 79 行

PAS
79
字号
unit ddocstore;

{$I be_define.inc}

interface

uses Classes, ddoc;

procedure LoadBlockDocument(Stream: TStream; BlockDocument: TComponent);
procedure SaveBlockDocument(Stream: TStream; BlockDocument: TComponent);

procedure LoadBlockDocumentBinary(Stream: TStream; BlockDocument: TComponent);
procedure SaveBlockDocumentBinary(Stream: TStream; BlockDocument: TComponent);

implementation {===============================================================}


procedure SaveBlockDocument(Stream: TStream; BlockDocument: TComponent);
var
  BinStream: TMemoryStream;
  StrStream: TStringStream;
  s: string;
begin
  if BlockDocument = nil then Exit;

  BinStream := TMemoryStream.Create;
  try
    StrStream := TStringStream.Create(S);
    try
      BinStream.WriteComponent(BlockDocument);
      BinStream.Seek(0, soFromBeginning);
      ObjectBinaryToText(BinStream, StrStream);
      StrStream.Seek(0, soFromBeginning);
      Stream.CopyFrom(StrStream, StrStream.Size);
    finally
      StrStream.Free;
    end;
  finally
    BinStream.Free
  end;
end;

procedure LoadBlockDocument(Stream: TStream; BlockDocument: TComponent);
var
  StrStream: TStringStream;
  BinStream: TMemoryStream;
begin
  { Load object }
  StrStream := TStringStream.Create('');
  try
    StrStream.CopyFrom(Stream, Stream.Size);
    StrStream.Seek(0, soFromBeginning);
    
    BinStream := TMemoryStream.Create;
    try
      ObjectTextToBinary(StrStream, BinStream);
      BinStream.Seek(0, soFromBeginning);

      BinStream.ReadComponent(BlockDocument);
    finally
      BinStream.Free;
    end;
  finally
    StrStream.Free;
  end;
end;

procedure SaveBlockDocumentBinary(Stream: TStream; BlockDocument: TComponent);
begin
  Stream.WriteComponent(BlockDocument);
end;

procedure LoadBlockDocumentBinary(Stream: TStream; BlockDocument: TComponent);
begin
  Stream.ReadComponent(BlockDocument);
end;

end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?