teacup. [ 掲示板 ] [ 掲示板作成 ] [ 有料掲示板 ] [ ブログ ]

 投稿者
  題名
  内容 入力補助 youtubeの<IFRAME>タグが利用可能です。(詳細)
    
 URL
[ ケータイで使う ] [ BBSティッカー ] [ 書込み通知 ] [ 検索 ]


Re:同じファイルがあった場合は?

 投稿者:松ちゃん@店長メール  投稿日:2003年 7月24日(木)21時51分57秒 q217046.ap.plala.or.jp
  >いかさん
コマンドラインに-cオプションが指定されていない場合は更新日時が
新しい場合のみ上書きされます。
x命令で解凍された場合は状況により上書き確認が行われます。
 
 

同じファイルがあった場合は?

 投稿者:いか  投稿日:2003年 7月22日(火)11時47分58秒 adsl245-124.ip.avis.ne.jp
  解凍先に、同じファイル名又はフォルダ名がある場合は、解凍は、どうなるのでしょうか?
上書きがそれとも解凍されない?
 

進捗状況を表示しない

 投稿者:UNYORA  投稿日:2003年 7月21日(月)05時25分47秒 hcc3d73d596.bai.ne.jp
  すいません、ようやく発見しました。
LHAは-nオプション
ZIPは--iオプションですね。
 

進捗状況を表示しない

 投稿者:UNYORA  投稿日:2003年 7月21日(月)05時04分12秒 hcc3d73d596.bai.ne.jp
  こんにちは、UNYORAと申します。

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

Re:フォルダーのまま圧縮するには?

 投稿者:松ちゃん@店長メール  投稿日:2003年 6月29日(日)00時34分13秒 m087147.ap.plala.or.jp
  TACというのはたぶんシェアウェアの「卓駆★ for Windows95」だと思いますので、
試用目的で確認しましたが、正常にフォルダごと圧縮できました。

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

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

フォルダーのまま圧縮するには?

 投稿者:湘南 OldBoyメール  投稿日:2003年 6月26日(木)18時19分20秒 r113215.ap.plala.or.jp
  横浜から、はじめまして。
普段、TACでdllを使って圧縮・解凍しており、特に不自由は感じなかったのですが、
今回、Webページを圧縮して添付送信しようと、index.html と IMAGEフォルダ(index.htmlで表示するGIFファイルを収容)を一緒に、フォルダはフォルダのまま
内部のGIFファイルごと圧縮するにはどうしたらよいのでしょう?

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


 

返事遅くなってすいません

 投稿者:虎壱メール  投稿日:2003年 6月25日(水)10時35分43秒 210.233.119.93
  雪影さんありがとうございます

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

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

re:shlwapi.libについて

 投稿者:雪影メール  投稿日:2003年 6月20日(金)16時00分6秒 YahooBB220060136139.bbtec.net
  紛らわしい書き方ですいません。
インポートというのは、ライブラリをプロジェクトに参加させる、
という意味で書いていました。
プロジェクトのオブジェクト/ライブラリモジュールにshlwapi.libを追加するか、
プログラム中に
#pragma comment(lib"shlwapi.lib")
を書いておくと解決すると思います。
 

shlwapi.libについて

 投稿者:虎壱メール  投稿日:2003年 6月20日(金)13時54分34秒 210.233.119.93
  雪影さんありがとうございます

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:解凍先のパス指定について

 投稿者:雪影メール  投稿日:2003年 6月19日(木)19時44分9秒 YahooBB220060136139.bbtec.net
  一番簡単な方法は、
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です。
 

解凍先のパス指定について

 投稿者:虎壱メール  投稿日:2003年 6月18日(水)21時20分52秒 p6047-ipad01maru.tokyo.ocn.ne.jp
  おかげさまで現在順調に解凍ツールができているのですが
解凍先のパス指定で 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(NULLcmdStrresBufBUF_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: ファイル名・フォルダ名にスペースがある場合

 投稿者:虎壱メール  投稿日:2003年 6月15日(日)11時54分6秒 p15158-ipad53marunouchi.tokyo.ocn.ne.jp
  雪影さんありがとうございました

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

re: ファイル名・フォルダ名にスペースがある場合

 投稿者:雪影メール  投稿日:2003年 6月14日(土)14時18分2秒 YahooBB220060136139.bbtec.net
  これは、入力するときにパスを「""」で囲む、という方法じゃ駄目ですか?
("実行元パス・ファイル名" "解凍元パス・ファイル名" "解凍先パス・フォルダ名")

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

ファイル名・フォルダ名にスペースがある場合

 投稿者:虎壱メール  投稿日:2003年 6月14日(土)11時45分7秒 p6243-ipad63marunouchi.tokyo.ocn.ne.jp
  前回はありがとうございました
恐れながらもう一つ質問なんですが
現在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]);
 

ありがとうございました

 投稿者:虎壱メール  投稿日:2003年 6月13日(金)15時17分20秒 210.233.119.93
  FindFirstFile・FindNextFileでやってみたいと思います
雪影さんありがとうございました

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

re:ワイルドカードについて

 投稿者:雪影メール  投稿日:2003年 6月13日(金)02時58分25秒 blue.passo.cms.kyutech.ac.jp
  >虎壱さん
ワイルドカード指定するとUnlhaCheckArchiveがファイル名"*.lzh"のファイルを探すから
じゃないでしょうか。複数のファイルを指定するためにワイルドカードを使うのなら
自分でファイル名を解決する必要があると思います。
まずFindFirstFileで"c:\*.lzh"にマッチするファイルを探します。
そしてFindNextFileでマッチするファイルがなくなるまで検索します。
これらの結果得られたファイル名ひとつひとつに解凍処理をかけるといいんじゃないでしょうか。

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

追記です

 投稿者:虎壱メール  投稿日:2003年 6月11日(水)16時22分52秒 210.233.119.93
  LZH形式では解凍処理単独でワイルドカードの処理が出来たのですが
ZIP形式とZ形式だと単独でも解凍出来ません・・・
何か特別な処理が必要なんでしょうか?

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

サンプルソースの件

 投稿者:pom  投稿日:2003年 6月11日(水)15時45分44秒 pl640.nas923.okayama.nttpc.ne.jp
  先程はDLさせて頂いたのにうっかりとお礼も言わずにすみません。
どうもありがとうございました。
OLEDragDropでファイルかフォルダかの分岐が違っていたようです。
サンプルソースは不慣れな私にとってはとても貴重です。これから
もよろしくお願いいたします。。。って他力本願な。。(^^ゞ
 

サンプルソース

 投稿者:pom  投稿日:2003年 6月11日(水)14時16分9秒 pl640.nas923.okayama.nttpc.ne.jp
  LZH形式の圧縮対応VB6.0版(22KB)とDLLをダウンロードさせていただきました。EXEを走らせ"test.txt"というファイルをD&Dしたのですが反応がありません。"test.txt.lzh"が出来るようですが検索しても見当たらずエラーもでません。何故なんでしょう?ZIP形式の方はちゃんと作動していました。
 

ワイルドカードについて

 投稿者:虎壱メール  投稿日:2003年 6月11日(水)14時11分26秒 210.233.119.93
  前回はありがとうございました

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

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

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

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

//LZHファイル形式チェック用API関数宣言
typedef BOOL(WINAPI *UNLHACHECKARCHIVE)(LPCSTR _szFileNameconst 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形式でなかった
{

}
 

レンタル掲示板
/8