4D v15において(実際には4D v14 R3から)は、v11以前のバージョンで作成されたデータベースを変換する際に4Dによって自動的に追加されていた"id_added_by_converter"特殊フィールドの値を自分で割り当てることが出来るようになりました。以前のバージョンでは、この値は4Dによってのみ割り当て可能だったため、変換されたサブテーブルで新しいレコードを追加するためにはデベロッパは_o_CREATE SUBRECORD などの廃止予定のコマンドを使用しなければなりませんでした。
この新しいプロパティを使用することにより、サブテーブルを使用している古いデータベースを、より洗練された方法で変換することができます。特殊な"subtable relation"リンクを保ったまま、あたかも標準のリンクであったかの様に、リレートしたレコードを追加、あるいは編集することができます。全てのメソッドがアップデートされたあと、コードを何も変えることなく特殊なリレーションを通常のものと取り換えることができます。
例えば、以下のように記述することができます:
CREATE RECORD([Employees])
[Employees]Last Name:="Jones"
CREATE RECORD([Employees_Children])
[Employees_Children]First Name:="Natasha"
[Employees_Children]Birthday:=!12/24/2013!
[Employees_Children]id_added_by_converter:=4
SAVE RECORD([Employees_Children])
SAVE RECORD([Employees]
このコードは特殊なリレーション・通常のリレーションの両方において動作します。
4D では、重複不可属性を持つフィールドは必ずインデックスが付いていなければなりません。4D v15以降、ストラクチャーエディター内にてインデックスを持っていない重複不可属性を定義することはできなくなりました。以前のリリースでは、メンテナンス目的のために、そのような設定の維持は可能でした。
4D v14 R3 以降、マシン上でレンダリングが出来ないフォーマットで保存されたピクチャーに対しては新しいアイコンが表示されるようになりました。存在しないフォーマットの拡張子がアイコンの下部に表示されています:

このアイコンは同様の画像が使用されているところであればどこでも表示されます。
これはこのピクチャーがローカルでは表示または処理できないことを意味しています。ただし他のマシンでの表示のために保存することは可能です。これは例えば、WindowsプラットフォームでのPDFピクチャーや、OS X用64-bit版の4D Server でのPICTベースピクチャーなどがそれにあたります。
4D v15で作成されたデータベースでは、メソッドは自動的にUnicodeで保存されます。変換されたデータベースにおいてUnicodeで保存するためには、データベース設定の”互換性”ダイアログのメソッドをUnicodeで保存オプションを選択する必要があります。
4D v15では、4Dのメソッドエディターは4Dのバージョンやローカルシステム設定に関わらず、デフォルトで国際的な"English-US"言語を使用します:
- 全てのバージョンにおいて、実数における小数点はピリオド(".")を使用する必要があります(カンマ(",")は使用できません)。
- 日付定数は、ISOフォーマット(!YYYY-MM-DD!)に準拠する必要があります。
- コマンド名と定数名は英語でなければなりません(他の言語ではすでにこういった仕様だったため、この変更が関係するのはフランス語版の4Dだけです)。
以前のバージョンから変換されたアプリケーションにおいては、EXECUTE FORMULA などの式を使用する際には注意が必要です。
この設定は、4D環境設定ダイアログボックスのメソッド/オプションページの地域特有のシステム設定を使うオプションを使用して無効化することもできます:

配付: 地域特有のシステム設定を使うオプションはマシンローカルの設定であるため、組み込みアプリケーションには含まれていません。
組み込みアプリケーションを配付する際には、リージョン設定を使用するためには二つのソリューションがあります:
- ソリューション1: 最終的な組み込みアプリをビルドする前に、4D Volume DesktopアプリケーションのResourcesフォルダの第一階層にあるen.lprojディレクトリを削除します。
- ソリューション2: それぞれのローカルのマシン上の4D v15の設定ファイルの中身を編集し、 "use_localized_language" キーを "true" に設定します。
これのサンプルコードは付録に記載があります。これを実行した後、この変更が有効になるためには4Dアプリケーションを再起動する必要があるという点を忘れないで下さい。
より詳細な情報については、アップグレードマニュアルのメソッドエディターでのEnglish-US設定 の章を参照して下さい。
4D v14 以降、Windows PCにおいて、テンキーの”小数点”キーを使用したとき、数値型フィールドとテキスト型フィールドとでこのキーを使用したときの結果が異なります:
- 4D v13 以前: フィールドが数値型かテキスト型かに関わらず、このキーを押すと、システムレベルで定義された小数点を挿入しました(この定義は4Dを起動する前になされている必要があります).
- 4D v14 と 4D v15:実数型のフィールドにおいて、このキーを押すと、システムレベルで定義された小数点を挿入します(以前と変化なし)。他の型のフィールドにおいては、このキーを押すと、このキーに割り当てられた文字を挿入します。通常はピリオド(.)またはカンマ(,)です。
この差異は、システムの小数点がキー上のものと異なる場合においてのみ認知可能でした。これは、例えばフランス系のシステムなど、システムの小数点(カンマ)がテンキーに割り当てられた小数点(ピリオド)ではない場合などが当てはまります。
注: 変換されたデータベースでの数値のフォーマットについての詳細な情報に関しては、互換性ページ の章の"数値フォーマットにおいてピリオドとカンマをプレースホルダーとして使用する"を参照して下さい。
4D での実数の小数部分を表すのに使用される有効桁数は、以下の様に削減されました:
- 以前のバージョンでは、この桁数は15桁でした。
- 4D v15以降のバージョンでは13桁になりました。
この変更が関係するのは実数をテキストに変換する際に限られ、内部での表現(保存)、または実数同士の計算には関係しません。つまり、実数の正確性に影響はないという事です。この新しい原理は、テキストで表示した際に正確性の保証できない最後の2桁を含めない、というものです。この目的は、実数の演算が誤ったテキストとして結果が返ってくる状況を限定することです。例えば、この原理により、以下の様な場合に有効な結果を得ることができます:
演算 | v14 R3以前の4Dでの結果 | v14 R3 以降の4Dでの結果 |
String(3216.36 - 3214.89) | "1.47000000000025" | "1.47" |
String(0.321636-0.321489) | "0.000146999999999953" | "0.000147" |
実数はその性質から正確性に限界があるために、もしあなたの4Dアプリケーションが実数の最初の15桁またはそれ以上を使用する場合(シリアル番号や天文学的数字等)、データフォーマットをテキストまたは倍長整数に変換する必要がでてくる可能性があります。
4Dでは、この比較のデフォルトの正確性は SET REAL COMPARISON LEVEL コマンドを使うことによって変更することができます。
メソッドをUnicodeに変更した影響により、4Dコードでのポインター表現を変更する必要がありました。ポインターは最適化され、二次元配列要素などの特別な機能をサポートするようになりました。以前にコンパイルされたコンポーネントやプラグインとの互換性を保つことは重要であるため、4Dによって等価的に管理される新しいポインターデータ型がランゲージに追加されました。
これにより、二つのコマンドが影響されました:
- RESOLVE POINTER はポインターから変数、あるいは一次元配列への際の第四引数には0ではなく-1を返すようになりました。
- Get pointer は振る舞いが変更になりました:
- ポインターから、式を使用しているものも含め、二次元配列へも可能になりました。
- 不正な変数名はエラー77("不正な変数名です")を返すようになりました。以前のバージョンでは、これらは使用可能でした。
- 余分な空白はエラーとはならなくなりました。