HSP2.xで、LHA書庫の圧縮と解凍を実現するモジュール
Hot Soup Processor 2.x系で使える、LHA書庫の圧縮と解凍用のモジュールです。loadlibとllmodを使用しています。
これを改造したら、同じ要領で、ZIP圧縮・解凍も実現できるんじゃないかな??
これを改造したら、同じ要領で、ZIP圧縮・解凍も実現できるんじゃないかな??
;##############################
; LHA書庫圧縮/解凍モジュール loadlib版
;
; LHA書庫圧縮/解凍モジュールの、loadlib及び、
; llmod使用版です。
; lhsp.dllが要らない代わりに、
; loadlib.dllと、llmod.asが必要です。
;##############################
;
; 【使用方法】
;
; lha_init LHAModuleの初期化
; lha_cfg UNLHA32の設定ダイアログを表示
; lha_save p1,p2 LZH書庫ファイルを作成
; lha_load p1,p2 LZH書庫ファイルを解凍
;
;● lha_init LHAModuleの初期化
; LHAModuleを初期化します。
; 最初に、必ず実行しておいてください。
;
;● lha_cfg UNLHA32の設定ダイアログを表示
; UNLHA32の設定ダイアログを表示します。
; refstrに、設定した内容を格納しますが、
; (たぶん)あまり必要性はありません。(^^;
;
;● lha_save p1,p2 LZH書庫ファイルを作成
; 指定したファイルを、LZH形式に圧縮します。
; p1に、書庫ファイル名
; p2に、圧縮前のファイル名/フォルダ名
; を指定してください。
; また、dialog命令などを使わずに、
; そのままファイルパスを記述する場合は、
; あらかじめchdir命令で、カレントディレクトリを変更しておいてください。
; (例
; ;選択したファイルを、file.lzhに圧縮する
; lha_init
; dialog "",16
; lha_save "file.lzh",refstr
;
;● lha_load p1,p2 LZH書庫ファイルを解凍
; 指定したLZHファイルを解凍します。
; p1に、書庫ファイル名
; p2に、解凍後のファイル名/フォルダ名
; を指定してください。
; また、dialog命令などを使わずに、
; そのままファイルパスを記述する場合は、
; あらかじめchdir命令で、カレントディレクトリを変更しておいてください。
; (例
; ;選択した書庫を、folderに解凍する
; lha_init
; dialog "lzh",16
; lha_load refstr,"folder"
;
;###############モジュール開始
#include "llmod.as"
#module "LHAMODULE2"
#deffunc lha_init
ll_libload@ dll,"UNLHA32.DLL"
return
#deffunc lha_cfg
mref st,64
mref ret,65
prm=0 : getptr prm.1,ret : prm.2=0
dllproc "UnlhaConfigDialog",prm,3,dll
return
#deffunc lha_save str,str
mref arcive,32
mref file,33
sdim cmd,$ffff
cmd="a \""+arcive+"\" \""+curdir+"\" "+file+" -x"
prm=0 : getptr prm.1,cmd : prm.2=0
dllproc "Unlha",prm,3,dll
sdim cmd,64
return
#deffunc lha_load str,str
mref arcive,32
mref file,33
gosub chkfile
sdim cmd,$ffff
cmd="x \""+arcive+"\" "+file
prm=0 : getptr prm.1,cmd : prm.2=0
dllproc "Unlha",prm,3,dll
sdim cmd,64
return
*chkfile
strlen len,file
tmp="" : peek tmp,file,len-1
if (tmp!="\\"){file+"\\"}
return
#global
;#################モジュール終了
; LHA書庫圧縮/解凍モジュール loadlib版
;
; LHA書庫圧縮/解凍モジュールの、loadlib及び、
; llmod使用版です。
; lhsp.dllが要らない代わりに、
; loadlib.dllと、llmod.asが必要です。
;##############################
;
; 【使用方法】
;
; lha_init LHAModuleの初期化
; lha_cfg UNLHA32の設定ダイアログを表示
; lha_save p1,p2 LZH書庫ファイルを作成
; lha_load p1,p2 LZH書庫ファイルを解凍
;
;● lha_init LHAModuleの初期化
; LHAModuleを初期化します。
; 最初に、必ず実行しておいてください。
;
;● lha_cfg UNLHA32の設定ダイアログを表示
; UNLHA32の設定ダイアログを表示します。
; refstrに、設定した内容を格納しますが、
; (たぶん)あまり必要性はありません。(^^;
;
;● lha_save p1,p2 LZH書庫ファイルを作成
; 指定したファイルを、LZH形式に圧縮します。
; p1に、書庫ファイル名
; p2に、圧縮前のファイル名/フォルダ名
; を指定してください。
; また、dialog命令などを使わずに、
; そのままファイルパスを記述する場合は、
; あらかじめchdir命令で、カレントディレクトリを変更しておいてください。
; (例
; ;選択したファイルを、file.lzhに圧縮する
; lha_init
; dialog "",16
; lha_save "file.lzh",refstr
;
;● lha_load p1,p2 LZH書庫ファイルを解凍
; 指定したLZHファイルを解凍します。
; p1に、書庫ファイル名
; p2に、解凍後のファイル名/フォルダ名
; を指定してください。
; また、dialog命令などを使わずに、
; そのままファイルパスを記述する場合は、
; あらかじめchdir命令で、カレントディレクトリを変更しておいてください。
; (例
; ;選択した書庫を、folderに解凍する
; lha_init
; dialog "lzh",16
; lha_load refstr,"folder"
;
;###############モジュール開始
#include "llmod.as"
#module "LHAMODULE2"
#deffunc lha_init
ll_libload@ dll,"UNLHA32.DLL"
return
#deffunc lha_cfg
mref st,64
mref ret,65
prm=0 : getptr prm.1,ret : prm.2=0
dllproc "UnlhaConfigDialog",prm,3,dll
return
#deffunc lha_save str,str
mref arcive,32
mref file,33
sdim cmd,$ffff
cmd="a \""+arcive+"\" \""+curdir+"\" "+file+" -x"
prm=0 : getptr prm.1,cmd : prm.2=0
dllproc "Unlha",prm,3,dll
sdim cmd,64
return
#deffunc lha_load str,str
mref arcive,32
mref file,33
gosub chkfile
sdim cmd,$ffff
cmd="x \""+arcive+"\" "+file
prm=0 : getptr prm.1,cmd : prm.2=0
dllproc "Unlha",prm,3,dll
sdim cmd,64
return
*chkfile
strlen len,file
tmp="" : peek tmp,file,len-1
if (tmp!="\\"){file+"\\"}
return
#global
;#################モジュール終了
最初に記事を書いた日:2017/10/30
この記事をシェアする
関連記事
- ・HSP2.xで、MIDIファイルのヘッダ情報を調べるモジュール
- ・HSP2.xで、HTMLファイル内のリンク先を列挙するサンプルコード(モジュール付き)
- ・HSP2.x系で、ファイルパスから、ファイル名やフォルダ名を取得するサンプルモジュール
- ・HSP2.x系で、アルファベットの大文字と小文字を相互変換するサンプルモジュール
- ・HSP2.x系で、平方根の近似値を整数で取得するサンプルモジュール
- ・HSP2.x系で、getkey、stick命令のキー番号を取得・表示するサンプルコード
- ・HSP2.x系で、円の中心に向かってグラデーションをかけるサンプルコード
- ・HSP2.x系用 ベンチマークプログラム ソースコード
- ・HSP2.xでMDIウインドウを作成するサンプルコード
要loadlib&llmod