16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"RE:ローマ字からカナへ変換"
この発言は #01361 風の鳩サブレー さんのローマ字からカナへ変換 に対するコメントです
この発言に対し以下のコメントが寄せられています
#01365 風の鳩サブレー さん RE^2:ローマ字からカナへ変換
#1361 風の鳩サブレー さん、こんにちは。
| for i := 1 to 100 do
| v[i] := '';
|// a-o:+0 y:+1 h:+2 s:+3
| v[1] := 'あ い う え お '; //aiueo
| v[5] := 'か き く け こ '; //k
<<中略>>
| v[86] := 'ピャピィピュピェピョ'; //py
| v[90] := 'ヴァヴィヴ ヴェヴォ'; //v
関数呼び出しのたびにこの代入演算を実行するのは効率悪いので、型付き定
数にして、
const
V : array[1..100] of string = ('あ い う え お ', //aiueo
'','','',
'か き く け こ ', //k
<<中略>>
'ピャピィピュピェピョ', //py
'','','',
'ヴァヴィヴ ヴェヴォ', //v
'','','','','','','','','','');
とした方がよいでしょう。途中ブランクがあるので注意しないとデータがずれ
てしまいますが(^^;)。
| s := 0;
| case x[i] of
| 'a' : s := -1;
| 'i' : s := -2;
<<中略>>
| 'v' : s := 90;
| '-' : s := 999;
| 'ー' : s := 999;
| end;
この部分も以下のように型付き定数への参照を利用すると簡潔にできます。た
だし、'-','ー'はコードが離れていて不効率なので表からは省いてあります。
文字型は順序型なので配列の添え字にできることにご注意下さい。
function foo(C : char) : integer;
const
CodeTbl : array['a'..'z'] of integer =
(-1,80,15,75,-4,55,65,30,-2,60, 5, 0,35,
{ a b c d e f g h i j k l m}
25,-5,85, 0,45,10,20,-3,90,50, 0,40,70);
{ n o p q r s t u v w x y z}
begin
case C of
'a'..'z' : Result := CodeTbl[C];
'-','ー' : Result := 999;
else Result := 0;
end;
end;
2001/07/21(Sat) 05:10pm GFD03044 ひの
- FDELPHI MES(16):玉石混淆みんなで作るSample蔵【見本蓄積】 01/07/22 -
Original document by ひの 氏 ID:(GFD03044)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|