うぇいくさん < こん??は でび です
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/