Difference between revisions of "Case/fi"

From Lazarus wiki
Jump to navigationJump to search
(Use pascal highlighter)
 
(3 intermediate revisions by 2 users not shown)
Line 6: Line 6:
  
  
<delphi>
+
<syntaxhighlight lang=pascal>
  
 
  case place of
 
  case place of
Line 15: Line 15:
 
  end;
 
  end;
  
</delphi>
+
</syntaxhighlight>
  
 
=== WhatIsChar ===
 
=== WhatIsChar ===
  
<delphi>
+
<syntaxhighlight lang=pascal>
  
 
  function WhatIsChar( c:char ):string;
 
  function WhatIsChar( c:char ):string;
Line 35: Line 35:
 
  end;
 
  end;
  
</delphi>
+
</syntaxhighlight>
 +
 
 +
== Case of merkkijonoissa ==
 +
 
 +
Case of toimii myös merkkijonoissa. Pascal -kieli mahdollistaa "Case of" käytön string:llä.
 +
 
 +
<syntaxhighlight lang=pascal>
 +
const
 +
  ISO_3166_1_ALPHA_3_ANDORRA  = 'AND';
 +
  ISO_3166_1_ALPHA_3_AUSTRALIA = 'AUS';
 +
  ISO_3166_1_ALPHA_3_AUSTRIA = 'AUT';
 +
  ISO_3166_1_ALPHA_3_BELGIUM = 'BEL';
 +
  ISO_3166_1_ALPHA_3_BRAZIL = 'BRA';
 +
  ISO_3166_1_ALPHA_3_CANADA = 'CAN';
 +
  ISO_3166_1_ALPHA_3_CHINA = 'CHN';
 +
  ISO_3166_1_ALPHA_3_CZECH_REPUBLIC = 'CZE';
 +
  ISO_3166_1_ALPHA_3_CYPRUS = 'CYP';
 +
  ISO_3166_1_ALPHA_3_GERMANY = 'DEU';
 +
  ISO_3166_1_ALPHA_3_DENMARK = 'DNK';
 +
  ISO_3166_1_ALPHA_3_SPAIN = 'ESP';
 +
  ISO_3166_1_ALPHA_3_ESTONIA = 'EST';
 +
  ISO_3166_1_ALPHA_3_FINLAND = 'FIN';
 +
  ISO_3166_1_ALPHA_3_FRANCE = 'FRA';
 +
  ISO_3166_1_ALPHA_3_GREECE = 'GRC';
 +
  ISO_3166_1_ALPHA_3_INDIA = 'IND';
 +
  ISO_3166_1_ALPHA_3_IRELAND = 'IRL';
 +
  ISO_3166_1_ALPHA_3_ITALY = 'ITA';
 +
  ISO_3166_1_ALPHA_3_JAPAN = 'JPN';
 +
  ISO_3166_1_ALPHA_3_LITHUANIA = 'LTU';
 +
  ISO_3166_1_ALPHA_3_LATVIA = 'LVA';
 +
  ISO_3166_1_ALPHA_3_LUXEMBOURG = 'LUX';
 +
  ISO_3166_1_ALPHA_3_MALTA = 'MLT';
 +
  ISO_3166_1_ALPHA_3_MEXICO = 'MEX';
 +
  ISO_3166_1_ALPHA_3_MONACO = 'MCO';
 +
  ISO_3166_1_ALPHA_3_MONTENEGRO = 'MNE';
 +
  ISO_3166_1_ALPHA_3_NAURU = 'NRU';
 +
  ISO_3166_1_ALPHA_3_NETHERLANDS = 'NLD';
 +
  ISO_3166_1_ALPHA_3_NORWAY = 'NOR';
 +
  ISO_3166_1_ALPHA_3_POLAND = 'POL';
 +
  ISO_3166_1_ALPHA_3_PORTUGAL = 'PRT';
 +
  ISO_3166_1_ALPHA_3_REPUBLIC_OF_KOREA = 'KOR';
 +
  ISO_3166_1_ALPHA_3_RUSSIAN_FEDERATION = 'RUS';
 +
  ISO_3166_1_ALPHA_3_SAN_MARINO = 'SMR';
 +
  ISO_3166_1_ALPHA_3_SLOVAKIA = 'SVK';
 +
  ISO_3166_1_ALPHA_3_SLOVENIA = 'SVN';
 +
  ISO_3166_1_ALPHA_3_SWEDEN = 'SWE' ;
 +
  ISO_3166_1_ALPHA_3_SWITZERLAND = 'CHE';
 +
  ISO_3166_1_ALPHA_3_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND = 'GBR';
 +
  ISO_3166_1_ALPHA_3_UNITED_STATES_OF_AMERICA = 'USA';
 +
 
 +
 
 +
  ISO_4217_EURO = 'EUR';
 +
  ISO_4217_AUSTRALIAN_DOLLAR = 'AUD';
 +
  ISO_4217_BRAZILIAN_REAL = 'BRL';
 +
  ISO_4217_CANADIAN_DOLLAR = 'CAD';
 +
  ISO_4217_CHINESE_YUAN = 'CNY';
 +
  ISO_4217_CZECH_KORUNA = 'CZK' ;
 +
  ISO_4217_DANISH_KRONE = 'DKK' ;
 +
  ISO_4217_INDIAN_RUPEE = 'INR';
 +
  ISO_4217_POUND_STERLING = 'GBP' ;
 +
  ISO_4217_JAPANESE_YEN  = 'JPY';
 +
  ISO_4217_MEXICAN_PESO = 'MXN';
 +
  ISO_4217_NORWEGIAN_KRONE = 'NOK' ;
 +
  ISO_4217_POLISH_ZLOTY = 'PLN' ;
 +
  ISO_4217_RUSSIAN_RUBLE = 'RUB' ;
 +
  ISO_4217_SOUTH_KOREAN_WON = 'KRW';
 +
  ISO_4217_SWEDISH_KRONA = 'SEK' ;
 +
  ISO_4217_SWISS_FRANC = 'CHF' ;
 +
  ISO_4217_UNITED_STATES_DOLLAR = 'USD' ;
 +
 
 +
function ISO_4217_currency_name ( ISO_3166_1_alpha_3_code: string): string;
 +
begin
 +
  Case ISO_3166_1_alpha_3_code  of
 +
    // Euroalue
 +
    ISO_3166_1_ALPHA_3_ANDORRA, ISO_3166_1_ALPHA_3_AUSTRIA,
 +
    ISO_3166_1_ALPHA_3_BELGIUM,ISO_3166_1_ALPHA_3_CYPRUS,
 +
    ISO_3166_1_ALPHA_3_GERMANY, ISO_3166_1_ALPHA_3_SPAIN,
 +
    ISO_3166_1_ALPHA_3_ESTONIA, ISO_3166_1_ALPHA_3_FINLAND,
 +
    ISO_3166_1_ALPHA_3_FRANCE, ISO_3166_1_ALPHA_3_GREECE,
 +
    ISO_3166_1_ALPHA_3_IRELAND, ISO_3166_1_ALPHA_3_ITALY,
 +
    ISO_3166_1_ALPHA_3_LITHUANIA, ISO_3166_1_ALPHA_3_LATVIA,
 +
    ISO_3166_1_ALPHA_3_LUXEMBOURG, ISO_3166_1_ALPHA_3_MONACO,
 +
    ISO_3166_1_ALPHA_3_MALTA, ISO_3166_1_ALPHA_3_MONTENEGRO,
 +
    ISO_3166_1_ALPHA_3_NETHERLANDS, ISO_3166_1_ALPHA_3_PORTUGAL,
 +
    ISO_3166_1_ALPHA_3_SAN_MARINO, ISO_3166_1_ALPHA_3_SLOVAKIA,
 +
    ISO_3166_1_ALPHA_3_SLOVENIA : result := ISO_4217_EURO ;
 +
 
 +
    ISO_3166_1_ALPHA_3_AUSTRALIA, ISO_3166_1_ALPHA_3_NAURU :
 +
          result := ISO_4217_AUSTRALIAN_DOLLAR;
 +
    ISO_3166_1_ALPHA_3_BRAZIL : result := ISO_4217_BRAZILIAN_REAL;
 +
    ISO_3166_1_ALPHA_3_CANADA : result := ISO_4217_CANADIAN_DOLLAR;
 +
    ISO_3166_1_ALPHA_3_CHINA : result := ISO_4217_CHINESE_YUAN;
 +
    ISO_3166_1_ALPHA_3_CZECH_REPUBLIC : result := ISO_4217_CZECH_KORUNA ;
 +
    ISO_3166_1_ALPHA_3_DENMARK : result := ISO_4217_DANISH_KRONE ;
 +
    ISO_3166_1_ALPHA_3_INDIA : result := ISO_4217_INDIAN_RUPEE;
 +
    ISO_3166_1_ALPHA_3_JAPAN : result := ISO_4217_JAPANESE_YEN;
 +
    ISO_3166_1_ALPHA_3_MEXICO : result := ISO_4217_MEXICAN_PESO;
 +
    ISO_3166_1_ALPHA_3_NORWAY : result := ISO_4217_NORWEGIAN_KRONE ;
 +
    ISO_3166_1_ALPHA_3_POLAND : result := ISO_4217_POLISH_ZLOTY ;
 +
    ISO_3166_1_ALPHA_3_REPUBLIC_OF_KOREA : result := ISO_4217_SOUTH_KOREAN_WON ;
 +
    ISO_3166_1_ALPHA_3_RUSSIAN_FEDERATION : result := ISO_4217_RUSSIAN_RUBLE ;
 +
    ISO_3166_1_ALPHA_3_SWEDEN : result := ISO_4217_SWEDISH_KRONA ;
 +
    ISO_3166_1_ALPHA_3_SWITZERLAND : result := ISO_4217_SWISS_FRANC ;
 +
    ISO_3166_1_ALPHA_3_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND :
 +
          result := ISO_4217_POUND_STERLING ;
 +
    ISO_3166_1_ALPHA_3_UNITED_STATES_OF_AMERICA :
 +
          result := ISO_4217_UNITED_STATES_DOLLAR ;
 +
  end;
 +
end;
 +
</syntaxhighlight>
  
 
== Vaihteleva tietue ==
 
== Vaihteleva tietue ==
Line 41: Line 150:
 
Case-sanaa käytetään myös vaihtelevassa [[Record|tietueessa]].
 
Case-sanaa käytetään myös vaihtelevassa [[Record|tietueessa]].
  
<delphi>
+
<syntaxhighlight lang=pascal>
  
 
   type
 
   type
Line 55: Line 164:
 
   end;
 
   end;
  
</delphi>
+
</syntaxhighlight>
  
 
== Lisätietoja ==
 
== Lisätietoja ==
  
* [http://www.freepascal.org/docs-html/ref/refsu40.html#x110-11700010.2.2 The Case statement]
+
* [http://www.freepascal.org/docs-html/ref/refsu52.html#x149-15900013.2.2 The Case statement]
* [http://www.freepascal.org/docs-html/ref/refsu15.html#x38-450003.3.2  Record types]
+
* [http://www.freepascal.org/docs-html/ref/refsu19.html#x43-500003.3.2  Record types]
 
* [http://lazarus-ccr.sourceforge.net/pascal/pas3cb.html Tao Yue: Learn Pascal!] Case
 
* [http://lazarus-ccr.sourceforge.net/pascal/pas3cb.html Tao Yue: Learn Pascal!] Case
 
* [http://www.youtube.com/watch?v=pMr2xtUu3x0 Video: Free Pascal Tutorial 8 - Case Statements]
 
* [http://www.youtube.com/watch?v=pMr2xtUu3x0 Video: Free Pascal Tutorial 8 - Case Statements]
 
* [[Dialog_Examples#ShowMessage|ShowMessage]]
 
* [[Dialog_Examples#ShowMessage|ShowMessage]]
 
* [[Type]]
 
* [[Type]]

Latest revision as of 23:23, 24 January 2020

Deutsch (de) English (en) español (es) suomi (fi) français (fr) русский (ru)

Case aloittaa case-lauseen. Case-lauseessa verrataan muuttujan arvoa esitettyihin vakiona pysyviin arvoihin. Näitä vakiona pysyviä arvoja voi olla yksittäinen vakio, tietty vakioalue tai pilkulla erotettu joukko vakioita. Tietyn valinnan jälkeen suoretettavat lauseen on erotettu kaksoispisteellä.

Case-lause sisältää varatut sanat Of ja End sekä joskus myös Else.


 case place of
   1: ShowMessage('Kultamitali');
   2: ShowMessage('Hopeamitali');
   3: ShowMessage('Pronssimitali'); 
   else ShowMessage('Parempi onni ensi kerralla'); 
 end;

WhatIsChar

 function WhatIsChar( c:char ):string;
 var
   s : string;
 begin
   s := '';
   case c of
     '0' .. '9' : s := 'Numero (0-9)';
     'a' .. 'z' : s := 'Pieni kirjain (a-z)';
     'A' .. 'Z' : s := 'Iso kirjain (A-Z)';
     '+' , '-'  : s := 'Etumerkki (+ or -)';
   end;
   result := s;
 end;

Case of merkkijonoissa

Case of toimii myös merkkijonoissa. Pascal -kieli mahdollistaa "Case of" käytön string:llä.

const
  ISO_3166_1_ALPHA_3_ANDORRA  = 'AND';
  ISO_3166_1_ALPHA_3_AUSTRALIA = 'AUS';
  ISO_3166_1_ALPHA_3_AUSTRIA = 'AUT';
  ISO_3166_1_ALPHA_3_BELGIUM = 'BEL';
  ISO_3166_1_ALPHA_3_BRAZIL = 'BRA';
  ISO_3166_1_ALPHA_3_CANADA = 'CAN';
  ISO_3166_1_ALPHA_3_CHINA = 'CHN';
  ISO_3166_1_ALPHA_3_CZECH_REPUBLIC = 'CZE';
  ISO_3166_1_ALPHA_3_CYPRUS = 'CYP';
  ISO_3166_1_ALPHA_3_GERMANY = 'DEU';
  ISO_3166_1_ALPHA_3_DENMARK = 'DNK';
  ISO_3166_1_ALPHA_3_SPAIN = 'ESP';
  ISO_3166_1_ALPHA_3_ESTONIA = 'EST';
  ISO_3166_1_ALPHA_3_FINLAND = 'FIN';
  ISO_3166_1_ALPHA_3_FRANCE = 'FRA';
  ISO_3166_1_ALPHA_3_GREECE = 'GRC';
  ISO_3166_1_ALPHA_3_INDIA = 'IND';
  ISO_3166_1_ALPHA_3_IRELAND = 'IRL';
  ISO_3166_1_ALPHA_3_ITALY = 'ITA';
  ISO_3166_1_ALPHA_3_JAPAN = 'JPN';
  ISO_3166_1_ALPHA_3_LITHUANIA = 'LTU';
  ISO_3166_1_ALPHA_3_LATVIA = 'LVA';
  ISO_3166_1_ALPHA_3_LUXEMBOURG = 'LUX';
  ISO_3166_1_ALPHA_3_MALTA = 'MLT';
  ISO_3166_1_ALPHA_3_MEXICO = 'MEX';
  ISO_3166_1_ALPHA_3_MONACO = 'MCO';
  ISO_3166_1_ALPHA_3_MONTENEGRO = 'MNE';
  ISO_3166_1_ALPHA_3_NAURU = 'NRU';
  ISO_3166_1_ALPHA_3_NETHERLANDS = 'NLD';
  ISO_3166_1_ALPHA_3_NORWAY = 'NOR';
  ISO_3166_1_ALPHA_3_POLAND = 'POL';
  ISO_3166_1_ALPHA_3_PORTUGAL = 'PRT';
  ISO_3166_1_ALPHA_3_REPUBLIC_OF_KOREA = 'KOR';
  ISO_3166_1_ALPHA_3_RUSSIAN_FEDERATION = 'RUS';
  ISO_3166_1_ALPHA_3_SAN_MARINO = 'SMR';
  ISO_3166_1_ALPHA_3_SLOVAKIA = 'SVK';
  ISO_3166_1_ALPHA_3_SLOVENIA = 'SVN';
  ISO_3166_1_ALPHA_3_SWEDEN = 'SWE' ;
  ISO_3166_1_ALPHA_3_SWITZERLAND = 'CHE';
  ISO_3166_1_ALPHA_3_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND = 'GBR';
  ISO_3166_1_ALPHA_3_UNITED_STATES_OF_AMERICA = 'USA';


  ISO_4217_EURO = 'EUR';
  ISO_4217_AUSTRALIAN_DOLLAR = 'AUD';
  ISO_4217_BRAZILIAN_REAL = 'BRL';
  ISO_4217_CANADIAN_DOLLAR = 'CAD';
  ISO_4217_CHINESE_YUAN = 'CNY';
  ISO_4217_CZECH_KORUNA = 'CZK' ;
  ISO_4217_DANISH_KRONE = 'DKK' ;
  ISO_4217_INDIAN_RUPEE = 'INR';
  ISO_4217_POUND_STERLING = 'GBP' ;
  ISO_4217_JAPANESE_YEN  = 'JPY';
  ISO_4217_MEXICAN_PESO = 'MXN';
  ISO_4217_NORWEGIAN_KRONE = 'NOK' ;
  ISO_4217_POLISH_ZLOTY = 'PLN' ;
  ISO_4217_RUSSIAN_RUBLE = 'RUB' ;
  ISO_4217_SOUTH_KOREAN_WON = 'KRW';
  ISO_4217_SWEDISH_KRONA = 'SEK' ;
  ISO_4217_SWISS_FRANC = 'CHF' ;
  ISO_4217_UNITED_STATES_DOLLAR = 'USD' ;

function ISO_4217_currency_name ( ISO_3166_1_alpha_3_code: string): string;
begin
  Case ISO_3166_1_alpha_3_code  of
    // Euroalue
    ISO_3166_1_ALPHA_3_ANDORRA, ISO_3166_1_ALPHA_3_AUSTRIA,
    ISO_3166_1_ALPHA_3_BELGIUM,ISO_3166_1_ALPHA_3_CYPRUS,
    ISO_3166_1_ALPHA_3_GERMANY, ISO_3166_1_ALPHA_3_SPAIN,
    ISO_3166_1_ALPHA_3_ESTONIA, ISO_3166_1_ALPHA_3_FINLAND,
    ISO_3166_1_ALPHA_3_FRANCE, ISO_3166_1_ALPHA_3_GREECE,
    ISO_3166_1_ALPHA_3_IRELAND, ISO_3166_1_ALPHA_3_ITALY,
    ISO_3166_1_ALPHA_3_LITHUANIA, ISO_3166_1_ALPHA_3_LATVIA,
    ISO_3166_1_ALPHA_3_LUXEMBOURG, ISO_3166_1_ALPHA_3_MONACO,
    ISO_3166_1_ALPHA_3_MALTA, ISO_3166_1_ALPHA_3_MONTENEGRO,
    ISO_3166_1_ALPHA_3_NETHERLANDS, ISO_3166_1_ALPHA_3_PORTUGAL,
    ISO_3166_1_ALPHA_3_SAN_MARINO, ISO_3166_1_ALPHA_3_SLOVAKIA,
    ISO_3166_1_ALPHA_3_SLOVENIA : result := ISO_4217_EURO ;

    ISO_3166_1_ALPHA_3_AUSTRALIA, ISO_3166_1_ALPHA_3_NAURU :
          result := ISO_4217_AUSTRALIAN_DOLLAR;
    ISO_3166_1_ALPHA_3_BRAZIL : result := ISO_4217_BRAZILIAN_REAL;
    ISO_3166_1_ALPHA_3_CANADA : result := ISO_4217_CANADIAN_DOLLAR;
    ISO_3166_1_ALPHA_3_CHINA : result := ISO_4217_CHINESE_YUAN;
    ISO_3166_1_ALPHA_3_CZECH_REPUBLIC : result := ISO_4217_CZECH_KORUNA ;
    ISO_3166_1_ALPHA_3_DENMARK : result := ISO_4217_DANISH_KRONE ;
    ISO_3166_1_ALPHA_3_INDIA : result := ISO_4217_INDIAN_RUPEE;
    ISO_3166_1_ALPHA_3_JAPAN : result := ISO_4217_JAPANESE_YEN;
    ISO_3166_1_ALPHA_3_MEXICO : result := ISO_4217_MEXICAN_PESO;
    ISO_3166_1_ALPHA_3_NORWAY : result := ISO_4217_NORWEGIAN_KRONE ;
    ISO_3166_1_ALPHA_3_POLAND : result := ISO_4217_POLISH_ZLOTY ;
    ISO_3166_1_ALPHA_3_REPUBLIC_OF_KOREA : result := ISO_4217_SOUTH_KOREAN_WON ;
    ISO_3166_1_ALPHA_3_RUSSIAN_FEDERATION : result := ISO_4217_RUSSIAN_RUBLE ;
    ISO_3166_1_ALPHA_3_SWEDEN : result := ISO_4217_SWEDISH_KRONA ;
    ISO_3166_1_ALPHA_3_SWITZERLAND : result := ISO_4217_SWISS_FRANC ;
    ISO_3166_1_ALPHA_3_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND :
          result := ISO_4217_POUND_STERLING ;
    ISO_3166_1_ALPHA_3_UNITED_STATES_OF_AMERICA :
          result := ISO_4217_UNITED_STATES_DOLLAR ;
  end;
end;

Vaihteleva tietue

Case-sanaa käytetään myös vaihtelevassa tietueessa.

  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;

Lisätietoja