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

    KAB-studio.h


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

    送信日： 2003/05/19(Mon) No.207
    配信数： 3170 ( Mag2 + Pubzine )
＊    発行元： まぐまぐ ( URL: http://www.mag2.com/  ID: 0000012198 )
＊    発行元： Pubzine ( URL: http://www.pubzine.com/  ID: 590 )
*/
////////////////////////////////////////////////////////////////////
/*                  KAB-studio 移転のお知らせ                     */
http://www.kab-studio.biz/Info/Removal/

　このたび、 KAB-studio はお引っ越しすることになりました。
　
・移転前：http://www.kab-studio.com/
・移転後：http://www.kab-studio.biz/
　
　すぐにではありませんが、各ページ順次移動します。移動後は元のページ
はなくなります（つまりミラーリングはされません）。
　詳しくは下記ページをお読みください。

http://www.kab-studio.biz/Info/Removal/

　このメルマガをお読みの皆様は、次の点に注意してください。

・昔のメルマガのリンクは切れる！
　当然ですが、 http://www.kab-studio.com/ から始まるリンクは、移行後
は完全にリンク切れになります。ということはつまり、この号も含めて、
リンクのほぼすべてが切れてしまうことになります。
　理論上はそのまま www.kab-studio.biz に変換すれば通りますので、全置
換するという手もあります。

・メルマガをリアルタイムに読む分には問題なし。
　リンク切れは「過去のメルマガ」だけです。発行時に移動していれば当然
リンク先は変えているので大丈夫です。
　また、発行はまぐまぐも及び Publize に委託してありますので、配信部
分に関してはまったく変わりません。購読登録のし直し等は必要ありませ
ん。


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

・ほとはー１話追加！
　三人合体ホットハーブに１話追加。ぴゅー。
[ 三人合体ホットハーブ ]
http://www.kab-studio.com/Comic/HotHerb/


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

2003/05/11 (Sun)
　実家からマシン届く。かなり謎なマシンだ。外付けってのが……。ほと
はー解説。ぷらとわスランプ。テレビはアバレンジャーにちょっとビック
リ。そしてバイオとか Oracle とかＯＳとか。

2003/05/12 (Mon)
　PowerTone3 と DynaFont150 を購入。トーンのパプリカ。フィギュア増え
まくり。 Socket7 の CPU がない。そして上流工程。そして CASE ツールと
かバイオＵとか。

2003/05/13 (Tue)
　お休みして母の日イベント（爆）。マリみてが面白い理由。そしてゲーム
でテンプレート。そしてそのまま CPU 使えないんじゃ？　そして消費電
力。

2003/05/14 (Wed)
　歯が〜。ドキュメント作成って難しい。固定 IP 取得。容量制限なくなる
といいことが。ほとはー描き。そしてゲームとテンプレート。そして 
K6 シリーズ。そして SQL の結合。

2003/05/15 (Thu)
　固定 IP 取得したけど接続できない〜と思ったら NAT は中から効かなか
った……。自宅サーバー実現。 VB の Spread 。そしてステルヴィア。

2003/05/16 (Fri)
　作りかけバージョン。 AirH"Phone にバージョンアップ、と思ったらでき
なかった……。スクールランブルいい感じ。 Ever17 ＰＣ版来る。違いよく
わかんない。そしてレコード数１００万。そして WTL 。

2003/05/17 (Sat)
　www.kab-studio.biz 始動。ページはプロキシー経由でチェック。とりあ
えずの設定は完了。サーバー運用って大変。そして夏コミ。Ｒをどう通販す
るかだなぁ。


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

■　第七章　告白　−１−

「全員の病気が治る、それでいいじゃないか」
　洋一は智子に言う。ふたりが見上げるその上には、人一人入る水柱カプセ
ルが２機設置されている。緑色の液体の中には人影。白い保護膜が包帯のよ
うに体を包み込んでいる。
「鳳夫妻はそれで納得してくれたわけだし」
「別に、今度の５人のことじゃないんです。……言わなくてもわかりますよ
ね」
「それに答えたら、君は手を引くだろうから言えないな」
「……」
　この人は、私に引く気がないことを知っていて、こういう言葉を吐く。
「今度は僕の方から、質問をしていいかな」
「……はい」
「６人目を作りたいって言ったら？」
「！！」
　智子は驚愕して、言葉も出なかった。
「別にね、僕は私利私欲のためにしたいわけじゃないし、ＡＰの国家を作り
たいわけでもないんだ。でも」
　洋一は、足下のおはるさんを見た。
「別に作っても、問題が増えるわけじゃないし」
「増えますよ！　問題、大ありじゃないですか！！」
「確かに数は増えるかもしれない。でも、種類は増えないんじゃないかな」
「え……」
　洋一は再び見上げる。そして、胸ポケットから名刺を取り出して、智子に
渡した。
「……？」
　裏にはアドレスとユーザーＩＤ、パスワードが手書きで書かれていた。
「６人目はすぐに作るんじゃないんだ。今度の件の後の計画がそこに書かれ
てる」
「次の計画……」
「そのときに君がいるととても助かる。これから、もっともっとＡＰを作ら
なきゃいけないし、それに……」
　洋一は、水柱の表面に触れて、言う。
「減る問題だって、あるんだから」
                                                              (続く)


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[KCM]
『 www.kab-studio.biz 、始まったね』
「移転が始まったって言っても、まだひとつも移転されてないから」
『まだまだってことね。このドメインになったメリットってなに？』
「ドメインっていうよりも、自宅のマシンがサーバーになってるから」
『プロバイダじゃないってこと！？』
「そういうこと。そのおかげでまず容量の制限がなくなったから」
『大きなファイルも置けるわけね』
「それにサーブレットも使えるから」
『さーぶれっと？』
「 CGI の便利なの」
『ってことは掲示板とか？』
「掲示板はないと思うけど、色々できるからね」
『色々期待していい？』
「たぶん……」
http://www.kab-studio.com/
_______________________________________________________________[KCM]


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

　Version 11.07
１バイト文字と２バイト文字

「前回紹介した Unicode は、英数文字も日本語もすべて２バイトの変数に
入れて処理するものでした」
『でも使っちゃいけないんでしょ？』
「いけないってことはないけど、とりあえず使わない方がいいかな。でもそ
うなると問題が出てきます」
『問題？』
「たとえば Version 11.02 ( No.202 ) とかでやった〈文字の検索〉。あれ
は \ を探したけど、もし Shift-JIS の２バイト文字を検索するとしたら」

        if( ch[iIndex] == '\\' )

「ってできないでしょ」
『そっか、これだとリードバイトかトレイルバイトかのどっちかになっちゃ
うんだ』
「普通の人にとっては〈\〉も〈￥〉も違いがないように見えても」
『コードも違えば、片方は１バイトでもう片方は２バイト、全然違うよ
ね……』
「だから、まず次の点を考えなきゃいけません」

・扱う文字は、１バイト文字のみか、２バイト文字も含むのか。

『って、ほとんど２バイト文字じゃないの？』
「もちろん普通に使う場合には２バイト文字が普通だろうけど、たとえばダ
イアログで入力してもらうときに、１バイト文字だけにしてもらうことはで
きるから」
『お願いするってこと？』
「えーっとそういうことじゃなくて……２バイト文字が入ってたら警告を出
すとか」
『あ、そういうことか』
「ダイアログみたいに手で入力するものの他に、ファイルだったら最初に文
字をチェックするとか」
『質問！』
「はい火美ちゃん」
『１バイト文字か２バイト文字かってどうやって調べるの？』
「 Version 11.04 ( No.204 ) で紹介した _mbsbtype() を使います」
『そっか、あれってリードバイトかトレイルバイトか、ってのを調べるだけ
じゃないんだったね』
「１バイト文字かっていうのもわかるからね。で、このどちらかに決めるこ
とで次のことが決まります」

・１バイト文字のみ＞楽。
・２バイト文字も含む＞大変。

『まぁそうだろうけど……』
「１バイト文字の方は、特に難しいことを考えずに操作できるから簡単。
２バイト文字の方は、ものすごく大変になるか、できないことが増えるかの
どちらかになります」
『できないこと？』
「１バイト文字と２バイト文字が混在すると、ざっと次のような問題が出て
きます」

・１バイトずつの文字の比較はできない。
・文字タイプのチェックをするか、専用の関数を使う必要がある。
・１バイト文字と２バイト文字で同じ文字を比較できない。
・「固定長」処理ができない。

『う、４つも』
「他にもたぶん色々……」
『げ』
「ひとつずつ見ていくと」

・１バイトずつの文字の比較はできない。

「これはさっき言ったこと」
『でもこれって、文字列でチェックすればいいんじゃないの？』
「それはそうなんだけど、そうなると次の問題が出てきます」

・文字タイプのチェックをするか、専用の関数を使う必要がある。

『リードバイトかトレイルバイトかのチェックとかが必要ってことよね。専
用の関数って _mbsbtype() のこと？』
「ううん、それだけじゃないよ。実は、 _mbsbtype() みたいに最初に _m 
が付いている関数は、たいがい２バイト文字に対応してます。たとえば」

// 上の方……
#include "stdafx.h"
#include "StringTest.h"
#include "StringTestDlg.h"

#include <mbstring.h>    // ＜これ追加。

// 略……。

void Reverse()
{
    char pch[128];
    strcpy( pch, "あAいうえお" );
    TRACE( "%s\n", _mbsrev( (unsigned char *)pch ) );
    // おえういAあ
}

「この _mbsrev() ってランタイムは文字列を逆にします」
『妙な関数ね……あ、ちゃんと２バイト文字が逆順になってる！』
「そう、もし普通に頭と後ろを入れ替えていったら」
『トレイルバイトの後にリードバイトが来ちゃうからおかしくなっちゃう、
はずだけどそうなってない』
「実際に中でリードバイトかトレイルバイトかのチェックはしてるから」
『なるほど』
「ただ、_mbsbtype() もそうだったけど、これは VC でしか使えないから」
『他だと使えないってことねー。まぁ他があるのかよくわかんないけ
ど……』
「仕事でプログラミングしてるとそういうのは避けられないから」
『げ』
「次の」

・１バイト文字と２バイト文字で同じ文字を比較できない。

「だけど、これはさっき言った〈\〉も〈￥〉のこと」
『似てるけど、文字コード的には別物ってわけね』
「でも、その別物っていうのをユーザーに説明するのは大変だから」
『だったら、１バイト文字に制限するのも難しくない？』
「確かにそうなんだけどね……。あ、あともうひとつ、辞書順の問題があり
ます」
『辞書順？』
「アルファベット順とかに並べる時には、 A は B の前、とかっていう並び
方の順番があるでしょ。それが辞書順。そういう、どっちが前かっていうの
を調べる時には strcmp() ってランタイムを使います」

void Compare1to1()
{
    TRACE( "%d\n", strcmp( "A", "B" ) );
    // -1
}

『 -1 って出た』
「 strcmp() は、左の方が小さい、つまり辞書順と同じだとマイナスを返し
ます。逆、たとえば "B", "A" だとプラスを返します。同じだと 0 」
『つまりマイナスなら適切な並び順ってことね』
「ところが、２バイト文字だとこうはいきません」

void Compare2to1()
{
    TRACE( "%d\n", strcmp( "Ａ", "B" ) );
    // 1
}

『げ、１？　プラスじゃん！』
「こんなふうに、２バイト文字と比較すると文字コードの関係でうまくいき
ません」
『あ、じゃあこれの２バイト文字用のは？　最初に _m が付いてるの』
「それは _mbscmp() なんだけど、それでも同じ結果」
『う”……』
「この問題の困る所は、エクスプローラーはちゃんと比較できちゃうんだよ
ね」
『へ？』
「〈Ａ.txt〉ってファイルと〈B.txt〉ってファイルがあると」
『うわ、ちゃんと〈Ａ.txt〉が上に来てる……』
「エクスプローラーにできるのに、って言われるとちょっときついかもね」
『やり方はないの？』
「もちろんあるけど、ランタイムや API で簡単に、っていうのはないん
じゃないかな、たぶん」
『うー……』
「最後の」

・「固定長」処理ができない。

「だけど、これはお仕事関係じゃないと使わないかも」
『こていちょう、ってことは長さが固定ってことよね……どういうこ
と？』
「ほら、 Version 10.22 ( No.200 ) でちょっとやったでしょ」

AAA1524,300,Z
0123F,100,Z
LLF33,200,F

『げ、あれね』
「たとえばこの」

AAA1524,300,Z

「の最初の AAA みたいに〈最初にアルファベット３文字〉みたいに長さが
決まってる部分のこと」
『２行目違うじゃん』
「この例は、そういうイレギュラーなデータが入ってるってことだったか
ら」
『ってことは２行目は無視していいんだね。だとすると』

AAA1524,300,Z
LLF33,200,F

『って、頭３文字がアルファベットってなるわけだ』
「たとえばこの３文字が特定のものだけ抜き出すとか、それは関係なく後ろ
の数字でソートするとか」
『そういう時に２バイト文字が入ってると、普通に char ３個分で切れない
からうまくいかないってこと？』
「そういうこと」
『質問！』
「はい火美ちゃん」
『ってゆーか、アルファベットとか数字なら、２バイト文字を１バイト文字
に変換しちゃえばいいんじゃないの？』
「うん、それもひとつの手。ただ、必ずしもそれがいいとは限らないから」
『どういうこと？』
「まずひとつは、そういう関数がランタイムや API にないから、自分で作
らなきゃいけない」
『げ』
「まぁ作ることはないけど、ネットとかで探してきた後、ちゃんと使えるか
チェックが必要かな」
『それはそれで大変そうね』
「あと、わざと２バイト文字で書いてあった場合にそれを１バイト文字に変
換しちゃうとまずい、ってこともあるかな」
『そんなことあるの？』
「もちろん時と場合によるけど、少なくともファイルパスの場合に￥を \ 
に変換したらまずいでしょ」
『大変なことになりそう……』
「もちろん変換するのもひとつの手だし、１バイト文字しか受け付けないの
もあり。そのあたりは使い勝手とか作る手間とかと相談だね」

/*
    Preview Next Story!
*/
『よーするに、日本語が入ると難しいことが増えるってことね』
「そういうこと」
『でもさ、そういうのって説明書に書けばいいんじゃないの？』
「それは難しいんだよね」
『なんで？』
「ほとんどの人は、全角と半角の区別ってできないと思うよ」
『そ、そうなの？』
「というわけで次回」
＜ Version 11.08 文字列クラスふたたび ＞
『につづく！』
「そういう、ユーザー頼みな方法はたぶん失敗するから」
『経験者は語る？』
「うん……」


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

・ほとはー１話追加予定
　三人合体ホットハーブに１話追加予定。土曜日なんて中途半端なのは下記
の理由です。


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

・更新なし
　この日は沖縄旅行に行ってるので、ほとはーの更新は繰り上げて土曜にな
ります。
　たぶん日記の更新はありません。
　KAB-studio.h は予定通り発行されますが、日記ダイジェスト等は金曜ま
での分になります。御了承ください。


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

・このメールを返信しないでください。
・ご意見・ご希望・ご感想は[チョー普通な日記]よりお送りください。
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
*/
////////////////////////////////////////////////////////////////////

