Top Page Common Archivers Component for Delphi/C++Builder


統合アーカイバコンポーネント for Delphi/C++Builder  

  Common Archivers Component for Delphi/C++Builder



 【Q&A】
[動作環境]
  1. LHA 形式書庫のみを扱うアプリケーションで使いたいのですが、実行時に UNLHA32.DLL 以外の アーカイバ DLL も必要になりますか?
  2. 実際に使用する形式に対応するための DLL のみで動作可能です。
    これらの DLL は、System ディレクトリか パスの通ったディレクトリに配置しておく必要があります。

  3. 統合アーカイバコンポーネントは Windows98/98SE/ME/2000/XP でも動作しますか?
  4. 未確認ですがコンポーネント自体は動作すると思います。
    充分テストされた上でご使用くださるようお願いいたします。
    もし動作に異常を認められた場合は こちら までお知らせ下さい。

  5. 統合アーカイバコンポーネントはマルチスレッドに対応していますか?
  6. このコンポーネントはスレッドセーフには作られていません。
    メインスレッド以外で使用する際は、アーカイバ DLL のマルチスレッドへの対応を 確認された上で アプリケーション側でリソースの衝突を避けるようにして下さい。

[書庫作成]

  1. v1.50 のコンポーネントを使って書庫を作ると 誤ったパス情報が記録されます。
  2. 1.88c よりも前のバージョンの UNLHA32.DLL には、EnumMemberInfo64 API を使用すると 誤ったパス情報を記録する不具合があります。
    この不具合を回避するには 1.88c 以降の UNLHA32.DLL を使用するか、Options.IncludeExtraStreams オプションに false を指定し、かつ、EnumMember イベントを使用しないようにしてください。

  3. 書庫ファイル AAA.LZH を E:\ に作成したいのですが方法がわかりません。
  4. FileName プロパティに 'E:\AAA.LZH' を設定して下さい。

  5. 作業ディレクトリを指定する方法がわかりません。
  6. Options.w に 'K:\TMP\' のような形で作業ディレクトリを指定してください。
    ただし、この機能は LHA 形式の処理でのみ有効です。

  7. 圧縮が取り消されたかどうかを知りたいのですが。
  8. メソッドの戻り値が ERROR_USER_CANCEL かどうかで判定できます。
    ■ご注意■
    処理途中でのキャンセル操作は、アプリケーションやOSのクラッシュを引き起こすことがあります。

  9. Options.r に 1 を指定して 'TEST\*.*' を ZIP 形式で圧縮したいのですが うまくいきません。
  10. この現象は、コンポーネント側の問題が原因です。
    v1.15 以前のコンポーネントで ZIP32J.DLL を使用する場合に発生します。
    v1.16 以降のコンポーネントは修正されています。
    変更履歴

  11. ディレクトリ名のみを指定した時に、ディレクトリ丸ごと圧縮したいのですが。
  12. Options.r に 2 を指定した上で 内部フィルタ をお使いください。

  13. Options.r に 1 以上を指定していると、test.txt だけを圧縮したいのに xxx\test.txt などまで圧縮されてしまいます。
  14. Options.p に 1 を指定した上で、内部フィルタ をお使いください。

  15. CAB 書庫を作成する時にファイルが欠落します。
  16. 古い CAB32.DLL を使用していると、非常に多数かつ大量のファイル ( 例えばファイル7000個で400MBとか ) を 一つの書庫にまとめようとすると、たくさんのファイル ( 例えば先頭の3000個とか ) が欠落する現象 が発生することがあります。
    新しい CAB32.DLL をお使い下さい。
    また、このコンポーネントと CAB32.DLL v0.75〜v0.80 を併用すると問題が発生します。
    v0.74 以前 もしくは v0.81 以降の DLL をお使い下さい。

  17. ZIP 書庫を作成する時にファイルが欠落します。
  18. 非常に多数かつ大量のファイルを一つの ZIP 書庫にまとめようとした時に ファイルが欠落する現象が発生するというご報告を頂いています。
    v1.24 以前のコンポーネントでは、名前に "[" 文字を含むファイルが欠落することがありました。
    v1.25 以降のコンポーネントをお使い下さい。

  19. CAB 書庫を作成する時に Options.x が効いていないようです。
  20. CAB32.DLL には、書庫作成時にパス情報を書き込まないようにする指定がないようです。
    したがって、現段階では Options.x は CAB 形式書庫では展開時のみしか有効になりません。
    また、古い CAB32.DLL では基準ディレクトリ指定もうまく働かないようですので、あらかじめ ChDir しておくなどの手段でパス情報の記録を抑止してください。

  21. LZH 書庫を作成する時に 基準ディレクトリを指定したのにフルパスが記録されます。
  22. UNLHA32.DLL では 基準ディレクトリを指定していても格納ファイル名にフルパスを渡すとフルパスが記録されます。
    v1.38 以降のコンポーネントを Delphi 3 以降で使っている場合、Options.jfに -2 を指定することによって相対パスを記録することができるようになっています。


[経過表示]
  1. 解凍状況ダイアログを表示させない方法はありますか?
  2. Options.n に 1 を設定して下さい。

  3. 自前の経過フォームを作成できますか?
  4. v1.22 から経過イベントのサポートを追加しました。
    このイベントを拾えば独自の経過フォームを表示させることも可能になります。

  5. 書庫全体を 100% とする経過表示は可能ですか?
  6. Options.gn に 1 を指定して下さい。
    ただし、この機能は LHA 形式の書庫でのみ有効です。

  7. ZIP 形式書庫の作成時に経過ダイアログが表示されません。
  8. 最新の ZIP32J.DLL には 経過表示機能が付加されています。
    ZIP32J.DLL を新しいものに差し替えて下さい。

  9. ZIP 形式書庫の経過ダイアログ表示が途中で止まります。
  10. ZIP32J.DLL の経過表示は、Win95/98 でバッファサイズ制限のあるコントロールで実現されています。
    コントロールのサイズ制限を越えた後は行追加できなくなるため、 それ以降経過表示が変わらなくなります。

  11. 処理中にマウスカーソルを変えたくないのですが。
  12. 現在のところ、このコンポーネントではカーソル制御関連の機能をサポートしておりません。
    直接 UnlhaSetCursorMode などを呼び出して制御して下さい。


[書庫展開]
  1. 既存ファイルの有無や日時にかかわらず、常に上書きで解凍したいのですが。
  2. Options.c に 1 を設定して下さい。

  3. 下記のファイルが登録されている書庫ファイルを
    AAA\111.TEXT
    AAA\222.TXT
    AAA\BBB\333.TXT
    AAA\BBB\444.TXT
    下記のような形に展開したいのですが、方法はありますか?
    D:\XXX\111.TXT
    D:\XXX\222.TXT
    D:\XXX\BBB\333.TXT
    D:\XXX\BBB\444.TXT
  4. 一度にそのような形で解凍するのは不可能です。
    もし可能ならば、書庫ファイル作成時の基準ディレクトリに 'AAA\' を指定して、 書庫ファイルに 'AAA\' からの相対ディレクトリが記録されるようにするとよいでしょう。

  5. 書庫に記録されているディレクトリを無視して解凍することはできますか?
  6. Options.x に 0 を指定してから UnpackFiles メソッドを使用して下さい。

  7. 下記のファイルが登録されている書庫ファイルを
    \111.TEXT
    \222.TXT
    \BBB\333.TXT
    \BBB\444.TXT
    下記のような形に展開したいのですが、方法はありますか?
    D:\XXX\111.TXT
    D:\XXX\222.TXT
    D:\XXX\BBB\333.TXT
    D:\XXX\BBB\444.TXT
  8. Option.jf に 0 を指定して下さい。
    現在のところ LHA 形式でのみ有効です


[自己解凍書庫作成]
  1. Lha 形式の書庫から自己解凍書庫をうまく作ることができません。
  2. 32bit Windows 用の自己解凍書庫を作成するには、Options.gw に 1 以上の値を指定する必要があります。
    16bit Windows 用の自己解凍書庫を作成するには、Options.jw に 1 以上の値を指定してください。
    両方とも 3 または 4 が推奨値です。

  3. tar/tgz 形式の書庫から自己解凍書庫を作ることができません。
  4. tar/tgz 書庫からの自己解凍書庫の作成には、kmtersef.exe が必要です。
    このファイルをパスの通ったディレクトリか system ディレクトリ配置してください。
    kmtersef.exe は、 「個別ライブラリ」ページ で tar32.dll と一緒に( アーカイブは別です )配布されています。

  5. CAB 書庫から自己解凍書庫を作成する時にファイルが欠落します。
  6. わりと少数のファイル ( 20個程度 ) しか含まない CAB 書庫から自己解凍書庫を作る場合でも 自己解凍書庫からファイルが欠落する現象を確認しています。
    この現象の原因はおそらくコンポーネント側ではなく、アーカイバ DLL 側の問題だと思われます。

  7. ZIP 形式の書庫から自己解凍書庫を作ることができません。
  8. ZIP 形式書庫からの自己解凍書庫の作成には、win32gui.dat が必要です。
    このファイルをパスの通ったディレクトリか system ディレクトリ配置してください。
    このコンポーネントを使う限りは必ずしも win32gui.dat を system ディレクトリに配置する必要はありません。
    win32gui.dat は、 「個別ライブラリ」ページ で ZIP32J.DLL と一緒に( アーカイブは別です )配布されています。
    なお、ZIP 形式書庫からの自己解凍書庫の作成には v1.19 以降のコンポーネントと ZIP32J.DLL が必要です。
    ZIP32J.DLL のバージョンは特に気にしなくてよいようです。

  9. 自己解凍書庫を出力するパスの指定はできますか?
  10. MakeSfxFile メソッドの TargetPath 引数にパスを指定して下さい。
    この機能は v1.20 以降のコンポーネントで使用可能です。

  11. 設定ダイアログを表示させずに自己解凍書庫を作ることができますか?
  12. Lha 形式の書庫から設定ダイアログを表示させずに自己解凍書庫を作るには、Options.gw に 2 や 4 を指定して下さい。

  13. 自己解凍書庫の設定ダイアログの初期値を指定することはできますか?
  14. UNLHA32.DLL 1.87b 以降と v1.48 以降のコンポーネントの組み合わせなら可能です。
    Options.gya〜Options.gyx に初期値を指定してください。
    それぞれのオプションの意味については UNLHA32.DLL の添付ドキュメントを参照してください。


[書庫形式判定]
  1. 自己解凍書庫の形式を判定する方法はありますか?
  2. FileName プロパティにファイル名を代入後、ArchiverType プロパティを参照して下さい。
    ただし、正式公開前の UNZIP32.DLL および UNLHA32.DLL v1.40 以降 v1.46b までで この機能を使用すると、対象のファイルが開いたままになることがあります。
    バージョンにご注意下さい。

[その他]
  1. 書庫ファイルが更新されたらイベントが発生するような機能が追加される予定はありますか?
  2. 機能付加の予定はありません。監視機能の実装には大きなコードが必要なためです。
    ファイルの更新の監視には、他のコンポーネントをお使い下さい。

  3. IndivisualInfo の wDate と wTime を TDateTime に変換したいのですが。
  4. Filters ユニットに DosDateTimeToDateTime 関数があります。
    この関数で日付の形式を変換することができます。( v1.16 以降 )
    uses 節に Filters を追加してご使用下さい。
    v1.39 以降のコンポーネントをお使いの場合は、wDate/wTime の他に IndivisualInfo の WriteTime/AccessTime/CreateTime も使用可能です。

  5. IDE 内で例外が多発します。
  6. ZIP 書庫の処理をする際に LMZIP32.DLL を見つけられなかったり、 古い ZIP32J.DLL をお使いの時、IDE 内で例外が多発します。
    これは仕様とご理解下さい。
    実行ファイルにした状態では必要な時のみ例外が発生するようになります。

  7. ZIP 書庫の一覧が最後まで取得できません。
  8. ZIP32J.DLL の Find 系 API は、固定サイズのバッファに UNZIP32.DLL を使って一覧を出力し、 それを解析することによって実現されています。
    そのため、バッファ容量を超える分の一覧を取得することができません。
    たくさんのファイルを含む ZIP 書庫を扱いたい場合は、新しい UNZIP32.DLL を使うか、LMZIP32.DLL を併用して下さい。

  9. ZIP 形式のパスワード付加機能に対応する予定はありますか?
  10. 現在のところ、対応の予定はありません。
    この機能をサポートしているアーカイバが少ないためです。
    アプリケーションでこの機能をご使用になる場合は Options.UserOptions に '-P <password>'を指定して下さい。

  11. BEL 形式の書庫が解凍できません。
  12. UNBEL32.DLL 0.43 以降を使って下さい。
    0.42 以前の UNBEL32.DLL には対応しておりません。

  13. x オプションを指定しているのに ディレクトリが記録されません。
    おかしなディレクトリが記録されることがあります。
  14. UNLHA32.DLL 1.88c 以降を使って下さい。
    UNLHA32.DLL のバージョンを指定できない場合は、InlcludeExtraStreams オプションと EnumProc イベントの使用するのをやめてください。



このページについてのお問い合せは: norg1964@ceres.dti.ne.jp へ   ( 2004.04.20 更新 )