Mac/Linuxでは,開いているファイルをそのまま削除したり移動したりすることができますが,Windowsでは,まずファイルを閉じなければなりません。4D.File
オブジェクトに対する4D.FileHandle
をインスタンス化している場合,4D.FileHandle
の参照が代入されたローカル変数にNull
を代入する必要があります。Null
を代入してもファイルハンドルが,すぐには解放されず,メソッドを終了するまでファイルを動かせないようであれば,別のローカル変数が同じ4D.FileHandle
を参照していることが原因です。
$f:=$file.open()
...
$f2:=$f // 参照を別のローカル変数に代入
...
$f:=Null // この時点でファイルハンドルは解放されない。$f2にNullを代入するかメソッドを終了する必要がある
起動時に「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
を代入することによって未定義にできるのは,オブジェクト・コレクション・バリアント型の変数やプロパティだけです。