起動時に「Profile error occurred」というエラーが表示される場合,CEF(Chrome Embedded Framework)のキャッシュファイルを一旦すべて削除してください。
CEFのキャッシュフォルダーは下記の場所に作成されています。
複数の4Dを同時に起動したことがあれば,CEF_cache CEF_cache_1 CEF_cache_2…と番号が付されているかもしれません。
クライアントから4D Serverに接続するとき,4D.HTTPRequestでHTTPリクエストを送信するとき,あるいはOpen datastoreでリモートデータストアに接続するとき,4Dはドメイン名を解決するためにDNSを使用します。
v20以前のバージョンでは,デバイスにIPv4とIPv6のネットワークインタフェースが存在する場合,DNSから返されたIPv6のサーバーが利用できないと通信エラーが返されました。障害が頻繁に発生するようであれば,オペレーティングシステムの設定でIPv6を無効化したほうが良いかもしれません。
20r5では,IPv4とIPv6の両方でDNSリクエストが送信されるよう,ネットワークレイヤーが改良されました。いずれかのアドレスが利用できれば,通信エラーにはならないので,安心してIPv6を有効化することができます。
4D.HTTPRequestクラスは,コマンドのHTTP Get HTTP Requestよりも高機能です。たとえば,serverAuthenticationおよびproxyAuthenticationというオプションプロパティがサポートされています。
これはサーバーのTLS証明書を検証するというもので,使用した場合,Node.jsでrejectUnauthorizedを使用した場合と同じようにサーバーから送信されるCA署名証明書を検証できないサーバーにはHTTPSで接続しないようになります。
コマンドのHTTP SET OPTIONにこのオプションはありません。
20r6以降,クラスのプロパティ型をpropertyキーワードで宣言した場合,オブジェクト・コレクション・バリアント以外のプロパティにNullを代入するコードは,シンタックスエラーが返されるようになりました。つまり,varキーワードで宣言した変数と同じような扱いになります。過去バージョンでは,Nullを代入してもエラーになりませんでした。
クラスをインスタンス化した直後には,プロパティが未定義となっています。未定義であってNullではないことに留意してください。プロパティを未定義に戻したいのであれば,未定義の変数を代入することができます。
$object.myAttribute:="hello"
var $undefined // 初期化されていないバリアント型の変数は未定義
$object.myAttribute:=$undefined
プロパティそのものを消去したいのであればOB REMOVEを使用してください。Nullを代入することによって未定義にできるのは,オブジェクト・コレクション・バリアント型の変数やプロパティだけです。
4Dは,Apple SiliconターゲットのコンパイルにApple clang(Xcode)を使用しています。OSのアップグレードに伴い,Xcodeもアップグレードした場合,初回のコンパイルで「デベロッパーツールが正しく設定されていない」というエラーが返されるかもしれません。
OKボタンをクリックすると,XCodeの標準的なインストール先である/Application/XCode.app にデベロッパーツールのパスが設定されますが,他にも問題がある場合,別のエラーが返されるかもしれません。
エラーメッセージをみると,XCodeのライセンスに合意する必要がある,ということがわかります。XCodeを起動するか,エラーメッセージで勧められているコマンドラインsudo xcodebuild -licenseを実行して,ライセンスに合意すると,Apple Siliconターゲットのコンパイルができるようになります。
20r7ではFileのパス検証が改良されています。過去バージョンでは
$testFile:=File("dummy.jpg"; fk platform path)
のようなコードはエラーを返しませんでしたが,20r7ではエラーが返されるようになりました。無効なファイルパスはTryでハンドリングすることができます。
var $file:=Try(File("invalid path"))
If ($file#Null)
End if
特別な理由がない限り,メニュー番号#1は削除しないでください。削除した場合,デザインモードのメニュー「アプリケーションをテスト」「アプリケーションをテスト(SDIモード)」や「アプリケーションをテスト(MDIモード)」が使用できなくなります。