新石器Wiki

近年はシリコン(石)から進化した便利なもので溢れる時代。そんな気になった事や試した事など記す。

ユーザ用ツール

サイト用ツール


programing:cpp_builder:cpp_builder-unicode


差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
programing:cpp_builder:cpp_builder-unicode [2020/01/31 21:05] – [添え字番号は1から] yokoprograming:cpp_builder:cpp_builder-unicode [2026/07/28 13:16] (現在) – 外部編集 127.0.0.1
行 1: 行 1:
-C++Builder Unicode対応 +====== C++Builder Unicode対応 ======
-======================+
 [[devtool/ide/cpp_builder-rad_studio/start|C++Builder]]の RAD Studio 2009 バージョン以降で、完全に[[wpjp>Unicode|Unicode]]をサポートして内部の文字列の扱いが変更になっている。特に、それ以前のバージョン(私の場合は C++Builder 5)のソースを動かそうとした場合に、色々と留意する点があるので備忘録を残す。 [[devtool/ide/cpp_builder-rad_studio/start|C++Builder]]の RAD Studio 2009 バージョン以降で、完全に[[wpjp>Unicode|Unicode]]をサポートして内部の文字列の扱いが変更になっている。特に、それ以前のバージョン(私の場合は C++Builder 5)のソースを動かそうとした場合に、色々と留意する点があるので備忘録を残す。
  
-文字列の扱い変更対応 +===== 文字列の扱い変更対応 =====
------------------+
 `UnicodeString`型が追加され、従来の `String`型,`Char`型,`PChar`型の定義が以下のように変更されている。({{https://www.embarcadero.com/images/jp/dm/technical-papers/delphi_unicode_wp_jp.pdf|参考1.}}資料参照) `UnicodeString`型が追加され、従来の `String`型,`Char`型,`PChar`型の定義が以下のように変更されている。({{https://www.embarcadero.com/images/jp/dm/technical-papers/delphi_unicode_wp_jp.pdf|参考1.}}資料参照)
  
行 15: 行 13:
 ソースファイルは全て UTF-8 のBOM付きに変換して保存しておく。 ソースファイルは全て UTF-8 のBOM付きに変換して保存しておく。
  
-### 文字列及び文字の移行+### 文字列及び文字の移行
 従来の`AnsiString`や`char`型も引き続き使えるが、将来の事も考えて以下のようにソースを修正。 従来の`AnsiString`や`char`型も引き続き使えるが、将来の事も考えて以下のようにソースを修正。
  
行 52: 行 50:
  
  
-その他注意点 +===== その他注意点 =====
-----------+
  
 ### 添え字番号の開始は1 ### 添え字番号の開始は1
-String型の文字列は配列変数のようにアクセスできるが、添え字の開始番号は 0 でなくて 1〜 なので注意。+String型の文字列は文字配列のようにアクセスできるが、添え字の開始番号は 0 でなくて 1〜 なので注意。(0でアクセスすると例外トラップ)
  
 <code c> <code c>
-String text = "あいうえお";+String text = L"あいうえお";
 Char c = text[1];         /* 'あ'が取り出される */ Char c = text[1];         /* 'あ'が取り出される */
 </code> </code>
  
  
-所感 +===== 所感 =====
-----+
 最初は「かなり思い切った仕様変更だな」と戸惑ったが、ソース修正は必要だが上記要領で案外スムーズに動いた。 最初は「かなり思い切った仕様変更だな」と戸惑ったが、ソース修正は必要だが上記要領で案外スムーズに動いた。
  
-参考 +===== 参考 =====
-----+
  
-1. {{https://www.embarcadero.com/images/jp/dm/technical-papers/delphi_unicode_wp_jp.pdf|Delphiにおける一般的なUnicodeへの移行テクニック}} +  - {{https://www.embarcadero.com/images/jp/dm/technical-papers/delphi_unicode_wp_jp.pdf|Delphiにおける一般的なUnicodeへの移行テクニック}} 
-2. [[http://docwiki.embarcadero.com/RADStudio/Rio/ja/RAD_Studio_%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B_Unicode|RAD Studio における Unicode]] +  [[http://docwiki.embarcadero.com/RADStudio/Rio/ja/RAD_Studio_%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B_Unicode|RAD Studio における Unicode]] 
-3. [[https://www.embarcadero.com/images/jp/event/devcamp/session_docs/11/a6.pdf|Delphi 2009ではじめるUnicodeアプリケーション - 既存コード移行のポイント -]] +  [[https://www.embarcadero.com/images/jp/event/devcamp/session_docs/11/a6.pdf|Delphi 2009ではじめるUnicodeアプリケーション - 既存コード移行のポイント -]] 
-4. [[https://www.embarcadero.com/jp/migration-and-upgrade-resources-for-delphi-c-builder-and-rad-studio|旧バージョンからの移行]] +  [[https://www.embarcadero.com/jp/migration-and-upgrade-resources-for-delphi-c-builder-and-rad-studio|旧バージョンからの移行]] 
-5. [[https://www.gesource.jp/weblog/?p=543|C++Builder2009におけるStringの変更による既存コードの修正]] +  [[https://www.gesource.jp/weblog/?p=543|C++Builder2009におけるStringの変更による既存コードの修正]] 
-6. [[http://slapper.sblo.jp/article/62581507.html|C++Builder 文字列変換]] +  [[http://slapper.sblo.jp/article/62581507.html|C++Builder 文字列変換]] 
-7. [[https://stackoverflow.com/questions/26073814/cannot-convert-const-char-to-wchar-in-argument-passing|Cannot convert 'const char*' to 'WCHAR*' in argument passing]] +  [[https://stackoverflow.com/questions/26073814/cannot-convert-const-char-to-wchar-in-argument-passing|Cannot convert 'const char*' to 'WCHAR*' in argument passing]] 
-8. [[http://docwiki.embarcadero.com/Libraries/Rio/ja/System.UnicodeString_Methods|System.UnicodeString のメソッド]] +  [[http://docwiki.embarcadero.com/Libraries/Rio/ja/System.UnicodeString_Methods|System.UnicodeString のメソッド]] 
-9. [[https://www.gesource.jp/programming/bcb/37.html|UTF-8を使う]] +  [[https://www.gesource.jp/programming/bcb/37.html|UTF-8を使う]] 
-10. [[https://rosettacode.org/wiki/Read_a_file_character_by_character/UTF8|Read a file character by character/UTF8]]+  [[https://rosettacode.org/wiki/Read_a_file_character_by_character/UTF8|Read a file character by character/UTF8]]
  
programing/cpp_builder/cpp_builder-unicode.1580472338.txt.gz · 最終更新: by yoko