作者: davi
日時: 2008/12/25(20:23)
うぇいくさん  <  こん??は でび です

On Thu, 25 Dec 2008 14:29:18 +0900 (JST)
うぇいく <weyk@...> wrote:

> # 仕様書の代わりにソースを読むタイプ。

なんだか、かっちょええ。

>  マルチバイトの文字列を、ワイドキャラの文字列に変換しているのと
> 似たような処理を行っているので、内部コードをUnicode化すると、
> かなりすっきりすると思われます。

美容整形外科の研修医のような気分です。
「小顔にしろ」って言われても、顎の骨、どこまで削っていいのかな?みたいな…。

>  問題の、0x8000ですが、以下の目的で使用しているようです。

> これは、

> の3つに分けるとわかりやすいんでしょうが・・・それを、(おそらくDOS時代の
> メモリの容量の都合もあり)Bufに押し込んでいるわけです。

3種類の判断ですか…。
何に使っているのか、素人ではわからんわけですな。

>  おそらく高速化のためですので、0x8000に関連する処理をざっくりと消して
> しまっても、(ちゃんと取り除く分には)動作には影響なさそうです。Unicode用の
> 型に、1bitほどの余り、もしくは決め打ちできるbit(他のbitや値から1か0かを
> 判断できる)がある場合には同じように実装してしまうことも可能です。
> # あまり良い仕組みとはいえませんが・・・・

下手にいじらず、32ビット対応と言うことで0x80000000に桁数を上げて
おくだけにするのが素人には無難そうですね…。

で、MSDNによると、 MFCのATLでwchar_t 型なるものが定義されたらしいので、
そのライブラリへのリンク(って、#define  _UNICODE って書けばいいの?)
を付けて、コード中で

char → TCHAR
char* → LPTSTR

と一括置換。

あと、#define iskanji(x)、#define iskanji2(x)のコメントアウト。
更に0xffや0x80を決め打ちして判断しているif文のコメントアウト。

…そんな辺りで行けそうでしょうか?

現状のSJIS版コードを下記アドレスのblogに貼りました。

でび  http://davi.txt-nifty.com/1984/