отобразить все переменные для определенного типа - PullRequest
0 голосов
/ 25 апреля 2018

Я хочу создать меню в WriteFoodMenu, которое позволяет пользователю отображать все доступные параметры (что в настоящее время WriteLn делает в WriteFoodMenu или отображать только те опции, в которых находится выбранное место.

Так, например, если пользователь выбирает «Пекарня»,

WriteLn(mfood.foodtype, ' - ', mfood.chef, ' - ', mfood.venue);

будет отображать только варианты, в которых местом проведения является пекарня.

Редактировать: дайте мне знать, если мне нужно включить что-нибудь еще

type 
Venues =(cafe, resteraunt, bakery, milkbar, fastfood);

Mfood = record
foodtype, chef: string
venue: Venues;
end;


function FoodType(prompt: String): Venues;
    var
        selection: Integer;
    begin
        WriteLn('Venues:');
        WriteLn('  1. Cafe');
        WriteLn('  2. Restaurant');
        WriteLn('  3. Bakery');
        WriteLn('  4. Milkbar');
        WriteLn('  5. FastFood');

        selection := ReadIntegerRange('Select a venue (1 - 5): ', 1, 5);
        result := Venues(selection - 1);
    end;

    procedure WriteFoodMenu(MFood: MFood);
    begin
    WriteLn(mfood.foodtype, ' - ', mfood.chef, ' - ', mfood.venue);
    end;

1 Ответ

0 голосов
/ 25 апреля 2018

Вам нужно будет выбрать Venues:

procedure WriteFoodMenu(Venue: Venues; MFood: MFood);
begin
  if MFood.venue = Venue then
    WriteLn(mfood.foodtype, ' - ', mfood.chef, ' - ', mfood.venue);
end;

Это работает, только если вы передадите нужное место в процедуре.Теперь у вас может быть список MFoods:

const
  Foods: array[0..numOfFoods - 1] of MFood =
  (
    (FoodType: 'Spaghetti'; Chef: 'Luigi'; Venue: resteraunt),
    ( etc...),
    // etc...
    ( etc...)
  );

...
  Venue := FoodType('Select a venue');
  for I := Low(Foods) to High(Foods) do
    WriteFoodMenu(Venue, Foods[I]);

Обратите внимание, что было бы целесообразно отобразить приглашение, которое вы передаете на FoodType, перед тем, как представить меню.В настоящее время вы вообще не используете подсказку.

...