📄 carrierfile.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 + -