トップページ > 記事閲覧
DXアーカイブの中の読み込みで強制終了する?
名前:was-blue.0793 日時: 2020/10/02 17:48

いつもお世話になっております。 DXアーカイブをパスワード付き・パスワードなしのものを混在させる必要がありますが、パスワードなしのDXアーカイブの中のデータを読み込もうとすると強制終了することがあります。 デバッガーで調査したところ関数の名前からハフマン圧縮の何らかの処理で例外が発生し、強制終了しているようでした。 ハフマン圧縮は固定ヘッダー攻撃回避のために行っているとのことなのでハフマン圧縮をかけないことはできませんが、 恐らくパスワードがないDXアーカイブに対してパスワードを使った解凍をかけようとして例外が発生し、強制終了するものと思われます。 異なる拡張子やパスワードのDXアーカイブを1つのプロジェクトで使用したいのですが、何か対処法があればご教示いただきたいです。 よろしくお願いします。
メンテ

Page: 1 |

Re: DXアーカイブの中の読み込みで強制終了する? ( No.1 )
名前:kanamaru 日時:2020/10/02 20:51

色々調べてみましたけど混在させることができる機能はないようです で、どうにかして混在させる方法を考えると、 パスワードを指定する関数は当たり前ですが、アーカイブを読み込む前に指定する必要があるはず。 ということはパスワードを指定する前なら パスワードなしは読み込めるはず。 なので、構造としては 1.パスワードなしアーカイブの拡張子を指定する 2.パスワードなしアーカイブからファイルを読み込む 3.パスワードを指定する 4.パスワード付きアーカイブの拡張子を指定する 5.パスワード付きアーカイブからファイルを読み込む とすればいいはず。複数あるなら1から2、3から5は必要に応じて繰り返してください。 アーカイブの中のファイルの読み込みを全部あらかじめやらなければいけないですが、(特にパスワードなしを) ファイル読み込みの関数って画像にしろ動画にしろ音楽にしろそういうソフトでない限りは 最初に読み込むはずなのでおそらく影響はないと思います。 上記の方法は試してないので大丈夫だとは思いますが失敗したらすいません。
メンテ
Re: DXアーカイブの中の読み込みで強制終了する? ( No.2 )
名前:管理人 日時:2020/10/04 19:37

私からもご返信を kanamaruさんのご返信の方法で問題ありませんが、 SetDXArchiveKeyString( NULL ); を実行することでパスワード設定を無効化できますので、ファイル読み込み関数を呼ぶ前に SetDXArchiveKeyString によるパスワード設定と( パスワード無しのDXアーカイブの場合は NULL を渡して呼ぶ ) SetDXArchiveExtension による拡張子指定をしていただければ 複数の拡張子やパスワードのDXアーカイブを扱うことができます よろしければお試しください m(_ _)m
メンテ
Re: DXアーカイブの中の読み込みで強制終了する? ( No.3 )
名前:was-blue.0793(解決) 日時:2020/10/29 22:39

>>kanamaruさん、管理人さん パスワードなしのDXアーカイブを読み込むときにNULLではなく「""」(空文字列)を渡してしまっていたことが原因だったようです。 ご教示の方法でDXアーカイブを混在させることができました。ありがとうございます。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存