programing:cpp_builder:cpp_builder-lcmapstring
差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
| programing:cpp_builder:cpp_builder-lcmapstring [2020/02/04 08:07] – [C++Builder 全角→半角 変換] yoko | programing:cpp_builder:cpp_builder-lcmapstring [2020/02/04 08:18] (現在) – [コーディング例] yoko | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| C++Builder 全角→半角 変換 | C++Builder 全角→半角 変換 | ||
| ========================= | ========================= | ||
| - | Unicodeの全角文字を半角文字に変換するようにしたので備忘録を残す。 | + | Unicodeの全角文字を半角文字に変換するようにしたので備忘録を残す。 |
| - | Windows APIの `LCMapString` 関数を使って変換する。 | + | |
| コーディング例 | コーディング例 | ||
| ------------- | ------------- | ||
| + | Windows APIの `LCMapString` 関数を使って変換する。 | ||
| + | |||
| + | <code c> | ||
| + | Char buff[130]; | ||
| + | PChar s: | ||
| + | | ||
| + | String text = L" | ||
| + | int len = text.Length(); | ||
| + | | ||
| + | // DWORD flags = LCMAP_FULLWIDTH; | ||
| + | DWORD flags = LCMAP_HALFWIDTH; | ||
| + | // DWORD flags = LCMAP_HIRAGANA; | ||
| + | // DWORD flags = LCMAP_KATAKANA; | ||
| + | |||
| + | const int size = len + 1; | ||
| + | if (size < 128) { // バッファに入る時だけ変換する | ||
| + | s = buff; | ||
| + | LCMapString(GetUserDefaultLCID(), | ||
| + | flags, | ||
| + | text.c_str(), | ||
| + | size, | ||
| + | (LPWSTR)s, | ||
| + | size); | ||
| + | s[len] = 0; | ||
| + | } | ||
| + | else { | ||
| + | s = text.c_str(); | ||
| + | } | ||
| + | |||
| + | ShowMessage(s); | ||
| + | </ | ||
| + | |||
programing/cpp_builder/cpp_builder-lcmapstring.1580803623.txt.gz · 最終更新: by yoko
