@egtraイグトランスの頭の中(のかけら)ActiveBasicを中心にプログラミングの話をぼちぼちと。文字.コメントなしABも様々な文字型が氾濫するようになりました。主要なものをここにまとめておきます。今日は大雑把ですが、細かい話です。具体的な使用例などの話は翌日付以降になります。注意:今日の話は、全て文字型そのものや文字型へのポインタ、文字型の配列を扱うときの話です。ここで紹介する文字列は全てStringに変換できるので、基本的に文字列はみなString型の変数へ代入しましょう。ByteSByteへ移行。SByte常にマルチバイト文字。SByteとしたいが、コンパイラ組み込みのCharがあるので遠慮している。UNICODEの定義に合わせてマルチバイト文字とワイド文字とに切り替わる。TCHARはCharのTypeDef。StrCharString用。基本的に__STRING_IS_NOT_ALWAYS_UNICODEが定義されているとマルチバイトになる。UNICODEが定義されているとそれは無視され必ずワイド文字になる。WCHAR常にワイド文字。常にマルチバイト/ワイド文字にしたい場合はSByte/WCHARを使うことになります。基本的にはChar/TCHARとStrCharが頻繁に使われることになると思います。APIのTypeDefが存在します。*SByteより意味が明確になると言うことでPSTR/PCSTR系だけは使っておくのが個人的なお勧めです。LPCWSTR今のところABにConstな型と言う概念はないのでC付きの型はそうでない型と違いはありません。気になる人(自分含む)は概念的に使い分けておくと、もしも将来Constな型が存在するようになったときに幸せになれるかもしれません。次は状況別にどうなるか記します。__STRING_IS_NOT_UNICODEのどれか1つが必ず定義されます。9xで動かせなくなる。文字の取り扱いはワイド文字1つに絞られるので単純。APIを頻繁に呼び出す場合文字の取り扱いが若干面倒。__STRING_IS_NOT_UNICODE状態は完全にAB4までと同じ状態。文字の取り扱いもマルチバイト1つに絞られるので単純。Basicは__STRING_UNICODE_WINDOWS_ANSI状態に近いです。Declareで外部の関数を呼び出すときには自動的に文字コードの変換が行われるので、基本的には意識しなくてすむようになっているのです。次は文字列の変換についてです。&)でも自動的に変換されるので、冒頭に書いたとおり、基本的にはどんな文字列もとりあえずStringへ放り込むのが楽です。お互いに変換する関数としてGetStrが存在します。出力)という形式です。入力は次のいずれかです。lstrlenA/Wで文字列の長さが計られます。文字列の長さがわかっている場合には、上記より効率的です。出力はPCSTRとPCWSTRの2種類が多重定義されています。そのためChar/TCHAR文字列やStrChar文字列も対応できます。戻り値は出力先の文字列の長さです。(*WCHAR)があります。括弧内が出力先の型となります。全てそのままGetStrへ呼び出すだけの関数として定義されています。ToWCStrがあります。出力先が最後の引数から戻り値へ移動しています。その代わり出力文字列の長さは捨てられます。これら変換関数はメモリ確保にGC_malloc_atomicを使います。メモリの解放を考える必要はありません。変換する必要が無い組み合わせでは単純にポインタ値の代入で済ませます。コメントをキャンセルメールアドレスが公開されることはありません。WPThemes.Info。