質問

各行のコマンドフィールドのベースで他の人を実行したい、

例えば

 If {CommandField=0} Update counter by 1 return counter

 else if {CommandField=1} return 'Reporting'

試してみましたが、エラーがあります

     stringVar layerType; 
shared numberVar layNo;

     if({Command.ISREPORT}=0) then
           layNo:=layNo+1;layerType:=layNo;layerType

     else if ({Command.ISREPORT}=1) then
      layerType:='Reporting'; layerType

結果は次のようです

ISREPORT   LayerNo
   0         1
   0         2 
   0         3
   0         4
   1       'Reporter' 
役に立ちましたか?

解決

私が理解しているかどうかはわかりませんが、これは正しいです:

stringVar layerType; 
shared numberVar layNo;

     if({Command.ISREPORT}=0) then
     (     layNo:=layNo+1;
           layerType:=ToText(layNo);
           layerType;
     )
     else 
     (  if ({Command.ISREPORT}=1) then
           layerType:='Reporting'; 
           layerType
     )

...これはこれを簡素化できます。

shared numberVar layNo;

     if({Command.ISREPORT}=0) then
     (     
           layNo:=layNo+1;
           ToText(layNo);
     )
     else 
     (if ({Command.ISREPORT}=1) then
           'Reporting';)

.. ISREPORTの値を確認することは0または1のみである可能性がありますが、これをさらに簡素化できます。

shared numberVar layNo;

     if({Command.ISREPORT}=0) then
     (     
           layNo:=layNo+1;
           ToText(layNo);
     )
     else
     (
       layNo:=0;
       'Reporting';
     )

アップデート - 最後の例を変更して、「レポート」でカウンターをリセットしました。

編集:totextを変更します(..これに ToText(layNo,0); (小数の場所をゼロに設定します)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top