--------------------------------------------------
◆基礎
--------------------------------------------------
・ファイルの圧縮処理にはTArchiveFileを用いる。
・K-WINCで圧縮処理を行っているのは通関データ送信のみである。
・基本的にこの周辺のコードを触る必要はないものと考えられる。
--------------------------------------------------
◆TArchiveFile
--------------------------------------------------
■プロパティ
・FileName 圧縮後のファイル名(ex test.lzh)
・Options.gw WinSFX32M 形式ダイアログ表示無し指定
・Options.jso 共有エラーの場合に処理を続行 LHA の -jso1 オプションに相当
・Options.jyo 上書きダイアログの非表示
・OutputSize 出力バッファサイズを指定
・Options.n 経過非表示指定なし
■メソッド
・PackFiles 圧縮実行
・MakeSfx 自己解凍形式への変換
■サンプル
procedure ExecArchive(pMotoFile, pLzhFile : string):string;
var
slFileList : string; //圧縮前ファイル名
begin
Result := False;
try
//書庫ファイル名の指定
ArchiveFile.FileName := pLzhFile; // 拡張子を指定したのでアーカイバの指定は不要
//オプション指定の例
ArchiveFile.Options.gw := 2; //WinSFX32M 形式ダイアログ表示無し指定
ArchiveFile.Options.jso := 1; //共有エラーの場合に処理を続行 LHA の -jso1 オプションに相当
ArchiveFile.Options.jyo := 1; //上書きダイアログの非表示
ArchiveFile.OutputSize := 8192; //出力バッファサイズを指定
ArchiveFile.Options.n := 1; //経過非表示指定なし
//圧縮元ファイル名
slFileList := TStringList.Create;
slFileList.Add(pMotoFile);
//ファイル圧縮 3つめのオプションは基準ディレクトリ
//実行結果は正常終了時は”0”が返ってくる
if ArchiveFile.PackFiles(frm1.Handle, nil, '', [slFileList]) = 0 then
begin
//自己解凍形式 3つめのオプションは基準ディレクトリ
if ArchiveFile.MakeSfx(frm1.Handle, nil, '') = 0 then
begin
Result := True;
end
end
finally
end;
end;
--------------------------------------------------
◆参考
--------------------------------------------------
サンプルプログラム集 圧縮ファイル(lzh,zip)の作成
http://homepage2.nifty.com/Mr_XRAY/Delphi/plSamples/T_CompressFiles.htm
圧縮プログラムを作る
http://hp.vector.co.jp/authors/VA015730/delphi/make_arc.html