Tips

UnicodeモードのC_STRINGの長さ

日付2008/07/31
ID49919 (英語原文参照)
バージョン11
プラットフォームMac & Win

日本語環境では4D v11 SQLのUnicodeモードは必須です。このUnicodeモードでは、C_STRINGはC_TEXTと等価であり、C_STRINGで定義した変数の大きさは無視されます。

例えば次のように、全く同じコードでも異なる結果になります。

4D 2004

C_STRING(1;$var) 
$varSize:=Length($var)   `$varSize = 0
$var:="1234567890"   `$var = 1
$varSize:=Length($var)   `$varSize = 1

4D 2004では、C_STRINGによって定義された変数は、定義された大きさを超えた長さの文字列になることはありません。

4D v11 SQL

C_STRING(1;$var) 
$varSize:=Length($var)   `$varSize = 0
$var:="1234567890"   `$var = 1
$varSize:=Length($var)   `$varSize = 10

4D v11 SQLでは、C_STRINGで定義された大きさに関係なく、変数の中に文字列がそのまま収まります。

こうした問題を回避する方法としてUnicodeモードを使わないという選択もありますが、その場合、日本語を取り扱うことができなくなってしまいます。日本語環境では、こうした動作の違いを対策された上で、Unicodeモードをご利用ください。