⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 basicfile.pas

📁 wbs43open-src.zip 数字隐藏工具
💻 PAS
字号:
unit BasicFile;

interface
  uses Classes, SysUtils;

  type
    TBasicFile = class
      protected
        Data:      TMemoryStream;
        function LdStream(Source: TStream; Dest: TMemoryStream): Boolean;
        function LdFile(FileName: String; Dest: TMemoryStream): Boolean;
        function SvStream(Source: TMemoryStream; Dest: TStream): Boolean;
        function SvFile(Source: TMemoryStream; FileName: String): Boolean;
      public
        constructor Create; virtual;
        destructor Destroy; override;
        function LoadFromStream(Source: TStream): Boolean;
        function LoadFromFile(FileName: String): Boolean;
        function SaveToStream(Dest: TStream): Boolean;
        function SaveToFile(FileName: String): Boolean;
        function GetSize: Longint;
    end;

implementation

  constructor TBasicFile.Create;
  begin
    Data:=TMemoryStream.Create;
  end;

  destructor TBasicFile.Destroy;
  begin
    Data.Free;
    inherited Destroy;
  end;

  function TBasicFile.LdStream(Source: TStream; Dest: TMemoryStream): Boolean;
  var
    res:    Longint;
  begin
    LdStream:=True;
    Source.Seek(0,soFromBeginning);
    Dest.Clear;
    res:=Dest.CopyFrom(Source,Source.Size);
    if (res=0) or (res<Source.Size) then LdStream:=False;
  end;

  function TBasicFile.LdFile(FileName: String; Dest: TMemoryStream): Boolean;
  var
    FileStream:     TFileStream;
    ret:            Boolean;
  begin
    ret:=True;
    try
      FileStream:=TFileStream.Create(FileName,fmOpenRead);
    except
      on Exception do ret:=False;
    end;
    if ret then LdFile:=LdStream(FileStream,Dest)
    else LdFile:=False;
    FileStream.Free;
  end;

  function TBasicFile.SvStream(Source: TMemoryStream; Dest: TStream): Boolean;
  begin
    Source.Seek(0,soFromBeginning);
    Dest.CopyFrom(Source,Source.Size);
  end;

  function TBasicFile.SvFile(Source: TMemoryStream; FileName: String): Boolean;
  var
    FileStream:     TFileStream;
    ret:            Boolean;
  begin
    ret:=True;
    try
      FileStream:=TFileStream.Create(FileName,fmCreate);
    except
      on Exception do ret:=False;
    end;
    if ret then SvFile:=SvStream(Source,FileStream)
    else SvFile:=False;
    FileStream.Free;
  end;

  function TBasicFile.LoadFromStream(Source: TStream): Boolean;
  begin
    LoadFromStream:=LdStream(Source,Data);
  end;

  function TBasicFile.LoadFromFile(FileName: String): Boolean;
  begin
    LoadFromFile:=LdFile(FileName,Data);
  end;

  function TBasicFile.SaveToStream(Dest: TStream): Boolean;
  begin
    SaveToStream:=SvStream(Data,Dest);
  end;

  function TBasicFile.SaveToFile(FileName: String): Boolean;
  begin
    SaveToFile:=SvFile(Data,FileName);
  end;

  function TBasicFile.GetSize: Longint;
  begin
    GetSize:=Data.Size;
  end;

end.
 

⌨️ 快捷键说明

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