////////////////////////////////////////////////////////////////////
/*

    KAB-studio.h


    (C)KAB-studio 1999 - 2005 ALL RIGHTS RESERVED.
        http://www.kab-studio.biz/
        info@mail.kab-studio.biz

    送信日： 2005/02/14(Mon) No.294
    配信数： 2001
    発行元： まぐまぐ ( URL: http://www.mag2.com/  ID: 0000012198 )
*/
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
/*                ２００５年２月１４日（月）の更新                */
http://www.kab-studio.biz/index.html

・２月表紙壁紙追加！
　毎月恒例、新しい表紙壁紙です。
　今回はほとはー全キャラ勢揃い！
　ダウンロードは CG Gallery にて。
[ CG Gallery ]
http://www.kab-studio.biz/CG/Gallery/index.html#KAB_studio_200502_1024

・ほとはー外伝３に１ページ追加
　三人合体ホットハーブ 外伝３に１ページ追加！
[ 三人合体ホットハーブ 外伝３ 【ワタシ の キロク】 ]
http://www.kab-studio.biz/Comic/HotHerbA3/index.html


////////////////////////////////////////////////////////////////////
/*                        ちょお普通な日記                        */
http://www.kab-studio.biz/nikki2/index.html

2005/02/06 (Sun)
　表紙壁紙は来週に持ち越し。So-net解約。 kab-studio.com ドメインは
取っておきます。Codian とプログラミング辞書に google AdSense を追加。
どうお金もうけしていくか……。NHKスペシャル「フリーター漂流 〜モノ作
りの現場で〜」の感想をかぶろぐに。そして結婚話。

2005/02/07 (Mon)
　最近、起きると疲労感が……。夏コミの振込。ぷらとわ書いたりMachician
描いたり。夕方に中間派遣Ｂ社の社長さんとお話。信頼されてる……？

2005/02/08 (Tue)
　今朝７時まで部屋の片付け。昼１２時に起きてまた片付け。会社の書類と
か雑誌とか。 Google AdSense がかなり好調。

2005/02/09 (Wed)
　表紙壁紙の主線しか描き上がらず。試行錯誤しまくり。主線バージョンを
かぶろぐに。

2005/02/10 (Thu)
　ずーっと表紙壁紙描いて、まだ完成せず。ほとはー６キャラなので時間掛
かる。キャラは塗り終わった。背景なしバージョンをかぶろぐに置きまし
た。はてなブックマークスタート。かぶっくまーく。

2005/02/11 (Fri)
　２月表紙壁紙完成。描き上がるまでの全行程。カラーイラストは当分パス
……。

2005/02/12 (Sat)
　昨日は深夜までプログラミング。 URL のパラメーターを隠すのに苦労。
今日はMachician書きと就職活動。おしごと募集中です。貴方の会社で教え
ます。そして億の世界。


////////////////////////////////////////////////////////////////////
/*                         風雅、舞い                             */
http://www.kab-studio.biz/Novel/Fuga/index.html

■　第十一章　ファインダウト社　−２１−

「やっとですか」
　青年は鼻で笑った。手に持つ紙をひらひらと波立たせる。
「こんな紙切れ一枚に時間掛かりすぎです」
「何言ってるんだ、正式な国家予算なんだ、これまでの金とは違うんだ」
　石和は笑いながらそう言い返す。
「その方が使いづらいということは？」
「利用目的は問われない。額はこれまでより一桁多い。しかも我々の活動が
正規のものになる、犯罪にも問われない」
「今までだって問われなかったでしょう」
「規模が小さかったからだ。マスコミに広まっても抑えられるようになる
上、敵対組織を犯罪組織とみなすことができる」
　青年の手が止まる。
「……それは面白そうだ」
「ファインダウト社を適当な理由を付けて押さえることもできる。逃げ出し
たら検問させることもできる。もっとも、まだ非公式だから実効性はまだ期
待できないがな」
「いつ頃できます？」
「１１月頭には。それまでにＡＷを何体か作ってプレゼンする必要がある」
「暇はないというわけですか」
　青年が窓を覗く。窓越しに見える工場内、真新しい機械が何台も置かれて
いる。
「まずは借金を返すか」
「その前に、やることがあるでしょう？」
　視線を石和へと向ける。石和の表情から余裕が消える。
「……本当にするのか」
「軽位のＡＷ化は成功率ほぼ１００％と考えていいですから」
「ＡＰは無理なんだね」
　青年が石和を睨み付ける。
「……悪かった」
「別に。基本性能はＡＰの方が上です。これは否定しません。ですが属性が
合わなければＡＰ化できないというのでは大量生産は不可能です。それに、
こと戦闘力ではひけは取らないと考えています」
　そうだ、あの男が作ったのは欠陥品だ。ＡＰなど何の役にも立たない。
「ＡＷ部隊で叩き潰してやりますよ……左の頭を」
                                                              (続く)


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[KCM]
「まずは……そうだな、あの装甲多脚を踏みつぶしてくれないか？」
　笑みを浮かべ、林田賢一が、しわがれた声で、息子にそう、命令した。

Machician 第４話 機械の魔法、機械の天使 完
　　　　　　【第５話は２月２１日から！】
[ Machician ]
http://d.hatena.ne.jp/kab_studio/20040823#1093276416
[ Machician＋設定 最新一覧 ]
http://d.hatena.ne.jp/kab_studio/searchdiary?word=*%5BMachician
_______________________________________________________________[KCM]

////////////////////////////////////////////////////////////////////
/*                       #pragma twice                            */
http://www.kab-studio.biz/Programing/PragmaTwice/index.html

　Version 14.27
フォルダを潜るファイル検索

「今回は、前回中途半端に作ったファイル検索機能をもう少しちゃんとして
みます」
『おー』
「というわけで、まずは完成品のコードから」

/*
    指定したフォルダからファイルを検索します。
    戻り値として一致数を返します。
 */
int CountMatchFile
    ( const char * const p_pchFolderPath
    , const char * const p_pchFileName 
    )
{
    int iNum = 0;

    // 検索するフォルダをカレントディレクトリにします。
    BOOL bRes;
    bRes = SetCurrentDirectory( p_pchFolderPath );
    if( bRes == FALSE )
    {
        // フォルダが存在しません。
        return -1;
    }

    CStringArray cFolderStrAry;

    // 最初のファイルを取得します。
    WIN32_FIND_DATA stWin32FindData;
    HANDLE hHandle = NULL;
    hHandle = FindFirstFile( "*", &stWin32FindData );
    do
    {
        if( stWin32FindData.dwFileAttributes 
                & FILE_ATTRIBUTE_DIRECTORY )
        {
            // フォルダなので取っておきます。
            cFolderStrAry.Add( stWin32FindData.cFileName );
        }
        else if( _stricmp
                ( stWin32FindData.cFileName
                , p_pchFileName 
                ) == 0 )
        {
            // ファイル名が一致しました。
            ++iNum;
        }

        // 次のファイルを取得します。
    }while( FindNextFile( hHandle, &stWin32FindData ) );

    // ハンドルを閉じます。
    FindClose( hHandle );

    // フォルダに対して再帰呼び出しをします。
    for( int iF1 = 0; iF1 < cFolderStrAry.GetSize(); ++iF1 )
    {
        if    (
            ( cFolderStrAry.GetAt( iF1 ) == "." ) ||
            ( cFolderStrAry.GetAt( iF1 ) == ".." )
            )
        {
            // . と .. はスキップします。
            continue;
        }

        // フォルダを連結します。
        CString cPathStr = p_pchFolderPath;
        if    (
            ( cPathStr.GetAt
                ( cPathStr.GetLength() - 1 ) != '\\' ) &&
            ( _mbsbtype
                ( (const unsigned char *)(LPCTSTR)cPathStr
                , cPathStr.GetLength() - 1 
                ) == 0 )
            )
        {
            // 最後に \ がなければくっつけます。
            cPathStr += "\\";
        }
        cPathStr += cFolderStrAry.GetAt( iF1 );
        // 再帰呼び出しします。
        iNum += CountMatchFile( cPathStr, p_pchFileName );
    }

    return iNum;
}

void CSearchDlgDlg::OnSearchStart() 
{
    int iCount = 0;
    iCount = CountMatchFile( "D:\\", "readme.txt" );
    TRACE( "一致数： %d\n", iCount );

    // 【検索中】ダイアログを表示します。
    // CSearchingDlg cDlg;
    // cDlg.DoModal();
}

『長！』
「しかも、今回はかなり複雑だよ」
『げげ』
「たまにはこういう本格的なプログラムもね。まずは」

    iCount = CountMatchFile( "D:\\", "readme.txt" );

「の CountMatchFile() の説明から。この関数は前回と同じく、第１引数に
検索対象のフォルダ、第２引数に検索するファイルを渡すと、戻り値に一致
した件数を返します」
『前と同じね』
「ただ違うのは、今回はフォルダを深く潜っていくっていう機能を追加しま
した。つまり、この例だと D:\ の下のフォルダのを全部検索します」
『おー、なんか本格的』
「では、実際に関数の中を見てみます」

    // 検索するフォルダをカレントディレクトリにします。
    BOOL bRes;
    bRes = SetCurrentDirectory( p_pchFolderPath );
    if( bRes == FALSE )
    {
        // フォルダが存在しません。
        return -1;
    }

『フォルダがないときは -1 を返す、ね』
「ただ、これは使う場合にはちょっとわかりづらいかも」
『でも、エラー処理ならこれもひとつの方法だよね』
「うん、 Version 13.05 ( No.241 ) でやったね。まぁこの関数はあとから
もっと手を加えるから、その時に考えてもいいかも。では次」

    hHandle = FindFirstFile( "*", &stWin32FindData );

「前回と違うのは、前回は "*.*" で検索していたのを、今回は "*" にした
こと」
『？　ほとんど同じじゃない？』
「 "*.*" でひっかからないものと言えば？」
『えー？　ファイルならまずひっかかる……あ！　フォルダ！』
「そういうこと。今回はフォルダも検索対象にしました」
『そっか、フォルダを深く深く潜ってくんだもんね』
「そこで、フォルダかどうか判別してみます」

        if( stWin32FindData.dwFileAttributes 
                & FILE_ATTRIBUTE_DIRECTORY )
        {
            // フォルダなので取っておきます。
            cFolderStrAry.Add( stWin32FindData.cFileName );
        }

「フォルダの場合、WIN32_FIND_DATA::stWin32FindData.dwFileAttributes 
に FILE_ATTRIBUTE_DIRECTORY フラグが立っています」
『これを調べて……？』
「 cFolderStrAry は CStringArray 」
『 Version 13.12 ( No.248 ) の、文字列を入れられるのだね』
「この中に、見つかったフォルダをどんどん入れていきます」
『ん？　取っておくの？』
「そう、あとでそのフォルダを見に行くから。たとえば、 folder_root と
いうフォルダの中が以下のような構成になっているとします」

folder_root
    folderA
        fileX
    folderB
        fileY
    fileA
    fileB
    fileC

「この folder_root を検索する場合、次の二通りの検索方法があります」

1.folderA や folderB の中を先に検索する。
　fileA とかを探すのは後回し。
2.まず folder_root の中を全部見る。
　それから folderA や folderB の中を見る。

『あたしが言ったのが 1 の方で、水希ちゃんが作ったのが 2 の方？』
「そういうこと。この方法の違いは、【最後まで検索する】場合にはほとん
ど違いがないんだけど、【途中でキャンセルする】場合には大きく異なりま
す」
『普通にファイル検索するときって 2 の方だよね、そうじゃないと、 
fileB を見つけるのに時間掛かりそう……』
「でも検索内容によっては 1 の方がいい場合もあるから」
『用途によって変える、ってこと？』
「そういうこと。というわけで次回に続く！」
『ええっ！？』

/*
    Preview Next Story!
*/
『まだ半分以上残ってる……』
「その半分が重要なんです」
『重要？』
「久々にプログラムのテクニックについての説明、かな」
『久々っていうのもどうかねー』
「というわけで次回」
＜ Version 14.28 再帰呼び出しでフォルダを潜る ＞
『につづく！』
「動的配列に再帰呼び出し、要復習！」
『うぉ、総力戦ですか！？』


////////////////////////////////////////////////////////////////////
/*                ２００５年２月２１日（月）の更新                */
http://www.kab-studio.biz/index.html

・ほとはー外伝３に１ページ追加
　三人合体ホットハーブ 外伝３に１ページ追加予定。


////////////////////////////////////////////////////////////////////
/*                          ご注意！！                            */

・このメールを返信しないでください。
・ご意見・ご希望・ご感想は[チョー普通な日記]よりお送りください。
http://www.kab-studio.biz/nikki2/
・購読登録を解除したいときにはこのページで行なってください。
http://www.mag2.com/m/0000012198.htm
・解除は自分で行なってください。
・バックナンバーはこれらのページにあります。
http://backno.mag2.com/reader/Back?id=0000012198
http://www.kab-studio.biz/Freeware/index.html#MailMagazine


////////////////////////////////////////////////////////////////////
/*
    KAB-studio.h
      Weekly Mail Magazine.
      Written by Kaburaya Seiden.
      http://www.kab-studio.biz/Info/MailMagazine/

    (C)KAB-studio 1999 - 2005 ALL RIGHTS RESERVED.
        http://www.kab-studio.biz/
        info@mail.kab-studio.biz
*/
////////////////////////////////////////////////////////////////////

