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

📄 carrierfile.pas

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

interface

uses Classes, SysUtils, BasicFile, DataFile, MultiLang
{$IFDEF CLX}
  , QForms
{$ELSE}
  , Forms
{$ENDIF}
  ;

type
  TPercentChangeEvent = procedure(Sender: TObject; Percent: Integer) of object;
  TActionChangeEvent = procedure(Sender: TObject; Action: String) of object;
  TWantCancelEvent = procedure(Sender: TObject; var Cancel: Boolean) of object;

  TCarrierFile = class (TBasicFile)
  protected
    FileType:      Integer;
    /////////////////////////////////////////////
    // FILE TYPE TABLE
    // ------------------------------------------
    //    0 unknown
    //
    // 10.. plain text formats
    // 1001 ASCII/ANSI - replacement #20 -> #0
    // 1002 ASCII/ANSI - eol insertion
    // 1010 HTML, XML
    //
    // 2... pixel image formats
    // 2100 Windows Bitmap
    //
    // 50.. other formats
    // 5001 Adobe Acrobat PDF
    // //////////////////////////////////////////
    FPercentChange: TPercentChangeEvent;
    FActionChange:  TActionChangeEvent;
    FWantCancel:    TWantCancelEvent;
  public
    Percent:       Integer;
    Action:        String;
    constructor Create; override;
    destructor Destroy; override;
    procedure SetFileType(TypeId: String; ColDepth: Byte);
    function GetFileType: String;
    function GetColorDepth: Byte;
    function GetAvailSize: Longint; virtual;
    function EnoughSpaceToHide(n: Longint): Boolean; virtual;
    function Encode(ToHide: TDataFile): Boolean; virtual;
    function Decode(var ResultFile: TDataFile): Boolean; virtual;
    function isUsable: String; virtual;
  published
    property OnPercentChange: TPercentChangeEvent read FPercentChange write FPercentChange;
    property OnActionChange: TActionChangeEvent read FActionChange write FActionChange;
    property OnWantCancel: TWantCancelEvent read FWantCancel write FWantCancel;
  end;

implementation

  constructor TCarrierFile.Create;
  begin
    inherited Create;
    Percent:=0;
    Action:='';
    FileType:=0;
  end;

  destructor TCarrierFile.Destroy;
  begin
    inherited Destroy;
  end;

  procedure TCarrierFile.SetFileType(TypeId: String; ColDepth: Byte);
  var
    typeval:   Integer;
  begin
    typeval:=0;
    TypeId:=Uppercase(TypeId);
    if TypeId='ASC' then typeval:=1001;
    if TypeId='TXT' then typeval:=1002;
    if TypeId='XML' then typeval:=1010;
    if TypeId='BMP' then typeval:=2100;
    if TypeId='PDF' then typeval:=5001;
    FileType:=typeval;
  end;

  function TCarrierFile.GetFileType: String;
  begin
    case FileType of
      1001:    GetFileType:='ASC';
      1002:    GetFileType:='TXT';
      1010:    GetFileType:='XML';
      2100:    GetFileType:='BMP';
      5001:    GetFileType:='PDF';
    end;
  end;

  function TCarrierFile.GetColorDepth: Byte;
  begin
    GetColorDepth:=0;
  end;

  function TCarrierFile.GetAvailSize: Longint;
  begin
    Action:=ml.GetCodeString('CarrierFile',1);
    if Assigned(FActionChange) then FActionChange(self,Action);
    Percent:=0;
    if Assigned(FPercentChange) then FPercentChange(self,Percent);
    GetAvailSize:=0;
  end;

  function TCarrierFile.EnoughSpaceToHide(n: Longint): Boolean;
  begin
    if n>GetAvailSize then EnoughSpaceToHide:=False else EnoughSpaceToHide:=True;
  end;

  function TCarrierFile.Encode(ToHide: TDataFile): Boolean;
  begin
    Action:=ml.GetCodeString('CarrierFile',2);
    if Assigned(FActionChange) then FActionChange(self,Action);
    Percent:=0;
    if Assigned(FPercentChange) then FPercentChange(self,Percent);
    Encode:=False;
  end;

  function TCarrierFile.Decode(var ResultFile: TDataFile): Boolean;
  begin
    Action:=ml.GetCodeString('CarrierFile',3);
    if Assigned(FActionChange) then FActionChange(self,Action);
    Percent:=0;
    if Assigned(FPercentChange) then FPercentChange(self,Percent);
    Decode:=False;
  end;

  function TCarrierFile.isUsable: String;
  begin
    isUsable:='OK';
  end;

end.

⌨️ 快捷键说明

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