QtScriptスクリプトで値の検証に問題がありました。バリデータ関数は次のようになります。QVariantをネイティブのQtScriptValue(数値、文字列など)に変換する方法
function isValueInvalid(value) {
return typeof value=="undefined" || value == null || value == "" || value == "X";
}
文字列"X"
も私の設定では無効です。値は、このようないくつかのオブジェクトに追加されます。
someQtscriptValue.setProperty(name, myQtScriptEngine.newVariant(someQVariant));
今事は文字列として"undefined"
に変換値が常にtypeof
チェックを渡したということです。そこで、テストデバッグ出力を追加しました。
// This is qtscript code:
print("Validating row "+JSON.stringify(someQtscriptValue));
、結果は混乱している(短く、それはすべて同じに見えた):私は、スクリプトの中で全体someQtscriptValue
を印刷
Validating row {"SJZ_A":{},"SJZ_B":{},"SJZ_C":{},"SJZ_D":{},"SJZ_E":{}}
私はまた、それぞれの値についてのいくつかの情報を印刷することを決めた。
var propName = "name of one of the properties";
var isValid = !isValueInvalidCEPS(someQtscriptValue[propName]);
print("someQtscriptValue[\""+propName+"\"] = "+someQtscriptValue[propName]+" ("+(isValid?"valid":"invalid")+") type="+(typeof someQtscriptValue[propName]));
そして、これはさらに驚くべきことである:
someQtscriptValue["name1"] = ULSE (valid) type=object
someQtscriptValue["name2"] = 22 (valid) type=object
someQtscriptValue["name3"] = undefined (valid) type=object
したがって、私がQScriptValue
をQVariant
から作成すると、「未定義」を含むすべての値がオブジェクトとして型を持っているため、オブジェクトのように動作します。
QVariantからQScript値を作成する正しい方法は何ですか?