0

次のように、結果コードの整数 (関数の結果) を評価する case ステートメントがあります。

  R:= DoSomething;
  case R of
    0: begin
      //Success
    end;
    1..99: begin
      //Specific result messages
    end;
    100..199: begin
      //Other specific result messages
    end;        
    -MAXINT..-1: begin
      //Failure
    end;
  end;

失敗した場合は、エラー コードを表す負の数値を返します。DoSomethingレスポンスコード(またはエラーコード、負の場合)として整数を返す関数です。エラーの場合は、別のエラー ハンドラに渡されます。成功した場合は、成功ハンドラー (続行など) に渡されます。正の値は、さまざまな特定のハンドラによって処理されます。

他に書き方がないか考えてみまし-MAXINT..-1た。「-1以下のすべて」のラインに沿った何か。私は試し<=-1ましたが、コンパイラはそれをあまり好きではありませんでした。

ケースステートメントでこれを行う方法はありますか?

4

2 に答える 2

5

未処理のすべての結果に対してブロックを使用し、elseそのブロック内で、失敗した実行と、明示的なハンドラーを持たない成功した実行を区別します (この最後の状況は、コード例で考えていないようです)。

  R:= DoSomething;
  case R of
     0: begin
       //Success
     end;
     1: begin
       // Another success
     end
     else begin
        if R >= 0 then 
           // Unhandled successful execution error
        else 
           //Failure
       end;
   end;
于 2013-09-12T01:13:40.403 に答える