Чтение переменной как числа и строки слов

Я пытаюсь заставить Dep_Code читаться как строка после выбора заданных вариантов (1, 2 или 3). Сначала я установил целое число в своей первой программе (я думаю), и смог заставить его считывать параметры, указанные в виде слов (счета ACC или другие). Однако он был случайно удален. Я пробовал разные способы настроить Dep_Code как строку, но это не работает, и я продолжаю получать множество ошибок. Кстати, я не знаком с программированием, поэтому я знаю, что следующий код совершенно неверен... но я надеюсь, что вы все можете помочь. Спасибо!

REPEAT
      writeln ('Please enter the Department Code:- ');
      writeln;
      writeln ('1. Accounts (ACC)');
      writeln ('2. Human Resources (HR)');
      writeln ('3. Operations (OP)');
      writeln;
      readln (Dep_Code);

      IF Dep_Code = 1 THEN
         Dep_Code := ('Accounts (ACC)')

      ELSE IF Dep_Code = 2 THEN
              Dep_Code := ('Human Resources(HR)')

           ELSE IF Dep_Code = 3 THEN
                   Dep_Code := ('Operations (OP)');
UNTIL ((Dep_Code >= 1) AND (Dep_Code <= 3));

«Кстати, я не знаком с программированием». Тогда я предлагаю вам получить хороший учебник по Паскалю и следовать приведенным там примерам, прежде чем вы начнете делать что-то подобное. Рекомендация: Основной Паскаль Марко Канту. Или его аналогичная книга об Object Pascal.

Rudy Velthuis 10.03.2019 18:08

Спасибо, проверю ?

LuQinxin 11.03.2019 00:51
За пределами сигналов Angular: Сигналы и пользовательские стратегии рендеринга
За пределами сигналов Angular: Сигналы и пользовательские стратегии рендеринга
TL;DR: Angular Signals может облегчить отслеживание всех выражений в представлении (Component или EmbeddedView) и планирование пользовательских...
Sniper-CSS, избегайте неиспользуемых стилей
Sniper-CSS, избегайте неиспользуемых стилей
Это краткое руководство, в котором я хочу поделиться тем, как я перешел от 212 кБ CSS к 32,1 кБ (сокращение кода на 84,91%), по-прежнему используя...
1
2
31
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это невозможно. Паскаль — строго типизированный язык, и что-то не может быть Integer а также строкой одновременно, и переменные тоже не могут менять тип:

 IF Dep_Code = 1 THEN
     Dep_Code := ('Accounts (ACC)')

Но вам вообще не нужна строка. Держите его целым числом. Функции, которые обрабатывают различные отделы, могут записывать или определять такие строки, если это необходимо. Ваша логика для меню не нуждается в строковой переменной.

Сделайте что-нибудь вроде:

procedure HandleAccounts(var Error: Boolean);
begin
  ...
end;

// Skipped the other functions to keep this answer short ...

var
  Dep_Code: Integer;
  AllFine: Boolean;

// Skip the rest of the necessary code ...  

  repeat

    // Skipped the Writelns to keep this answer short ...

    Readln(Dep_Code);
    Error := False;

    case Dep_Code of
      1: HandleAccounts(Error);
      2: HandleHumanResources(Error);
      3: HandleOperations(Error);
    else
      Error := True;
    end;   

  until not Error;

Выше я пропустил часть кода. Вы можете заполнить пробелы, я думаю.

Большое спасибо!

LuQinxin 10.03.2019 22:25

@LuQinxin: Поблагодарите не только меня, но и принять ответ, если это действительно помогло.

Rudy Velthuis 11.03.2019 12:21

Извини за это. Я не знала, что должна поставить галочку?

LuQinxin 24.03.2019 01:23

Ну, ты все-таки узнал. Спасибо.

Rudy Velthuis 25.03.2019 08:06

Другие вопросы по теме