忍者ブログ

ゆるいSEの小ネタ集

ゆるキャラ好きのITエンジニアが書くTips。 ゆるキャラ命なSEのIT徒然草 https://itmagic.hatenablog.com/

[Delphi]ファイル圧縮処理

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

コメント

ただいまコメントを受けつけておりません。

[Delphi]ファイル圧縮処理

--------------------------------------------------
基礎
--------------------------------------------------
・ファイルの圧縮処理には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
PR

コメント

ただいまコメントを受けつけておりません。

プロフィール

HN:
ゆるキャラ命
性別:
非公開

P R