サポート掲示板
HOME  □ MANUAL  □ 新着記事  □ 新規投稿
ツリー表示  □ 記事全文表示  □ SEARCH  □ 過去ログ
ツリー表示

MESSAGE zipファイル内の列挙で拡張子無しのファイルが... /Crc (18/08/18(Sat) 11:35) [1212]
....MESSAGE Re[1]: zipファイル内の列挙で拡張子無しのファイルが... /Akky (18/08/20(Mon) 21:03) [1213]
........MESSAGE Re[2]: zipファイル内の列挙で拡張子無しのファイルが... /Crc (18/08/22(Wed) 10:30) [1214]
............MESSAGE Re[3]: zipファイル内の列挙で拡張子無しのファイルが... /Crc (18/08/24(Fri) 09:56) [1215] 解決済み!


親記事 / ▼[ 1213 ]
NO.1212  zipファイル内の列挙で拡張子無しのファイルが...
□投稿者/ Crc -(2018/08/18(Sat) 11:35:47)
□U R L/
【ソフト名】7-Zip32.dll

【バージョン】4.65.00.01

【使用OS】Windows 10

【質問内容】

7-Zip32.dllを使おうとしている者です。
WinAPIで言うファイルの列挙に相当するSevenZipFindFirst, SevenZipFindNextを用いる方法で
書庫内のリストを取得する際、ファイルではあるが拡張子無しの場合、
そもそも列挙されません。
動的リンクをして(DLL管理する)クラスを定義して...とやっています。
SevenZipOpenArchive関数をラップした関数の引数でDWORDの方をM_CHECK_ALL_PATHを渡し、
パスワードがあるならそれをセット...のようにして列挙しています。
例えば書庫内に

myheaders <- ファイルとして。C++のcstdio, cstring, string, iostream のような状態
main.cpp
class1.h
class1.cpp

とあるとします。
main.cpp, class1.h, class1.cpp は成功しますが myheadersは列挙対象にすら上がっていません。

初期設定として SevenZipOpenArchiveで開いた後、FindFirstの方で一度取得。
ERROR_PASSWORD_FILE が返ってきたらreturn。
後は while( true ) で無限ループし、FindNextの方で取得。
ERROR_PASSWORD_FILEが返ってきたときだけすぐさまreturn。 ( closeはしますが。 )
それ以外はそのまま...

と言う流れです。



▲[ 1212 ] / ▼[ 1214 ]
NO.1213  Re[1]: zipファイル内の列挙で拡張子無しのファイルが...
□投稿者/ Akky -(2018/08/20(Mon) 21:03:26)
□U R L/
返事遅くなってスミマセン。
多分ですが、SevenZipFindFirstで*.*を指定してませんか?
これは拡張子を含むファイルを意味するので単純に*を使ってください。

7-zipCMD.txtを参照

7-zip32.dll は システムワイルドカードマスク分析をしておらず、
*.* が全てのファイルを意味すると言う古い規則に従いません。
7-zip32.dll は *.* を全ての拡張子を持ったファイルとして扱います。
全てのファイルを処理するには * を使用しなければなりません



▲[ 1213 ] / ▼[ 1215 ]
NO.1214  Re[2]: zipファイル内の列挙で拡張子無しのファイルが...
□投稿者/ Crc -(2018/08/22(Wed) 10:30:52)
□U R L/
返信遅れてすみません。
あぁ、なるほど。確かに *.*とやっていました。

対象ディレクトリ + "*.*"

確かにこれでは...
帰宅後試してみます。



▲[ 1214 ] / 返信無し
NO.1215  Re[3]: zipファイル内の列挙で拡張子無しのファイルが...
□投稿者/ Crc -(2018/08/24(Fri) 09:56:02)
□U R L/
解決済み!
すみません。解決済みのチェックしていませんでした...
(使い方がわからなかった...)



- Child Tree -