mfc-ml

2005年08月

31

[mfc 51213] Re: ファイル拡張子の一括変換

> お世話になります。
こんばんは。

> あるフォルダにあるファイルの拡張子を一括変換したいと考えております。
> MS-DOSでいうところの「rem *.p10 *.p11」のような処理をしたいと考えております。

> いろいろ調べてみましたが、“*”(ワイルドカード?)を使用して
> 変換する方法が見つかりませんでした。
> 変換したいファイル数が多いので、“*”を使用して変換できればと考えております。

> 申し訳ありませんが、お力添えをお願い致します。

FindFirstFileとFindNextのループ、んでもって FindClose のAPIで実装する
のだと思います。

DOS の REN コマンドも同様の実装(ファンクションリクエストに同様の機能
がありました)のはずです。

そういえば、RENコマンドと同様の機能の実装を見たことないですねー。
プロセス起動で REN コマンドを呼び出す手口の方が早いかも、です。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ Y.Uchiyama _/_/
_/private:
_/  HANDLE ゆーち;
_/  string mail = "mailto:y...@fsinet.or.jp";
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
31

[mfc 51212] ファイル拡張子の一括変換

お世話になります。

あるフォルダにあるファイルの拡張子を一括変換したいと考えております。
MS-DOSでいうところの「rem *.p10 *.p11」のような処理をしたいと考えております。

いろいろ調べてみましたが、“*”(ワイルドカード?)を使用して
変換する方法が見つかりませんでした。
変換したいファイル数が多いので、“*”を使用して変換できればと考えております。

申し訳ありませんが、お力添えをお願い致します。

環境
WinXP sp2
VC   6.0
31

[mfc 51211] Re: winsock2.h をインクルードすると limits が使えなくなる

どーも、松尾です。

>#include <winsock2.h>
>#include <limits>
>
>void f()
>{
> int n=std::numeric_limits<int>::max();
>}
>
>このコードをコンパイルすると以下のようなエラーが出ます。
>
>main.cpp(6): error C2059: 構文エラー : '::'
>main.cpp(6): error C2589: '(' : スコープ解決演算子 (::) の右側にあるトーク
>ンは使えません。
>main.cpp(6): warning C4003: マクロ 'max' に指定された実引数の数が少なすぎま
>す。
>
>
>winsock2.hのインクルードを外すとエラーは出なくなるのですが、
>原因はなんでしょうか。また、回避方法はありますか?
>コンパイラは Visual C++ .NET 2003 です。

エラー内容からmaxがdefineされているのではないかと予想できるので
winsock2.hから辿っていくとWindows.h -> WinDef.hと繋がって
そこに

#define max(a,b)            (((a) > (b)) ? (a) : (b))

があるからですね。

Windows.hの記述からするとNOMINMAXをdefineすれば、WinDef.h内のmaxとminは
無効になりそうです。これで他の部分に影響が出ないかはやってみないとわかり
ませんね。
最悪の場合は、maxとminを使う時にmaxとminをundefして、使い終わったら
再度、同じ内容でdefineするくらいかな。
31

[mfc 51210] Re: winsock2.hをインクルードすると limitsが使えなくなる

大久保です。


Reply to "[mfc 51209] winsock2.h をインクルードすると limits が使えなくなる"
(Message-Id: <20050831024447.3A89.KOBA_ML@yahoo.co.jp>
at Wed, 31 Aug 2005 02:45:07 +0900, 小林 wrote)
> このコードをコンパイルすると以下のようなエラーが出ます。
> main.cpp(6): error C2059: 構文エラー : '::'
> main.cpp(6): error C2589: '(' : スコープ解決演算子 (::) の右側にあるトークンは使えません。
> main.cpp(6): warning C4003: マクロ 'max' に指定された実引数の数が少なすぎます。
> winsock2.hのインクルードを外すとエラーは出なくなるのですが、
> 原因はなんでしょうか。また、回避方法はありますか?

Platform SDKでminやmaxといったマクロが定義されているためです。
#define NOMINMAXをwinsock2.hやwindows.hをインクルードするより前に書いて
やれば,抑制できると思います。


では。


-- 
大久保 雄介(Okubo Yusuke)
mailto:y...@n01.itscom.net , mailto:y...@js5.so-net.ne.jp
31

[mfc 51209] winsock2.h をインクルードするとlimits が使えなくなる

小林です。
お世話になっております。

#include <winsock2.h>
#include <limits>

void f()
{
int n=std::numeric_limits<int>::max();
}

このコードをコンパイルすると以下のようなエラーが出ます。

main.cpp(6): error C2059: 構文エラー : '::'
main.cpp(6): error C2589: '(' : スコープ解決演算子 (::) の右側にあるトークンは使えません。
main.cpp(6): warning C4003: マクロ 'max' に指定された実引数の数が少なすぎます。


winsock2.hのインクルードを外すとエラーは出なくなるのですが、
原因はなんでしょうか。また、回避方法はありますか?
コンパイラは Visual C++ .NET 2003 です。


-- 
小林 <k...@yahoo.co.jp>

__________________________________
Save the earth
http://pr.mail.yahoo.co.jp/ondanka/
記事検索
Amazon.co.jp
  • ライブドアブログ