Programmers
Room Tips集
プログラム技術編 更新[1999.11.13]
Contents
1.アンインストール情報の指定の仕方 [1999.5.30]
2.UNICODEの基礎的なお話 [NT 1999.10.22]
| 1.アンインストール情報の指定の仕方 [1999.5.30] |
アンインストール情報はレジストリの以下の位置に記述されている。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\<Key>
<Key>は任意、アプリケーション名が入る。
その下に
DisplayName "<タイトル>"
UninstallString "<アンインストール実行プログラム名>"というキーと値を設定する。キーの意味は以下のとおり
<タイトル>
アプリケーションの追加と削除の、自動的に削除できるリスト
に表示する名称
<アンインストール実行ファイル名>
アンインストールを実行する実行ファイル名を、フルパス(パ
スがきっていない場合)で指定する。コマンドラインオプショ
ンがある場合もブランクで区切って、指定する。ちなみにプログラムを指定するわけだから、アンインストールに限らず、追加更新のプログラムを指定してMSのオフィスみたいに、「アプリケーションの追加と削除」の「追加と削除」ボタンが押された際に、内容を更新させることもできます。
| 2.UNICODE の基礎的なお話 [NT 1999.10.22] |
UNICODEとは、WindowsNTの内部Codeにも使用されている、各国語対応のCodeで、1つの文字を2バイトであらわします。
通常英語圏ならば、使用する文字がアルファベットと数字といくつかの記号のみだから、整数範囲(2の補数というべき?)のみの1バイト(0〜127)で済みます。それがASCIIコードですね。
日本にもし漢字がなく、さらにひらがなも無かったら、やはりアルファベットと、数字、記号、そしてカタカナがあれば十分なので1バイトで全て書き表すことが出来ます。それがJISコードだったりするわけですね。
さて、ここで漢字をあらわそうとしたら、どうなるでしょう。
unsignedの1バイト(0〜255)でも足りません。それは漢字の元祖中国や、ハングルを使う韓国、アラビア、タイ...と2バイト文字の必要な国はたくさんあるわけです。ここまでの話は別にUNICODEの話でもないのです。DOSの時代から、漢字は使
われていました。
UNICODEの反対語はMulti Byteです。DOS、Windows3.1,95,98は、Multi Byteです。では、マルチバイトとユニコードはどこが違うのでしょうか?
Multi Byteは、1バイトコードと、2バイトコードが混在するコード体系で、UNICODEは全て2バイトコードで構成されているのです。
Multi Byteで“高木123”をあらわすと “8d 82 96 D8 31 32 33”となります。
UNICODEの場合は“8d 82 96 D8 31 00 32 00 33 00”となります。
要するにUNICODEの、1バイトコードの部分は、00を追加して2バイトになっているのです。
ここで問題になるのは、UNICODEの文字列の終端コードはどうなるのか?ということです。
通常文字列は、NULLで終了となります。UNICODEの“123”という文字列の長さをマルチバイト環境下で、strlen()などで取得しようとすると、コードは
“31 00 32 00 33 00”となっているわけですから、長さは1となってしまいます。UNICODEでは文字列の終端コードも2バイトで、NULLが2バイトで終端となります。
ところでUNICODEはどのようにすると使うことができるのでしょうか?
答えはコンパイルオプションです。例えばVC++なら、コンパイルオプションの「プリプロセッサの定義」に“_UNICODE”と記述してやるとUNICODEになります。
(ただし、NTでしかコンパイルできないし、NTでしか動作しないし、VC++ならUNICODE用のライブラリをインストールしていないと出来ません)いずれにしても今後、Windows98の子孫もUNICODEに統一されていくとのことです。
さて、問題の関数ですが、「UNICODE用の関数」ってあるのでしょうか?
各関数の種類別に分けると以下のようになります。API(例:wsprintf)は、コンパイル設定によりUNICODEになります。
MFC(例:CString)もコンパイル設定によりUNICODEになります。
VCL(例:AnsiString)もコンパイル設定によりUNICODEになります。
RTL(ランタイムライブラリ):はMulti Byte用の関数とUNICODE用の関数があります。RTLは設定と関係なく使用できるので、UNICODE用に作られえたプログラムで、Multi Byteのデータを読み込み、変換するというような場合に便利です。
なお、UNICODEはRTLのHELPなどでは「ワイドバイト(Wide Byte)」と記述されている場合もあります。
[TOPへもどる] [Soft Page TOPへもどる] [ProgramerS Room Topへ] [このページのTop]