1 1月

7-zip32.dll/7-zip64.dll/7z.dll文字化け対策版 Ver.15.14.00.01公開

7-zip32.dll/7-zip64.dll/7z.dll文字化け対策版 Ver.15.14.00.01を公開しました。

○Ver.15.14.00.01 – 2016/01/01
・7-Zip 15.14をベースにビルド。

7-Zip 15.14に更新しました。
公式がInfo-ZIP Unicode Path Extra Field(0x7075)に対応したため、独自のコードを削除しました。

27 11月

7-zip32.dll/7-zip64.dll/7z.dll文字化け対策版 Ver.15.12.00.02公開

7-zip32.dll/7-zip64.dll/7z.dll文字化け対策版 Ver.15.12.00.02を公開しました。

○Ver.15.12.00.02 – 2015/11/27
・7z.dll対応版でARJ書庫の処理ができない不具合を修正。(Special Thanks!:Roelf Beukens様)
・SevenZipGetArchiveType()とSevenZipGetFileCount()について、ヘッダ暗号化書庫であればパスワード入力ダイアログを表示するように。(Special Thanks!:Roelf Beukens様)

ARJ書庫の処理ができない不具合について。
原因は「ArchiveExtractCallback.cpp」「MyOpenArchive.cpp」のメソッド取得部分にありました。
以下は「ArchiveExtractCallback.cpp」のコード。

RINOK(archive->GetProperty(index, kpidMethod, &prop));
LPCWSTR lpMethod = (prop.vt != VT_EMPTY) ? prop.bstrVal : L"";

オリジナルのように、zipや7zを処理するだけであれば全く問題がありません。
しかし、ARJ書庫くんはメソッドを文字列で返してくれないのです…
で、その後lpMethodを処理しようとして落ちると。

そこで、以下のように文字列に変換するようにしました。

RINOK(archive->GetProperty(index, kpidMethod, &prop));
UString s;
if (prop.vt != VT_EMPTY)
    ConvertPropertyToString(s,prop,kpidMethod);
LPCWSTR lpMethod = (!s.IsEmpty()) ? s.Ptr() : L"";
広告