Difference between revisions of "Case"

From Free Pascal wiki
Jump to navigationJump to search
(Redirecting to CASE)
Line 1: Line 1:
#REDIRECT [[CASE]]
+
Case opens a case statement. The case statement compares the value of ordinal expression to each selector, which can be a [[Const|constant]], a subrange, or a list of them separated by [[Comma|commas]]. Selector field separated to action field by [[Colon]].
 +
 
 +
The case statement include [[Reserved word|reserved words]] [[Of]] and [[End]] . Sometimes [[Else]]. too.
 +
 
 +
 
 +
<delphi>
 +
 
 +
case place of
 +
  1: ShowMessage('Cold medal');
 +
  2: ShowMessage('Silver medal');
 +
  3: ShowMessage('Bronze medal');
 +
  else ShowMessage('Next time: Good luck');
 +
end;
 +
 
 +
</delphi>
 +
 
 +
== Variant Record ==
 +
 
 +
Case-word is used Variant [[Record]], too. Variant Record also called a tagged union.
 +
 
 +
<delphi>
 +
 
 +
  type
 +
     
 +
  ScaleKelvin = 223 .. 323;
 +
  ScaleCelsius = -50 .. 50;
 +
   
 +
  TemperatureScale  =  ( celcius, kelvin ) ;
 +
  Temperature  =  record
 +
    case  scale  :  TemperatureScale  of
 +
    celcius : (celcius_value : ScaleCelsius);
 +
    kelvin : (kelvin_value : ScaleKelvin);
 +
  end;
 +
 
 +
</delphi>
 +
 
 +
== Read more ==
 +
 
 +
* [[doc:/ref/refsu40.html#x110-11700010.2.2| The Case statement]]
 +
* [[doc:/ref/refsu15.html#x38-450003.3.2|  Record types]]

Revision as of 10:30, 17 August 2008

Case opens a case statement. The case statement compares the value of ordinal expression to each selector, which can be a constant, a subrange, or a list of them separated by commas. Selector field separated to action field by Colon.

The case statement include reserved words Of and End . Sometimes Else. too.


<delphi>

case place of
  1: ShowMessage('Cold medal');
  2: ShowMessage('Silver medal');
  3: ShowMessage('Bronze medal'); 
  else ShowMessage('Next time: Good luck'); 
end;

</delphi>

Variant Record

Case-word is used Variant Record, too. Variant Record also called a tagged union.

<delphi>

 type
     
  ScaleKelvin = 223 .. 323;
  ScaleCelsius = -50 .. 50;
   
  TemperatureScale   =  ( celcius, kelvin ) ;
  Temperature   =   record
   case  scale   :   TemperatureScale   of
    celcius : (celcius_value : ScaleCelsius);
    kelvin : (kelvin_value : ScaleKelvin);
  end;

</delphi>

Read more