C_variant:引数がコンパイルエラーになる

ランタイムでは動いているのですが、コンパイルエラーになります。
引数として受け取ってもらえないみたいです。

例えばこんな感じです。
<code 4D>
C_VARIANT($1)
if(Value type($1)=Is text)
$window_o:=New object(“form”;FORM Convert to dynamic($1))
end if
</code 4D>

どの行が正確にコンパイルエラーになりますか?
たぶん、このようなコードをテストしていますか?
<code 4D>
C_VARIANT($1)
C_TEXT($formName)
If (Value type($1)=Is text)
$formName:=$1
$window_o:=New object(“form”;FORM Convert to dynamic($formName))
End if
</code 4D>

通常、すべてのパラメーター($ 0、$ 1〜$ xy)をローカル変数($ localVariable)で処理することをお勧めします。
<code 4D>
C_BOOLEAN($result;$0)
C_TEXT($srcName;$1)
C_LONGINT($srcNum;$2)

$result:=True
$srcName:=“defaultName”
$srcNum:=0x0000

If (Count parameters>0)
$srcName:=$1
If (Count parameters>1)
$srcNum:=$2
End if
End if

// …any codes…

$0:=$result
</code 4D>

現状はローカル変数を挟む必要があるのですね。

希望としては、できる様になって欲しいです。 :pray:

v18で検証したところ,不具合は修正されたようです。

ただし,コンパイラーの仕様上,

Value type(${n}) は,コンパイルモードでType() と同じ値を返します(例題を参照)。

https://forums.4d.com/4DBB_Main/x_User/298210/files/34016631.zip

C_VARIANT($1)

/*

specification:

Calling the Type command on a C_VARIANT declared parameter won't return "Is Variant" 
but the actual type of the parameter (same as Value Type).

*/

//if $1 is string…

$vt:=Value type($1)
$t:=Type($1)

ALERT(String($vt)) //2
ALERT(String($t)) //12 (interpreted), 2 (compiled)

$v:=$1

$vt:=Value type($v)
$t:=Type($v)

ALERT(String($vt)) //2
ALERT(String($t)) //2