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

    KAB-studio.h


    (C)KAB-studio 1999 - 2003 ALL RIGHTS RESERVED.
        http://www.kab-studio.com/
        info@kab-studio.com

    送信日： 2003/07/14(Mon) No.215
    配信数： 3010 ( Mag2 + Pubzine )
＊    発行元： まぐまぐ ( URL: http://www.mag2.com/  ID: 0000012198 )
＊    発行元： Pubzine ( URL: http://www.pubzine.com/  ID: 590 )
*/
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
/*                ２００３年７月１４日（月）の更新                */
http://www.kab-studio.com/

・ほとはー１話追加！
　三人合体ホットハーブに１話追加。テレビネタです。
[ 三人合体ホットハーブ ]
http://www.kab-studio.com/Comic/HotHerb/


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

2003/07/06 (Sun)
　ほとはー夏コミ版を２ページ半。１ページ完成させるのにかなり苦労。他
には特になし。今回のほとはーはつまんない？

2003/07/07 (Mon)
　かなり疲れてる。お仕事は VB に。いろんな言語を知ってるのは重要か
と。月曜深夜と水曜深夜のビデオ事情。ハードディスクからダビングすると
劣化するから。ひさびさゆめりあ。

2003/07/08 (Tue)
　ゆめりあ・七瀬さんシナリオをクリア。ちょっとどたばたしすぎ？　他の
シナリオもはよしたい。今週はスローダウン。お仕事はサーブレットと 
VB 。

2003/07/09 (Wed)
　九葉を狙ってたのにさくっと七瀬さんシナリオに入ってしまった。 VB 嫌
だぁ。つか NT4 が……。ほとはーのあとはどうしよう。すてプリの小説買
おうかなぁ。そして VB マスター。

2003/07/10 (Thu)
　前に作ったので仕様の勘違いがあってロジック的に複雑なことが判明。も
う一度作り直して、これを VB に移植しないと。帰りにいろいろ購入。ステ
ルヴィアとすてプリくらいしか楽しみじゃない。おね２はなぁ……。

2003/07/11 (Fri)
　Java のを VB に移植。ソートを自分でするはめに。帰りにアニメイト
へ。ゆめりあ九葉シナリオクリア。また急展開あっさりめ。そして東京の就
職事情とレベル。

2003/07/12 (Sat)
　午前中はほとはー本編。のんびりしてからほとはー夏コミ版を１ページ
半。中身についてはないしょ。ガンダムＳＥＥＤのＥＤが……。昨日 VB で
死ねた……。そして地方とのスキル差。


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

■　第八章　朱と碧　−３−

　赤葉が指した方角を確認してから、雅樹は言う。
「穂香、頼む」
「やめておきなさい」
「あ、はい」
　雅樹は素直に応じた。
「方角だけではな。正確な角度は判らない上に、距離は感じ取ることができ
ん。穂香に無駄な労力を強いる必要はない」
「わかりました」
「だが」
　赤葉は舞の方を向く。
「碧き泉からも調べれば、だいたいの位置は判るはず」
「え……」
　雅樹がジト目で振り向く。舞は苦虫を噛み潰した顔で答える。だって、感
じなかったんだもの。
　というよりも。
「雅樹、今日ここ泊まっていい？」
「もちろんだ。２、３日はいるつもりだが」
「なら……赤葉様」
　舞は一歩進んで、請うた。
「私は……今赤葉様が仰った『りゅうみゃく』という言葉すら知りませんで
した。もしよろしければ、御教授願いたいのですが。今晩にでも」
　赤葉は振り向き、ゆっくりとうなずいた。
「私も碧き泉には興味がある。この村は……」
　見上げれば、火の光を反射する岩々。
「火と共に歩んできた。だが、それがいつまでも続くとは思えん。いつか
は、この泉も枯れ果てよう。だが」
　再び舞へと向く。
「火と共に生きることは、人生の喜び足るものだと私は感じておる。なら
ば、その場をできるだけ長く保ちたい……どうか、御助力願いたい」
「こっ、こちらこそ」
　深々と頭を下げた赤葉にあわせて、舞も深々とお辞儀をした。
                                                              (続く)


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[KCM]
『先週に続いて KAB-studio.ROM について質問！』
「はい火美ちゃん」
『どんなものが入ってるの？』
「まず、 KSCL 」
『けーえすしーえる？』
「 C++ のクラスライブラリ」
『ってゆーと、 MFC みたいなのってこと？』
「えっと、 Version 11.03 ( No.203 ) で〈ソ〉について見たでしょ」
『うん、 \ が含まれちゃってるってゆーのだよね』
「その辺を全部カバーした文字列操作関数が揃ってます」
『え”、まぢ？』
「それに SDK だけでイベントハンドラ処理が簡単にできるクラスとか」
『なんか結構すごい？』
「かもね。詳しくは下記ページを。全クラスのリファレンスもあります」
http://www.kab-studio.biz/Info/Product/C64/KAB_studio_ROM.html
_______________________________________________________________[KCM]


////////////////////////////////////////////////////////////////////
/*                       #pragma twice                            */
http://www.kab-studio.com/Programing/PragmaTwice/

　Version 11.15
文字列配列の拡張

「今まで文字列について見てきたけど、結局は CString とかの文字列クラ
スを使うことになります」
『コンストラクタとデストラクタがあるから便利ってことよね』
「もちろんそうなんだけど、文字列クラスを使うとそれ以外にもいっぱいメ
リットがあるんです」

・確保と解放を必ず対にして処理してくれる。
・コンストラクタで領域を確保してくれる。
・デストラクタがで解放してくれるからメモリリークしない。
・リサイズ等について気にしなくていい。
・便利なメンバ関数が揃ってる。
・戻り値として返す事ができる。
・演算子を使って操作する事ができる。

『うわ、かなりいっぱいあるね』
「ただ、デメリットもあります」

・メモリを確保する関数を選べないクラスがある。
・文字コードが違う場合の処理が難しい。
・結局はある程度仕組みを知らないと危険。
・ C 言語では使えない。

『でも少ないね。文字コードとかはまだ先の話っぽいし。メモリを確保する
関数を選べないクラスって？』
「たとえば CString とか」
『つかそれしか知らないからダメじゃん……』
「あと、実は重要なのが C 言語でしか使えないって点。クラスは C++ でし
か使えないからね」
『 C 言語しか使えない状況ってあるの？』
「他の人と一緒にプログラム組むときに、その他の人が C++ 使えなかった
ら？」
『う”……そういうときは C の機能だけでやらなきゃいけないんだ』
「そういうこと。そういうときは malloc() とか使えばいいわけだけど」
『教わってるからあたしもできる？』
「だいたい大丈夫だと思うよ」
『だいたい？』
「たとえば」

    char *pch = (char *)malloc( strlen( DATA ) + 1 );

「ってメモリを確保したとします。で、この文字列に別の文字列をくっつけ
たいっていう場合、どうすればいいのか、とか」
『あー、そういうのは教わってないもんね』
「そういうときは、ふたつの文字列の長さを足したサイズだけ malloc() し
て、そこにふたつの文字列をくっつけて入れて、ポインタを置き換えます」
『？』
「やってみた方が早いかな」

void Concat()
{
    // このデータが入る領域を確保します。
    const char *const DATA = "あいうえお";
    // 確保。
    char *pch = (char *)malloc( strlen( DATA ) + 1 );
    strcpy( pch, DATA );
    TRACE( "%s\n", pch );

    // これに次の文字列をくっつけます。
    const char *const DATA2 = "かきくけこ";

    // 両方入るサイズだけ確保します。
    char *pchTemp 
        = (char *)malloc
                ( strlen( pch )
                + strlen( DATA2 )
                + 1 
                );
    // まず最初の方をコピー。
    strcpy( pchTemp, pch );
    // 後の方をくっつけます。
    strcat( pchTemp, DATA2 );

    // 最初に取った方を解放。
    free( pch );
    // ポインタを置き換えます。
    pch = pchTemp;
    // これでサイズの拡張が完了しました。

    // 出力。
    TRACE( "%s\n", pch );
    // あいうえおかきくけこ

    // 最後にやっぱり解放します。
    free( pch );
}

『長！！』
「って言っても、実際には同じ事を２度してるようなもんなんだけどね。前
半部分は前と同じだから飛ばして、まずはここ」

    // 両方入るサイズだけ確保します。
    char *pchTemp 
        = (char *)malloc
                ( strlen( pch )
                + strlen( DATA2 )
                + 1 
                );

『あ、これがふたつの文字列のサイズを足したの、ってことね』
「そう。これを pchTemp に入れておきます」
『 pch に入れちゃいけないの？』
「だって」

    // まず最初の方をコピー。
    strcpy( pchTemp, pch );

「って感じに元の文字列をコピーしなきゃいけないんだから」
『そっか。 pch に入れちゃったら前のポインタがなくなっちゃうんだ』
「これで、 pch と pchTemp には同じ文字列が入ってます。次に」

    // 後の方をくっつけます。
    strcat( pchTemp, DATA2 );

「この strcat() ってランタイムで文字列をくっつけます」
『第１引数のに、第２引数のをくっつける、んだよね』
「そう。これで、 pchTemp の中には "あいうえおかきくけこ" が入ってる
ことになります」
『ってことはこれでオーケー？　でもまだなんかやってるよね』

    // 最初に取った方を解放。
    free( pch );
    // ポインタを置き換えます。
    pch = pchTemp;

『最初に malloc() してきたのを free() してから、 pch に pchTemp を入
れる……あ！　そっか、そうしないと最初に malloc() したのがメモリリー
クするんだ』
「そういうこと。この辺ちょっとわかりづらいからちゃんと見ておこうか。
たとえば」

pch      -> 0x00000001
pchTemp  -> 0x00001001

「っていう感じにそれぞれにアドレスが入っていたとします。で、それぞれ
のアドレスの場所には」

あいうえお
↑0x00000001

あいうえおかきくけこ
↑0x00001001

「っていう感じにメモリに入ってます」
『で、まず pch の方を free() するんだよね』
「だから、 0x00000001 のメモリ領域が開放されます」

DD DD DD DD DD DD DD DD DD DD
↑0x00000001

あいうえおかきくけこ
↑0x00001001

「 DD が入ってるのはデバッグモードだから、ってことで」
『前回のやつね』
「でも、この時点では」

pch      -> 0x00000001
pchTemp  -> 0x00001001

『これは変わってないわけね』
「もちろん 0x00000001 は使えないけどね。で、実際に使うポインタは 
pch の方だから、 pchTemp のアドレスを入れて」

pch      -> 0x00001001
pchTemp  -> 0x00001001

「これで、 pch の方に〈あいうえおかきくけこ〉のが入ったことになるわ
けです」
『 pchTemp の方でくっつけたりして、 pch を解放してから pchTemp のと
入れ替え……めんどくさいねー』
「というわけで、 CString を使うと簡単」

void ConcatWithCString()
{
    // まず最初の文字列を渡します。
    const char *const DATA = "あいうえお";
    const char *const DATA2 = "かきくけこ";

    CString cStr;
    // まず最初の文字列を入れます。
    cStr = DATA;
    // 次に２番目の文字列をくっつけます。
    cStr += DATA2;
    // 出力。
    TRACE( "%s\n", cStr );
    // あいうえおかきくけこ
}

『うわ、簡単すぎる……』
「 CString は = とか += とかで文字列を操作できるからね。なんでできる
のか、というわけで次回に続く！」

/*
    Preview Next Story!
*/
『メモリの話のあとは、クラスの話ぃ？』
「ちょっと色々振れすぎてる？」
『さすがにね』
「でも、同じ文字列操作の話なんだよ？」
『どっちも技術的には必要なこと、ってこと？』
「というわけで次回」
＜ Version 11.16 簡単なクラスを作ってみよう！ ＞
『につづく！』
「作らなくても使えるけど、やっぱり使えなきゃ」
『ってしてるから必要なことが増えるのよー』
「まぁ元々いっぱいあるし、必要なことは」


////////////////////////////////////////////////////////////////////
/*                ２００３年７月２１日（月）の更新                */
http://www.kab-studio.com/

・ほとはー１話追加予定
　三人合体ホットハーブに１話追加予定。お約束は通じない。


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

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


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

    (C)KAB-studio 1999 - 2003 ALL RIGHTS RESERVED.
        http://www.kab-studio.com/
        info@kab-studio.com
*/
////////////////////////////////////////////////////////////////////

