松ちゃん本舗 - 来店記録の間 -
過去ログその9

(2003/01/01〜2003/11/30)

←前のログヘ INDEXに戻る リストに戻る 次のログヘ→


Re:VB6で自己解凍を作成してるのですが・・・ 投稿者:松ちゃん  投稿日:11月24日(月)21時26分20秒

>hiroさん
>常に解凍先に同ファイルが存在する場合に上書きメッセージが表示されるようにSFXを作成
>したい

WinSFX32(M)のオプションでは通常、上書き確認メッセージが表示するはずですが…。
コマンドラインで""""となっているところが気になるので、Chr(34)と書きかえてみてくだ
さい。


VB6で自己解凍を作成してるのですが・・・ 投稿者:hiro  投稿日:11月22日(土)22時48分12秒

はじめまして、現在、自己解凍ファイルを作成し解凍すると上書きメッセージが表示されないんです。
常に解凍先に同ファイルが存在する場合に上書きメッセージが表示されるようにSFXを作成
したいのですが、どうしたらよいですか?

ちなみに、下記のように書いてるんですが・・・

strOption = "S -GWJ2 -GYWTEST -GYDC:\TEST " & """" & p_strInPath & strLzhName & """" & " " & """" & p_strOutPath & """"

よろしくお願いします。


見落としてました。 投稿者:のこやん  投稿日:11月21日(金)16時55分32秒

このサイトにあるのに質問してすみません。
かなり見落としてました。お許し下さい。


VBの簡単なコードを教えて下さい。 投稿者:のこやん  投稿日:11月21日(金)16時01分46秒

有難う御座いました。

未対応とは知りまんでした。

まだ初心者でUNLHA32での圧縮解凍は他のサイトのサンプルで何とかできました。

ZIPの圧縮解凍の簡単なコードを教えてもらえませんか?

お手数ですがよろしくお願いします。


Re:UNZIP32での圧縮 投稿者:松ちゃん  投稿日:11月20日(木)22時52分38秒

>のこやん様
UNZIP32.DLLはUNLHA32.DLLとは違い解凍専用のDLLで、圧縮には対応していません。
ZIP32J.DLL+ZIP32.DLLと組み合わせるか、7-ZIP32.DLLを利用するかの
2点になりますが、後者はDLLが開発されてまだ新しいため、前者の方を
おすすめします。

よろしくお願いします。


UNZIP32での圧縮 投稿者:のこやん  投稿日:11月20日(木)20時46分25秒

はじめまして。

VB5でUNZIP32での圧縮は可能ですか?

コマンドが書かれていないので教えて下さい。

他のサイトでも解凍しか書かれていません。

よろしくお願いします。


Re:漫画読み返し 投稿者:松ちゃん  投稿日:11月15日(土)22時58分08秒

返事が遅れて申し訳ありません。

>あくせるさん
>騎手、競走馬、牧場等の対応表も是非お願いしたい。
競走馬の元ネタは書いていますが、騎手や牧場はだいたいの方が知っている内容と
思われますので掲載してません。ただ今後必要になれば掲載も検討いたします。

連載が終わってもう3年経っていますが、2chの掲示板にもスレッドがありますし、
まったく色あせていませんね。
(今週、グリーンチャンネルの「うまくら」でも取り上げられた模様)
編集済

http://www.geocities.co.jp/SiliconValley-SanJose/1892/


漫画読み返し 投稿者:あくせる  投稿日:10月25日(土)17時20分07秒

はじめまして こんいちわ

今さらですが 【じゃじゃ馬ぐるーみん★UP】のコナー気に入っています

騎手、競走馬、牧場等の対応表も是非お願いしたい。

予想でもいいので…期待。


弓削匠=武豊
醍醐ファーム=社台ファーム
レットー=イットー

よろしくでございます



Re:cabを使った圧縮法 投稿者:松ちゃん@店長  投稿日: 9月 8日(月)22時25分03秒

レスが遅れて申し訳ありません。

VBでLoadLibrary()〜GetProcAddress()が利用できることがわかっていますが、
C言語のようにポインタなどが使えないのでかなり難しいようです。単独でDLL
を使うならDeclare Functionを使うほうが簡単ですし、SearchPath()を使えば
DLLの存在も確認できます。

↓にあるサンプルソースを見て参考にしてくださいませ。
編集済

http://www.geocities.co.jp/SiliconValley-SanJose/1892/pc/arcsrc.html


じゃじゃ馬とめぞん一刻 投稿者:松ちゃん@店長  投稿日: 2月 3日(火)21時25分50秒

>フメミヨさん
たしかに作者が「めぞん一刻」の影響を受けているのは有名ですからね。

>渡会千草→響子の母、千草
というよりは音無(旧姓:千草)響子と考えたほうがいいかもしれませんね。


 投稿者:フメミヨ  投稿日: 1月31日(土)19時01分57秒

じゃじゃグルって、「めぞん一刻」と酷似してますよね。
ひびき→響子 醍醐→五代 久世駿平→三鷹瞬+九条明日菜
二階堂→二階堂(ポっと出) 渡会千草→響子の母、千草  ってな具合に。

ただ単に、舞台が「下宿館」から「牧場」に変わっただけな感じで。
いや、面白いんですけどね。


Re:あけましておめでとうございます 投稿者:松ちゃん  投稿日: 1月 2日(金)23時31分59秒

>たこさん
こちらこそあけましておめでとうございます。
一応、普段どおりにすごしましたけどね>年末年始

なお、今年は厄年なので何事も慎重に行動することを心がけます。

>恋風読まれました(*´∀`)?
いやあ、なかなか読む機会がないですね。
古本屋で調べてみるか。


あけましておめでとうございます。 投稿者:たこ  投稿日: 1月 2日(金)01時16分0秒

こんばんは。あけましておめでとうございます! たこです(´∀`)。

こちらでは物凄くご無沙汰ですが、チャットや掲示板にいつも書き込み
ありがとうございますです。どんな年末年始を過ごされましたか?

たこはお参りに行くしょっぱなから寒さから腹を壊しました(´д⊂)。
仏様からの去年の罰でもくらったんでしょうか(笑)?

何はともあれ(笑)、今年もよろしくお願いします。
短信ですが、年始のご挨拶でした。失礼します。


P.S 恋風読まれました(*´∀`)? 


Re:tar32.dll でのファイル指定解凍 投稿者:門間  投稿日:12月18日(木)14時28分52秒

解決しました。
パスを指定することにより解凍できました。


tar32.dll でのファイル指定解凍 投稿者:門間  投稿日:12月17日(水)19時51分4秒

はじめまして。

VC++ 6.0 の開発環境で tar32.dll を利用した、tar.gz ファイルの指定解凍の
方法について教えてください。

例えば、"test.tar.gz" というファイル内にある、拡張子が ".txt" のファイル
だけ解凍しようとして、

 -xvf C:\test\test.tar.gz *.txt

を実行すると、".txt"ファイルだけでなく、すべてのファイルが解凍されていま
います。

試しに、

 -xvf C:\test\test.tar.gz -o C:\test\ *.txt
 -xvf "C:\test\test.tar.gz" "*.txt"

に変えてやってみましたが、やはり、すべて解凍されてしまいます。

関数は、以下のように使用しています。

--------------------------------------------------------------------------------
int nStatus;
char szCmdLine[1024], szOutput[1024];
typedef int (WINAPI *TAR32)(const HWND hwnd, LPCSTR pszCmdLine, LPSTR pszOutput, const DWORD dwSize);
HINSTANCE hTarDll;
TAR32 pfnTar;

fileName = strFile.GetBuffer(10);
strFile.ReleaseBuffer();

// tar32.dll をロードする
if ((hTarDll = LoadLibrary("tar32")) == NULL)
{
// エラー処理
}
// tar32.dll 内の Tar 関数のアドレスを取得する
if ((pfnTar = (TAR32)GetProcAddress(hTarDll, "Tar")) == NULL)
{
// エラー処理
}
sprintf(szCmdLine, "-xvf C:\\test\\test.tar.gz *.txt");
ZeroMemory(szOutput, sizeof(szOutput));

nStatus = pfnTar(NULL, szCmdLine, szOutput, sizeof(szOutput));
if (nStatus == 0)
{
// tar.gz ファイル解凍成功
}
else
{
// エラー処理
}

// Tarライブラリを解放する
FreeLibrary(hTarDll);
--------------------------------------------------------------------------------

以上、アドバイスよろしくお願いします。


何度もすみません 投稿者:hiro  投稿日:11月26日(水)18時39分29秒

教えてもらったスイッチを追加して環境を変えて実行したらうまくいきました・
ありがとうございました。


どこへ? 投稿者:hiro  投稿日:11月26日(水)00時18分28秒

加えましたか?
色々試したのですが、解凍時にメッセージが表示されないのですが・・
お手数ですが、strOption = "S -GWJ2 -GYWTEST -GYDC:\TEST " & """" & p_strInPath & strLzhName & """" & " " & """" & p_strOutPath & """"
で書いてみてもらえないでしょうか?


Re:VB6で自己解凍を作成してるのですが・・・ 投稿者:松ちゃん  投稿日:11月25日(火)20時17分53秒

調べてみました。

自己解凍書庫は書庫内のタイムスタンプが古い場合はスキップするみたいです。
"-gyc0"スイッチを加えると上書きチェックが行われるようになりました。

よろしくお願いします。


Re:VB6で自己解凍を作成してるのですが・・・ 投稿者:hiro  投稿日:11月24日(月)22時52分31秒

やっては見たのですが・・・
依然メッセージが表示されません。
書き方がおかしいのでしょうか?
他に書き方ありますかね〜?


cabを使った圧縮法 投稿者:sakudai  投稿日: 9月 1日(月)17時28分06秒

VB6.0でcab32.dllを使って
csvファイルを圧縮するプログラムを作りたいのですが、
LoadLibrary()とGetProcAddress()の使い方が
いまひとつ分かりません。
どなたか教えていただけないでしょうか?


ありがとうございます 投稿者:シロー  投稿日: 8月30日(土)21時31分22秒

どうもいきなりの質問に答えていただきありがとうございます。
早速ためしてみます。
どうもありがとうございました。


Re:カーオーディオでMP3を聴く 投稿者:松ちゃん@店長  投稿日: 8月30日(土)20時33分30秒

>シローさん
CD-R/CD-RWに対応しているカーオーディオであれば、音楽CDモードでCDを作成しておけば
とりあえず聞けますが、音楽CDからWAV形式で取り込んだほうが音質はよいのでMP3→WAV
への変換はおすすめできません。CD-R/CD-RWに対応していない場合でも、iPodなどに代表
される携帯用MP3プレイヤーやそれに準じるものをお持ちでしたら、FMトランスミッター
を使う方法がありますので参考になさってください。

iPod対応のFMトランスミッター「iTrip」
http://www.avenue-d.com/welcome/mac/1366.html
編集済


わからないんですが? 投稿者:シロー  投稿日: 8月29日(金)23時10分58秒

あのーなにかプロの方がおられるようで恐縮なんですがぜひとも教えていただきたいことがありまして。
じつはMP3なんですが自分の車のオーディオで聞きたいんですが聞けないのです。
いろいろ調べてみたのですが、分からないので教えてもらえませんか?
MP3をどうしたら車載オーディオで聞けるのですか?
車のオーディオがMP3に対応してないのでどのようにしたらきけるようになるのですか?


遅くなってすいません 投稿者:虎壱  投稿日: 8月18日(月)10時44分38秒

返事が遅くなってすいません・・
ブラスターにPCをやられてしまい返事が遅くなってしまいました

-tで格納ファイル名を取得して出力パスと連結する事で解決しました
TarOpenArchive()〜TarFindFirst()〜TarFindNext()〜TarCloseArchive()
の方もやってみたいと思います

どうも今回はありがとうございました


Re:tar32.DLLについて 投稿者:松ちゃん@店長  投稿日: 8月 6日(水)23時39分17秒

>虎壱さん
解凍のさい、Tar()のszBufferに内容が入らないのはTAR32.DLLの仕様のようです。
解凍先のフルパスを取得する場合、解凍前にTarOpenArchive()〜TarFindFirst()
〜TarFindNext()〜TarCloseArchive()を実行して圧縮ファイルのパス情報を取得、
その後WorkPath自体が絶対パス(ドライブ名が入ったパス)か相対パスかどうかを
判断。絶対パスの場合はWorkPathと書庫ファイル名、相対パスの場合はカレント
パス+WorkPath+書庫のパス(ただ相対先に..がある場合はカレントフォルダの
上位のフォルダに移動)が解凍されたファイルのフルパスとなります。

ややこしくなるかもしれませんがよろしくお願いします。
編集済

http://www.geocities.co.jp/SiliconValley-SanJose/1892/


tar32.DLLについて 投稿者:虎壱  投稿日: 8月 4日(月)14時19分03秒

お久しぶりです
前回は本当にありがとうございました

質問なのですが解凍処理で解凍したファイルのフルパスを取得処理を作成しています
LHAとZIPはうまくバッファを利用して取得できたのですが
tarだけバッファに何も入ってなく解凍先のフルパスが取得できません
何かいい方法はありますでしょうか?(解凍は正常でできます)

//書庫操作のAPI関数の宣言
typedef int(WINAPI *TAR)(const HWND, String* , LPSTR , const DWORD);

//UNZIP32.DLLの読み込み
HIN_lib = LoadLibrary("tar32.dll");

//API関数のアドレスを取得
TAR Tar = (TAR)GetProcAddress(HIN_lib,"Tar");

//解凍形式、解凍対象ファイルパス、解凍先フォルダパスなどの必要情報を変数に格納
Str_Defrosting=String::Concat("-x --display-dialog=0 ","\"",Convert::ToString(listBox_FilePath->Items->Item[Int_ListCount]),"\" ");
Str_Defrosting=String::Concat(Str_Defrosting,"\"",WorkPath,"\"");

//解凍処理(成功なら0が返る、失敗なら0以外の数字が返る)
Chr_Check=Tar(NULL,Str_Defrosting,Chr_Buffer,1024);

//解凍結果を返り値用変数に格納
Str_Out=Chr_Buffer;←ここで何もDLLの処理結果が入っていない・・


Re:UnrarExtractMem 投稿者:松ちゃん@店長  投稿日: 8月 3日(日)22時39分09秒

>UNYORAさん
確かに、UNRAR32.DLLにUnrarExtractMem()のエントリはありますが未実装となっていますね。
これではどうしようもないので、一時フォルダに解凍→ShellExecute()で開く→ファイルを
削除というプロセスが考えられます。
ファイルが開いた時点で解凍ファイルが削除できなくなる可能性もあるので、開いたアプリ
ケーションを閉じるまで監視させるというのはどうでしょうか?


UnrarExtractMem 投稿者:UNYORA  投稿日: 7月28日(月)13時01分53秒

こんにちは、UNYORAです。

RAR書庫ファイルの中にあるファイルをHDD上に展開せずにファイルを取り出したいのですが、
マニュアルを見ると、UnrarExtractMemはUnrar32.dllに実装されていないようです。
メモリーに展開させる方法はほかにあるのでしょうか?


Re:同じファイルがあった場合は? 投稿者:松ちゃん@店長  投稿日: 7月24日(木)21時51分57秒

>いかさん
コマンドラインに-cオプションが指定されていない場合は更新日時が
新しい場合のみ上書きされます。
x命令で解凍された場合は状況により上書き確認が行われます。


同じファイルがあった場合は? 投稿者:いか  投稿日: 7月22日(火)11時47分58秒

解凍先に、同じファイル名又はフォルダ名がある場合は、解凍は、どうなるのでしょうか?
上書きがそれとも解凍されない?


進捗状況を表示しない 投稿者:UNYORA  投稿日: 7月21日(月)05時25分47秒

すいません、ようやく発見しました。
LHAは-nオプション
ZIPは--iオプションですね。


進捗状況を表示しない 投稿者:UNYORA  投稿日: 7月21日(月)05時04分12秒

こんにちは、UNYORAと申します。

UnlhaExtractMemを使用すると進捗状況が表示されますが、これを消すには
どうすればよいのでしょうか?
ご存知の方おられましたなら、教えていただけないでしょうか。


Re:フォルダーのまま圧縮するには? 投稿者:松ちゃん@店長  投稿日: 6月28日(土)22時58分40秒

TACというのはたぶんシェアウェアの「卓駆★ for Windows95」だと思いますので、
試用目的で確認しましたが、正常にフォルダごと圧縮できました。

考えられる問題は
・TACの[ツール]−[書庫ツールの設定]−「フォルダ」タブにある「解凍時に書庫フォル
 ダをチェックする」がチェックされていない
・UNLHA32.DLLの設定ダイアログの「ディレクトリ構造を無視」にチェックが入っている

TACではDLLのダイアログを呼び出すことができませんので、当サイトの解凍ツールなど
からDLLのダイアログを呼び出し、チェックを確認してみてください。
編集済


フォルダーのまま圧縮するには? 投稿者:湘南 OldBoy  投稿日: 6月26日(木)18時19分20秒

横浜から、はじめまして。
普段、TACでdllを使って圧縮・解凍しており、特に不自由は感じなかったのですが、
今回、Webページを圧縮して添付送信しようと、index.html と IMAGEフォルダ(index.htmlで表示するGIFファイルを収容)を一緒に、フォルダはフォルダのまま
内部のGIFファイルごと圧縮するにはどうしたらよいのでしょう?

index.html と IMAGEフォルダをtmpフォルダにいれそれを圧縮しても、IMAGEフォルダの
中身がindex.html と同位になって、即ちIMAGEフォルダから飛び出して圧縮されてしまいます。  お助けを。



返事遅くなってすいません 投稿者:虎壱  投稿日: 6月25日(水)10時35分43秒

雪影さんありがとうございます

#pragma comment(lib,"shlwapi.lib")
で解決しました、ありがとうございました

返事遅くなって本当にすいませんでした


re:shlwapi.libについて 投稿者:雪影  投稿日: 6月20日(金)16時00分06秒

紛らわしい書き方ですいません。
インポートというのは、ライブラリをプロジェクトに参加させる、
という意味で書いていました。
プロジェクトのオブジェクト/ライブラリモジュールにshlwapi.libを追加するか、
プログラム中に
#pragma comment(lib,"shlwapi.lib")
を書いておくと解決すると思います。


shlwapi.libについて 投稿者:虎壱  投稿日: 6月20日(金)13時54分34秒

雪影さんありがとうございます

PathAddBackslash(LPTSTR)のやり方を試してみたのですが
shlwapi.libのインポートをすると

fatal error C1083: タイプ ライブラリ ファイルを開けません。'c:\program files\microsoft visual studio .net 2003\vc7\platformsdk\lib\shlwapi.lib': タイプ ライブラリ/DLL の読み込みエラーです。

というエラーが出ます
これはshlwapi.libが存在しないからなんでしょうか?
何処かからshlwapi.libを落としてこないといけないのでしょうか?

#include "stdafx.h"
#include <windows.h> //windows.h のインクルード
#include <shlwapi.h>
#import <shlwapi.lib>


re:解凍先のパス指定について 投稿者:雪影  投稿日: 6月19日(木)19時44分09秒

一番簡単な方法は、
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/shlwapi/path/path.asp
の中の、
PathAddBackslash(LPTSTR)
を使うことだと思います。使うときはshlwapi.hのインクルードと
shlwapi.libのインポートを忘れないよう注意してください。
この関数を使わずにやるときは、
1.distStrの最後から2番目の文字が2バイト文字の1バイト目でない
  && distStrの最後の文字が「\」でない
2.distStrの最後から2番目の文字が2バイト文字の1バイト目である
のどちらかの条件を満たしているときにdistStrの末尾に「\」を付加すればいいと思います。
charが2バイト文字の1バイト目かを判別する関数は、
_ismbblead(unsigned int)
インクルードするライブラリはmbctype.hです。


解凍先のパス指定について 投稿者:虎壱  投稿日: 6月18日(水)21時20分52秒

おかげさまで現在順調に解凍ツールができているのですが
解凍先のパス指定で c:\output と最後に\をつけない状態でも解凍できるようにしたいのですがどうやったらいいのでしょうか?(c:\output\だとちゃんと解凍してくれます)
パスが入ってるdistStrの検索をして最後に\を付加するやり方でいいのでしょうか?
""(ダブルクォーテーション)の兼ね合いもあってよくわかりません・・・
解決策がありましたら教えていただきますようお願いします

//各オプションから文字列抽出処理
int o, size = 0; //変数の宣言
for (o = 1; o < argc; o++)
size += int(strlen(argv[o]) + 1); //各オプション文字列数に+1をする

char *command_line = new char[size + 1];
command_line[0] = '\0';
for (o = 1; o < argc; o++)
{
//各オプション文字列を半角スペースで区切る
strcat(command_line, argv[o]);
strcat(command_line, " ");
}

//入力元のパスに何も文字が入ってない場合はプログラム終了
if (argv[1]==NULL)
{
printf("Option error : input error");
return 0; //プログラム終了
}

//解凍元・解凍先のパス入力処理
//解凍元パスの文字列を格納
sprintf(sourceStr, "%s",argv[1]);
//解凍先のフォルダパスの文字列を格納
sprintf(distStr, "%s",argv[2]);
// プログラムで利用するAPI関数をtypedefで宣言します
//書庫操作のAPI関数
typedef int(WINAPI *UNLHA)(const HWND, LPCSTR , LPSTR , const DWORD);

// LoadLibraryでDLLを開きます。(DLLの読み込み)
lib = LoadLibrary("UNLHA32.dll");

//API関数へのアドレスを、GetProcAddressでキャストする。
UNLHA Unlha = (UNLHA)GetProcAddress(lib,"Unlha");//APIへのアドレスを取得

//解凍プログラム
/*必要な情報(解凍元、解凍先、必要ならオプション設定や解凍するファイル)を取得*/

//入力したパスをコマンドへ格納
sprintf(cmdStr, "x -gm -c1 -n \"%s\" \"%s\" \n", sourceStr, distStr);

//バッファサイズ指定
char resBuf[BUF_LEN];

//Unlhaを使用して解凍
int resultCode=Unlha(NULL,cmdStr,resBuf,BUF_LEN);

// printf("%s\n",cmdStr); //確認の為cmdStrに格納されてる文字列を表示

//解凍に成功したとき
if(resultCode==0) printf("Extract : %s\n",distStr);
else
{
//解凍に失敗したとき
printf("Output error : %s\n",distStr);
}
// ロードしたDLLを開放します。
FreeLibrary(lib);


re: ファイル名・フォルダ名にスペースがある場合 投稿者:虎壱  投稿日: 6月15日(日)11時54分06秒

雪影さんありがとうございました

やっぱり制約をつけないと駄目ですか・・
「""」で囲むやり方でやってみます
ありがとうございました


re: ファイル名・フォルダ名にスペースがある場合 投稿者:雪影  投稿日: 6月14日(土)14時18分02秒

これは、入力するときにパスを「""」で囲む、という方法じゃ駄目ですか?
("実行元パス・ファイル名" "解凍元パス・ファイル名" "解凍先パス・フォルダ名")

そういう制約がないとすると、入力が絶対パスを指定させることにして、
引数の文字列の2番目が「:」になるまでは前のパスに付け加えていく、
という解決方法しか思いつきません(「:」はファイル名に使えないから)。
結局は入力に制約を課すことになりますが。


ファイル名・フォルダ名にスペースがある場合 投稿者:虎壱  投稿日: 6月14日(土)11時45分07秒

前回はありがとうございました
恐れながらもう一つ質問なんですが
現在DOSを起動して
"実行元パス・ファイル名 解凍元パス・ファイル名 解凍先パス・フォルダ名"
(間隔は半角スペース)
と打ち込んで解凍処理をしているのですがファイル名やフォルダ名にスペースが含まれている場合うまく認識してくれません、どうやったら認識してくれるんでしょうか?
"[]"を使うと認識するらしいのですがうまくいきません・・
解決策がありましたらよろしくお願いします

//各オプションから文字列抽出処理
int o, size = 0; //変数の宣言
for (o = 1; o < argc; o++)
size += int(strlen(argv[o]) + 1);//各オプション文字列数に+1をする

char *command_line = new char[size + 1];
command_line[0] = '\0';
for (o = 1; o < argc; o++)
{
strcat(command_line, argv[o]);//各オプション文字列を半角スペースで区切る
strcat(command_line, " ");
}
//解凍元・解凍先のパス入力処理
sprintf(sourceStr, "%s",argv[1]);
sprintf(distStr, "%s",argv[2]);


ありがとうございました 投稿者:虎壱  投稿日: 6月13日(金)15時17分20秒

FindFirstFile・FindNextFileでやってみたいと思います
雪影さんありがとうございました

ZIP形式についてですがちゃんと"-x c:\\*.zip c:\\output\\"
と文字列を入れても解凍出来ませんでした
恐らくFindFirstFile・FindNextFileを使ってファイルを抽出して解凍しないといけない
と思いますのでがんばりたいと思います(^^;)


re:ワイルドカードについて 投稿者:雪影  投稿日: 6月13日(金)02時58分25秒

>虎壱さん
ワイルドカード指定するとUnlhaCheckArchiveがファイル名"*.lzh"のファイルを探すから
じゃないでしょうか。複数のファイルを指定するためにワイルドカードを使うのなら
自分でファイル名を解決する必要があると思います。
まずFindFirstFileで"c:\*.lzh"にマッチするファイルを探します。
そしてFindNextFileでマッチするファイルがなくなるまで検索します。
これらの結果得られたファイル名ひとつひとつに解凍処理をかけるといいんじゃないでしょうか。

もうひとつの問題のほうですが、おそらく"x c:\\MSN.lzh c:\\output\\"のような形式に
なっていると思うんですが、Unzipの場合最初のオプションの部分が"x"ではなく"-x"
になります。こうしていても駄目で質問していたらすいません。


追記です 投稿者:虎壱  投稿日: 6月11日(水)16時22分52秒

LZH形式では解凍処理単独でワイルドカードの処理が出来たのですが
ZIP形式とZ形式だと単独でも解凍出来ません・・・
何か特別な処理が必要なんでしょうか?

お手数ですがよろしくお願いします


サンプルソースの件 投稿者:pom  投稿日: 6月11日(水)15時45分44秒

先程はDLさせて頂いたのにうっかりとお礼も言わずにすみません。
どうもありがとうございました。
OLEDragDropでファイルかフォルダかの分岐が違っていたようです。
サンプルソースは不慣れな私にとってはとても貴重です。これから
もよろしくお願いいたします。。。って他力本願な。。(^^ゞ


サンプルソース 投稿者:pom  投稿日: 6月11日(水)14時16分09秒

LZH形式の圧縮対応VB6.0版(22KB)とDLLをダウンロードさせていただきました。EXEを走らせ"test.txt"というファイルをD&Dしたのですが反応がありません。"test.txt.lzh"が出来るようですが検索しても見当たらずエラーもでません。何故なんでしょう?ZIP形式の方はちゃんと作動していました。


ワイルドカードについて 投稿者:虎壱  投稿日: 6月11日(水)14時11分26秒

前回はありがとうございました

あれから形式チェックやZIP形式の解凍も出来るようになったのですが
解凍ファイルの指定の時にc:\*.lzhやc:\*.*などのワイルドカードを指定しても
全部else処理へ行ってしまいます(ファイル名を指定した場合は大丈夫です)

色々検証してみた結果解凍処理単独ですと大丈夫なんですが
形式チェック処理を間に入れるとうまくいきません

恐らく形式チェックのif文を何とかすればいいと思うのですが
どうやればいいかわかりません・・・
解決策がありましたらよろしくお願いします

//hFindの宣言
HANDLE hFind;
//解凍元・解凍先のパス入力処理
scanf("%s %s", sourceStr,distStr); //解凍元パスの文字列と解凍先のフォルダパスの文字列を格納
hFind = FindFirstFile(distStr, &FindFileData); //解凍先のパスをhFindへ入れる

//LZHファイル形式チェック用API関数宣言
typedef BOOL(WINAPI *UNLHACHECKARCHIVE)(LPCSTR _szFileName,const int_iMode);
// LoadLibraryでDLLを開きます。(DLLの読み込み)
lib = LoadLibrary("UNLHA32.dll");
//APIへのアドレスを取得
UNLHACHECKARCHIVE UnlhaCheckArchive = (UNLHACHECKARCHIVE)GetProcAddress(lib,"UnlhaCheckArchive");

if(UnlhaCheckArchive(sourceStr, CHECKARCHIVE_BASIC))
{
//解凍元のファイルがLZH形式だった
UNLZH(); //LZH解凍処理
}
else //解凍元のファイルがLZH形式でなかった
{

}


ありがとうございました 投稿者:虎壱  投稿日: 6月 5日(木)13時10分18秒

雪影さんに教えてもらったとうりにしたら
パス指定が出来ました ありがとうございます

教えてもらったHPに行ってみて勉強したいと思います
色々ご教授いただきましてありがとうございました


re:解凍元・解凍先の指定について 投稿者:雪影  投稿日: 6月 4日(水)18時11分16秒

>虎壱さん
コマンド文字列を作る部分は

char cmdStr[CMD_LEN];
char sourceStr[PATH_LEN]; //解凍元
char distStr[PATH_LEN];  //解凍先
scanf("%s", sourceStr);  //この前に入力を促す文を入れると良いと思います
scanf("%s", distStr);
sprintf(cmdStr, "x \"%s\" \"%s\" \"*.*\", sourceStr, distStr);

でできると思います。あとはscanfで取ってきた文字列をチェックしたりする必要は
ありますが一応テストするだけなら十分でしょう。

http://www.bohyoh.com/CandCPP/C/
↑のページなどでライブラリ関数について見てみたりすると
勉強になって良いんじゃないでしょうか。


説明不足ですいません・・ 投稿者:虎壱  投稿日: 6月 4日(水)09時49分37秒

自分のプログラムとしてはほとんどコピーですがこうなっています

char cmdStr[]="x c:\\MSN.lzh c:\\output\\ \n";
//バッファサイズ指定
char resBuf[BUF_LEN];
//Unlhaを使用して解凍
int resultCode=Unlha(NULL,cmdStr,resBuf,BUF_LEN);
//解凍に成功したとき
if(resultCode==0) printf("Extract Success\n");

これだとあらかじめ解凍元と解凍先が指定されているので
プログラムを起動してから解凍元と解凍先のパスを打ち込んで
解凍するプログラムにしたいと思っています

char cmdStr[]="x c:\\MSN.lzh c:\\output\\ \n";の部分をscanfなどで
文字列を入力して出来るかなとやってみたんですがうまくいきませんでした

cmdStrを何とかすれば出来そうなんですが・・・


re:解凍元・解凍先の指定について 投稿者:雪影  投稿日: 6月 4日(水)04時17分40秒

>虎壱さん
うーん、どういう風に作ってあるのか想像できませんが、
解凍元と解凍先の文字列の取得はできてるんですよね?
それならあとはsprintfを使って文字列を整形してコマンド用の文字列にすれば
できると思うんですが。

例のパスを入力しているのに「s{81}.lzhが見つかりません」というのは
おかしいと思うので、printfでコマンド用の文字列(以前の例ではcmdStr)や、
解凍元、解凍先の文字列を確認してみてはどうでしょうか。

見当違いの回答をしていたらすいません。


解凍元・解凍先の指定について 投稿者:虎壱  投稿日: 6月 3日(火)17時02分46秒

またまたすいません

雪影さん、松ちゃんさんに教えていただき無事解凍が出来るようになりました
しかし解凍元と解凍先のパス指定をDOS上からパスを打ち込んで解凍できるようにしたいと思い色々と試して見ましたが、「書庫ファイルが見つかりません」や
文字列の変数が書庫ファイルに指定(s{81}.lzhが見つかりません)されていたりと
うまくいきません

何か解決策がありましたら教えていただきますようお願いいたします

1.プログラムを起動
2.解凍元の圧縮ファイルのパスを打ち込む(例:c:\MSN.lzh)
3.解凍先のフォルダのパスを打ち込む(例:c:\output\)
4.プログラム終了


BUF_LENについて 投稿者:虎壱  投稿日: 6月 3日(火)10時02分05秒

なるほど 普通の宣言ではなく#define で宣言でしたか
ご教授ありがとうございました>雪影さん


re:BUF_LENについて 投稿者:雪影  投稿日: 6月 2日(月)19時22分39秒

BUF_LENはあのコードの前(#includeの後くらい)に
#define BUF_LEN 1024
のように指定しておくと、バッファのサイズを変える必要があるときに
宣言とサイズ指定の部分を同時に変更できて楽なのでこう書いてました。

宣言してない識別子を使って混乱させてしまってすいません。

>>松ちゃんさん
>exact
あ、間違っちゃいました。自分のプログラムの中ではextractだったんですが。
ご指摘ありがとうございます。


お騒がせしました 投稿者:虎壱  投稿日: 6月 2日(月)11時55分11秒

文字0x81・0x40のエラーについては改善されました
お騒がせしました

BUF_LENのエラーはBUF_LENの代わりに64*1024とバッファサイズを指定したら
ちゃんと解凍してくれました
これでいいのかな?(^^;)

お騒がせしてすいませんでしたm(_ _)m


BUF_LENについて 投稿者:虎壱  投稿日: 6月 2日(月)11時07分39秒

雪影さん、松ちゃんさんご教授ありがとうございました
返事が遅れてすいませんでした

雪影さんに教えてもらった具体例を入れてみたんですが
「BUF_LENが定義されてない識別子です」というエラーが発生したので
BUF_LENを定義したら今度はサイズエラーとなってしまいました
BUF_LENが定義されてない影響か、
・文字0x81・0x40が認識できない
・BUF_LENの引数依存の照合を使用しても見つかりません
というエラーも出てしまいます

色々と参考書を調べたりヘルプを見ましたがエラーが改善されません
何かインクルードする必要とかあるんでしょうか?
現在、インクルードしてるヘッダ
#include "stdafx.h"
#include <windows.h>

何か解決策がございましたらご教授いただけますようお願い申し上げます


re:UNLHA32.dllについて 投稿者:松ちゃん@店長  投稿日: 5月31日(土)21時58分25秒

>虎壱さん
雪影さんがお書きになられたとおり、命令、オプション、解凍するファイル、解凍先
などを取得してUnlha()を実行すればOKです。
フォルダ情報も再現したい場合は「x」命令を使うことで再現可能です。
char cmdStr[]="x \"c:\\test.lzh\" \"c:\\\" \"*.*\"";

>雪影さん
虎壱さんの質問へのご回答ありがとうございました。
ちなみに、解凍処理のメッセージはExact(正確)ではなくExtract(抽出)ですね。
編集済


re:UNLHA32.dllについて 投稿者:雪影  投稿日: 5月31日(土)18時45分23秒

>虎壱さん
私も下の問題が解決してようやく解凍部分にまで進みました。
この後のプログラムは、
1. 必要な情報(解凍元、解凍先、必要ならオプション設定や解凍するファイル)を取得。
2. Unlhaを使用して解凍。
で良いと思います。具体的には
  char cmdStr[]="e \"c:\\test.lzh\" \"c:\\\" \"*.*\"";
  char resBuf[BUF_LEN];
  int resultCode=Unlha(NULL, cmdStr, resBuf, BUF_LEN);
  if(resultCode==0) printf("Exact Success");
  else {
   //解凍に失敗したとき
  }
とかやるといいんじゃないでしょうか。この例では解凍元「c:\test.lzh」から解凍先「c:\」に、test.lzh内の
全てのファイル(*.*)を解凍する事になります。ディレクトリ構造は再現されないけど。
cmdStr内の最初のeはexactのeで解凍処理を関数にやらせることになります。このほかの処理やオプションについてはヘルプを見てください。


UNLHA32.dllについて 投稿者:虎壱  投稿日: 5月30日(金)13時21分50秒

始めましてこちらのページを参考にしてDLL使ったDOS上で動く解凍ツールを作っている
虎壱と申します

初めてプログラムをしている物で初歩的な質問で申し訳ございませんが
UNLHA32.dllの読み込みに成功しAPI関数のアドレスを取得するところまでは
出来たのですがその後の解凍処理の命令、解凍元・解凍先のパス指定が
いまいちよくわかりません
どうかご教授していただけますようお願い申し上げます
(C++.NETを使用しています)

//書庫操作のAPI関数
typedef int(WINAPI *UNLHA)(const HWND, LPCSTR , LPSTR , const DWORD);
// LoadLibraryでDLLを開きます。(DLLの読み込み)
lib = LoadLibrary("UNLHA32.dll");
//APIへのアドレスを取得
UNLHA Unlha = (UNLHA)GetProcAddress(lib,"Unlha");

この後どういうプログラムを入れればいいかよくわかりません(^^;)


re:Re:UnZip32.dllの使い方について 投稿者:雪影  投稿日: 5月29日(木)03時00分21秒

>松ちゃんさん

言われたとおり一旦クローズしてから再度オープン、FindFirstでうまくいきました。
UnlhaやUnrarではクローズせずにやってうまくいっていたので気づきませんでした。
助言どうもありがとうございました。


Re:UnZip32.dllの使い方について 投稿者:松ちゃん@店長  投稿日: 5月28日(水)20時42分32秒

>雪影さん
強制終了するのはUnZipCloseArchive()で書庫を閉じずに再度UnZipFindFirst()
を実行したためだと予測されます。

2度目のUnZipFindFirst()を行う前に一度UnZipCloseArchive()で書庫を閉じて、
再度UnZipOpenArchive()で開き直してから実行してみてください。


UnZip32.dllの使い方について 投稿者:雪影  投稿日: 5月28日(水)17時06分17秒

はじめまして。総合アーカイバのDLLを用いた解凍ソフトを作っている雪影といいます。
初歩的な質問で申し訳ないんですが、UnZip32.dllについて、以下のの処理を
行った時に強制終了されてしまいます。

1. LoadLibraryでUnZip32.dllをロード
2. OpenArchive,CheckArchive,FindFirst,FindNext,GetFileName,
  CloseArchiveのエントリを取得
3. 書庫をオープン、FindFirst,FindNext,GetFileNameで書庫内のファイルの名前を取得
4. 3.で取得したファイルの名前でFindFirstを行う

ディレクトリ構造を保持している書庫で、深いところにあるファイル(1段以上)をFindFirst
しようとすると強制終了になるみたいです。
対処法としてはもう一回「*」で最初からFindFirstして調べていくしかないんでしょうか。
長くなりましたが解決方法を知ってらっしゃる方、よろしくお願いします。


Re:自己解凍の設定 投稿者:松ちゃん@店長  投稿日: 5月27日(火)21時00分18秒

>SRさん
-gw3スイッチと-gw4スイッチの違いは設定ダイアログの省略を行うか行わないかの違いで、$ファ
イルを事前に作成している場合は、-gw4スイッチで省略してかまいません。

 最近の版のUNLHA32.DLLは自己解凍書庫自体が簡易インストーラ化されているので、$ファイル
を良く使われる機会が多くなってきました。オンラインソフトの配布などに$ファイルを使えば毎
回入力する手間も省けて便利です。

$ファイルの設定はUNLHA32.DLLに同梱のINFCOM.TXTにあります。
編集済


Re:自己解凍の設定 投稿者:SR  投稿日: 5月27日(火)15時19分19秒

自己レスです。
書庫に”$”とだけ書いたファイルを設定することで、できるんですね。
お騒がせしました。


自己解凍の設定 投稿者:SR  投稿日: 5月27日(火)14時59分06秒

UNLHA32.DLLを使用して、自己解凍書庫を作成しています。
ウィンドウタイトルの設定等をコマンドで渡す方法が判りません。
-gw3を付けると設定ダイアログが出るようですが、-gw4で渡す方法がわかりません。
あと”$ファイル”が判りません。
ご教授ください。


フォルダ込みで解凍するテクニック 投稿者:松ちゃん@店長  投稿日: 4月20日(日)20時19分56秒

>ボブチャンチンさん
多分、解凍の際にフォルダを作ってその中にファイルを解凍したいという要望だ
と思いますが、通常圧縮するときに、「a -r1d1 test1.lzh "target\" "*.*"」
で圧縮すると、圧縮ファイルがあるルートが基準になるので、解凍でtargetと加
えないととフォルダは作成されませんが、「a -r1d1 test1.lzh "target\*.*"」
とスペースを詰めると、解凍の際にtargetというフォルダが作成され、その中に
ファイルが解凍されると思います。

よろしくお願いします。


ディレクトリ構成情報込みの自己解凍形式書庫の作成方法? 投稿者:ボブチャンチン  投稿日: 4月16日(水)00時52分28秒

初めて投稿します、ボブチャンチンです。

DUNLHA32のDLLを利用してVBによるAP作成を考えてます。

条件が自己解凍形式&ディレクトリ構成情報を付加する
という内容です。
試験的にディレクトリ構成情報付きのLZH形式で圧縮後、
Sコマンドで自己解凍形式に圧縮してみました。
ところが実際自己解凍を行いそのディレクトリを確認する
と本来のディレクトリ(構成情報)で無くLZH形式から自己
解凍形式のファイルを作成したディレクトリになってます。

LZH作成時に付加した構成情報のディレクトリに復元した
いのですが何か方法があるのでしょうか?

是非良いお知恵をお貸し下さい。



恐縮でっす。。 投稿者:ついんP  投稿日: 4月13日(日)23時22分08秒

松ちゃん様、レスありがとうございます。

>たしかじゃじゃびーで見かけたことがありますね。
そんなこと覚えていて下さったんでっすか?! こちらがびっくりしてしまいました。
「じゃじゃびー」懐かしいでっす♪ 自分単行本派なのであのディープなお話に加われず、いつも壮大なコメントツリーが伸びていくのだけを眺めてました(苦笑)。

私も全然『めぞん〜』世代ではないでっすが、たまたま『じゃじゃグル』を読み始める以前に『めぞん〜』を読む機会があったため、渡会家に「千草」「二階堂」といった名前が出てくるたびにニヤニヤしてましたよ。

http://www.esbooks.co.jp/myshop/0000000691


たしかに「めぞん」との元ネタは有名ですが…。 投稿者:松ちゃん  投稿日: 4月12日(土)19時58分28秒

>ついんPさん
はじめましてというか、たしかじゃじゃびーで見かけたことがありますね。

>高橋留美子『めぞん一刻』に元ネタ多数
登場人物の名前の由来ですが、自分自身が「めぞん一刻」の世代でないこともあって
調査がむずかしいですね。(漫画には目を通しましたが)
知り合いのサイトで知ったのだが、こんなものまで存在しているとはすごい。

>梅ちゃんの馬券成績までお調べになるなんて…感動しました!(笑)
梅ちゃんの馬券成績はわかっている分だけをピックアップしてみました。
現在はじゃじゃグルに登場した競走馬と同名の実在の競走馬を中心に追いかけています。
現在はエニウェイゴーズとアルビレオが登録されています。


高橋留美子『めぞん一刻』に元ネタ多数 投稿者:ついんP  投稿日: 4月12日(土)15時13分44秒

はじめまして。
「じゃじゃ馬グルーミン★UP!」に関する考察、すごいでっすね!
梅ちゃんの馬券成績までお調べになるなんて…感動しました!(笑)

ぜひ登場人物の名前の由来集も作ってください!

http://www.esbooks.co.jp/myshop/0000000691


マウスポインタの変更できました。 投稿者:Terry  投稿日: 4月 3日(木)15時37分02秒

UnlhaSetCursorMode で出来ました。

マウスポインタをキーワードに検索したため、
見つけられませんでした。


マウスポインタの変更 投稿者:Terry  投稿日: 4月 3日(木)14時31分39秒

Terryと申します。
お世話に成ります。
現在、UNLHA32.DLLを利用させていただき、膨大なWORDファイルやEXCELファイルを
圧縮したり解凍して文書を取り出したりするアプリを自作しています。

そこでお聞きしたいのですが、保存する時などにマウスポインタを自作のものを表示
しているのですが、それがUNLHAをコールした瞬間にストップウォッチの変わって仕舞います。
たぶんオプションで出来るかと思うのですが、見つけられませんでした。

ご存知でしたら、お教え頂きたいと思います。


ありがとうございます。 投稿者:ma  投稿日: 2月27日(木)09時55分28秒

松っちゃん@店長様。

> 調べてみたところ、通常のVisual Basicとは違い、ウインドウのハンドルが指定できない
そうだったんですか。。

>ようなので、0とするか、vbNull+"-gq"スイッチで対処できると思います。
vbNull+"-gq"スイッチでやってみる事にします。

初心者の質問に答えてくださり、本当にありがとうございます。
これからも勉強になるHPをよろしくお願いいたします。


まとめてレスします。 投稿者:松ちゃん@店長  投稿日: 2月27日(木)00時33分15秒

>santaさん
RARは、データを修復するレコードを圧縮時に組み込むことができますが、UNRAR32.DLL(UNRAR.DLL)
では対処できないようなので、本家のWinRARを使うことをお勧めします。

>maさん
解凍状況を最前面に押し出すスイッチは"-gp"ではなく"-gq"スイッチになります。

>「ohwnd」にファンクション名を入れたら
>ちらつかず解凍状況画面がでてうまく行ったんですが、
>これってあっているのでしょうか?

 この場合、ファンクション内での実行で、FileMeltyには何の数値も入っていないので、
hwndに0を入れているのと同じになります。
 調べてみたところ、通常のVisual Basicとは違い、ウインドウのハンドルが指定できない
ようなので、0とするか、vbNull+"-gq"スイッチで対処できると思います。

なお、"-n"スイッチは解凍状況画面を表示しなくなります。


Re:画面のちらつき制御  投稿者:ma  投稿日: 2月25日(火)17時20分53秒

松っちゃん@店長様。

>-gqスイッチを使えば、UNLHA32.DLLの解凍状況画面を最前面にすることができるので、
-gpスイッチじゃなくって、

「ohwnd」にファンクション名を入れたら
ちらつかず解凍状況画面がでてうまく行ったんですが、
これってあっているのでしょうか?

Public Function FileMelty() As Integer

  '解凍中ウィンドウは表示
  ohwnd = FileMelty
  lRes = Unlha(ohwnd, "e -y -c " & Chr(34) & strlxhFile & Chr(34) _
  & " " & Chr(34) & strFile & Chr(34), Ret, Len(Ret))

End Function

ohwnd = vbNull
ちなみに、↑こっちで、上と同じスイッチで実行すると
解凍状況画面はでず、ちらつきます。

  ohwnd = FileMelty で、上のコードに-nスイッチをつけると
ちらつかず解凍状況画面は出ないのですが、-nスイッチと-gpスイッチの
違いってなんですか?


むりやり解凍 投稿者:santa  投稿日: 2月23日(日)08時36分16秒

申し訳ございません、助けてください 
圧縮されたデータを解凍が出来ません、データーの一部でも解凍が出来ればうれしいのですが
データ拡張子RAR、 解凍ソフトNOAH、データー量600〜700MB HD空き5GB
解凍すると、解凍できませんでした、壊れています。とメッセージが出ます
このような時、壊れていても無理やり解凍することが出来るのでしょうか
もし出来るのであれば教えてほしいのですが、よろしくお願いします。


Re:画面のちらつき制御 投稿者:松ちゃん@店長  投稿日: 2月21日(金)21時23分29秒

どうも。

>maさん
 エクセルVBAから実際に実行したことはないのですが、画面がちらつくのでしたら、
-gqスイッチを使えば、UNLHA32.DLLの解凍状況画面を最前面にすることができるので、
ちらつきをなくすことができると思われます。

もし、それで解決できなければ、メールにエクセルのファイルを添付していただければ
幸いです。


画面のちらつき制御 投稿者:ma  投稿日: 2月19日(水)18時24分45秒

はじめまして。初めてDLLを使用してみたんですが、
わからないことが多く、沢山ココのHPで沢山勉強させていただきました。
そして・・あつかましくも質問なんですが。。
エクセルVBAからのunlha32.dllの呼び出しで
ファイルの解凍をしています。が!!!
すごく画面がちらつきます。
普通の圧縮解凍ツールだと画面のちらつきなんてありませんよね。
なんかパラメーターなりスイッチなりがあるんでしょうか?
もしおわかりになりましたらお願いします。


フォルダ圧縮について 投稿者:win  投稿日: 2月19日(水)11時15分56秒

チャレンジしてみます。
有り難う御座いました。m(_ _)m


フォルダ圧縮について 投稿者:松ちゃん@店長  投稿日: 2月18日(火)20時59分26秒

>winさん
 まず、AフォルダとDフォルダがCドライブにあったと仮定します。Aフォルダの中にあるBフォル
ダを圧縮するときは、基準フォルダを「C:\A\」として、圧縮対象を「B\*.*」と指定します。
 ZIP32.DLLでコマンドラインで表すと「-r test.zip "C:\A\" "B\*.*"」となります。

 その圧縮したファイルを解凍するDフォルダへは、基準フォルダを「C:\D\」とし、解凍対象
を「*.*」(全ファイル解凍)とすると、Dフォルダ内にBフォルダごとファイルが解凍されます。
 UNZIP32.DLLでコマンドラインで表すと「-x test.zip "C:\A\" "B\*.*"」となります。

コマンドラインの詳細は
http://www.geocities.co.jp/SiliconValley-SanJose/1892/pc/arc_cmd.html
に詳しく書いていますのでご覧下さい。
編集済


フォルダごと圧縮するには? 投稿者:win  投稿日: 2月18日(火)10時55分59秒

初めて書き込みいたします。
サンプルにあった「ファイル圧縮・解凍用サンプルアプリ2」を利用させて頂いています。
勝手に頂きまして、申し訳ありません。

そこで、1つ初歩的だとは思うのですが質問をお願いいたします。
例えば、Aフォルダの下にBフォルダが有り、その配下にhtmlファイルやjpgファイルが有ります。
これをBフォルダ以下を圧縮し、解凍の際には、Dフォルダ配下を指定すると自動的にBフォルダを作成し、その配下にhtmlファイルやjpgファイルが解凍されるようにしたいのですが、ZIP32jのスイッチオプション等を調べたのですが、良く分かりません。
スキルの無い私に、ご教授頂けると助かります。

すいませんが、宜しくお願いいたします。


やっと 獲れた!! 投稿者:もん  投稿日: 1月13日(月)16時22分35秒

店長 金杯は 惨敗でした←面白くない洒落

で 土曜の万葉Sでやっと獲れました。
結構 得意なんだ長いレースって・・・・
で 日曜は、買い忘れて 没 ガーネット(ニホンピロサート)も 
シンザン(サイレントディール)も
予想通りだったのに・・・。
ニホンピロサートはフェブルラリSに行くんだろうな
サイレントディールは、去年のタニノギムレットみたいにスプリングSかな?
勝手に思う

しかし 携帯から買えるのに忘れるなんて
あたしって 馬鹿

来週の日経新春杯はトシザブィから
京成杯はわからんな良い馬あります?
(強いて言えばブラックカフェかな)


追加 投稿者:ついん  投稿日: 1月 9日(木)21時11分50秒

Unimp32.dllでの解凍処理でも7-zipと同様の現象が起こってました。
これもやはり先頭のオプションスイッチごと""で囲む形に書き換えると
正常に動作しましたので、ご報告まで(^^A;


ありがとうございました 投稿者:ついん  投稿日: 1月 9日(木)20時11分44秒

オプションスイッチごと""で囲むとは思いもよりませんでした。
確認してみた所、正常に動作しました。
素早い的確なアドバイス、本当にありがとうございました(^^)


新年初レス 投稿者:松ちゃん@店長  投稿日: 1月 8日(水)20時47分19秒

遅くなりましたが、あけましておめでとうございます。

>もんさん
金杯の結果はどうでしたか?
月曜日は中山で144万馬券出ましたからね。

>ついんさん
不具合報告ありがとうございます。確認したところ、7-zip32.dllの仕様で
「x "C:\My Documents\Test1.7z" -o"C:\My Documents\Test1" *.*」
ではエラーになってしまいます。この場合は
「x "C:\My Documents\Test1.7z" "-oC:\My Documents\Test1" *.*」のように
スイッチごと""で囲こむことで問題無く解凍できます。

また、フォルダおよび複数ファイルの圧縮処理で""が抜けていた分
も修正しましたので、明日にでも修正版をUPさせていただきます。


書き忘れました(^^A; 投稿者:ついん  投稿日: 1月 8日(水)00時21分12秒

WindowsXP Pro,VB6.0で作成してます。


7-ZIPについて 投稿者:ついん  投稿日: 1月 8日(水)00時16分12秒

7-ZIPの解凍を行う上での質問なのですが、サンプルプログラムを使用して解凍そのものは
正常に行われるのですが、フォルダ名等にスペースが含まれている場合の動作が
どうもうまくいきません。

"-o"スイッチの後に解凍先フォルダを指定するようになっていますが、この
解凍先フォルダ名の中にスペースがあると一番先頭のスペース部分までをフォルダ
と認識してスペースより後ろはカットされた状態で解凍が行われます。

7-ZIP圧縮ファイルを"C:\Documents and Settings\ついん\My Documents\My_Data\"に
置いて解凍処理を行うと"C:\Documents\"を自動作成してそのフォルダの中に
解凍が行われます。
ただし"C:\Documents and Settings\ついん\My Documents\My_Data\"内に圧縮
ファイル名と同名の中身が空のフォルダは作成されます。

"-o"スイッチの後ろのフォルダ指定部分を""で囲めば良いと思いやってましたが、
これをやると解凍処理中にエラーが発生します。(Error Code:0x8102)
''でも同じ結果でした。

色々ネットで検索してみましたがわかりませんでした・・・

何か良い方法をご存じでしたらご教授願いますm(_ _)m


←前のログヘ INDEXに戻る リストに戻る 次のログヘ→