0

各行のコマンドフィールドに基づいてifelseを実行したいのですが、

例えば

 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' 
4

1 に答える 1

1

よくわかりませんが、これは正しいですか:

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);(小数点以下の桁数をゼロに設定します)

于 2010-12-23T11:27:37.947 に答える