4D」カテゴリーアーカイブ

プラグインフォルダ「Plugins」と「MAC4DX」

4Dのプラグインはv12から「Plugins」フォルダに入れておきます。

v12時代に作成したプロジェクトに次のプラグインを使っていました。

1)4D InternetCommands.bundle

2)Time and Number.bundle

これはW3C日付文字列から日付や時間を切り出すプラグインです、宮古さんからいただきました。これらを「MAC4DX」フォルダに入れて使っていました。これをそのままv13に変換したら動かなかった、というお話です。

はじめ「4D InternetCommands.bundle」のほうは認識されているように見えましたが、これはアプリケーションフォルダにこのプラグインがあったからでした。

「Time and Number.bundle」は標準の4Dには附属していませんので、アプリケーションフォルダにありません。このためこちらのプラグインだけ認識されていない、という状況になった次第です。

v11までのプロジェクトとの互換性のため、v12では「MAC4DX」というフォルダにプラグインを入れてあっても認識します。これがv13では通用しなくなったことがそもそもの原因でした。

プラグインは.4dbファイルの並びに「Plugins」フォルダを作って、その中に保存しましょう。ここにない場合でもApplications→4Dフォルダ→Pluginsフォルダにプラグインがあれば認識されます。

まとめますと、プラグインを置く場所(v13以降)は次の2カ所です。

1)プロジェクトフォルダ→「Plugins」フォルダ

2)アプリケーションフォルダ→4Dフォルダ→「Plugins」フォルダ

4D v11の文字コード

4D v11には、文字コードの扱いを制御する環境設定がある。v13とは異なり、データベース設定も環境設定メニューにあります。

環境設定の「アプリケーション」の「互換性」メニューに「Unicodeモード」というチェックボックスがあります。v11で新しくプロジェクトを作成した場合、Unicodeモードはチェックされていますが、たとえばv2004のプロジェクトをv11にコンバートした場合はUnicodeモードがチェックされていません。

このおかげでどういうことが起こるかというと...

非Unicodeモードでは、Positionコマンドで取得した文字列中のポジションは文字数を示していますが、Substringコマンドでその文字数を切り出すと、すでにUnicodeですので、期待していた長さとバイト数が異なってしまう、現象が起こります。

v11で作成した、Jiro_str_Extractというかなり実績のあるプログラムを、この元v2004の今はv11のプロジェクトにコピーして使ったときに起こりました。Jiro_str_Extractはさんざんテストされていたのに、なぜか変な結果を返す、ポジションを示す数値は合っているのに切り出される文字列が、文字の途中で切れてしまう、という現象が起きます。

【環境設定】→【アプリケーション】→【互換性】で「Unicodeモード」がチェックされていませんでした。これをチェックしたら問題は解決しました。ちなみにv13にコンバートしても問題は解決します。これで気づきました。

サポートにも問い合わせて裏は取りました。古いプロジェクトを扱うときは注意しましょう。