2016-12-19 8 views
-2

有効な列挙型のデータ型をユーザーから取得します。私はこのようにしてみました。 FPC Compilerは、 '<>'の関係演算子を使用してバイナリデータ型のみを比較すると述べています。親切にも 'Cham_Cham'の状態を '_'の代わりにSpaceを使用することができます有効な列挙型のデータ型入力をループ経由で受け取ります

私はOOPには行かないでしょう。これが唯一の方法なら、私は行くでしょう。 (私の意見では、それはOOPの道なしで行うことができる。のtry-catchを使用しないように。)

program Enum 

type Food = (Pizza, Biryani, Halwa, Cham_Cham) 

var Choice: Food; 

begin 
    WriteLn('Pizza, Biryani, Halwa, Cham_cham'); 

    repeat 
    WriteLn('Which Food Do you want to eat?'); 
    Read(Choice); 
    Until Choice <> Food 

WriteLn('You can eat: ' + Choice); 

end. 

答えて

1
Until Choice <> Food 

Foodがタイプです。 Choiceは値です。タイプを値と比較することはできません。それがエラーメッセージがあなたに伝えているものです。入力された値と何かを比較する場合は、別の値のFoodにする必要があります。

その他の質問については、言語の名前にはスペースを使用できません。


この入力の取得方法を再検討する必要があります。あなたのコードでは、ユーザが順序値を入力することを期待しています。私はあなたが数字を入力する必要があることを疑う。さらに、無効な序数を型の範囲外に入力することができます。

より良い方法は、テキストを入力してコードにテキストを食品名と比較させ、序数を適切に割り当てるようにすることです。しかし、私は本当にあなたのプログラムが達成しようとしていることと、この質問の送っていることをはるかに超えて言いたいことを理解していません。

+0

入力は、フード名の範囲、すなわちPizza..Cham_Chamから入力する必要があります。ユーザーがこれを外に入力すると、エラーがポップされ、ユーザーに再度入力を促す必要があります。 – user3051677

+0

ユーザは、0〜3の範囲の整数を入力すると考えられます。あれは正しいですか? –

+0

ユーザーは数字以外の文字列を入力します。 >ピザ、ビリャニ、ハルワ、チャムカム >どの料理を食べますか? > Biryani 私の回答を見てください。しかし、1つの問題は、ユーザーが "Pizza Biryani"のような複数の値をスペースで区切って入力すると間違ってしまうかのように残ります... – user3051677

関連する問題