将变量读取为单词和字串

时间:2019-03-10 16:37:54

标签: performance freepascal

在选择给定的选项(1、2或3)后,我试图让Dep_Code读为字符串。我首先在我的第一个程序中将其设置为整数(我认为),并且能够获取它以单词形式给出的选项(帐户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));

1 个答案:

答案 0 :(得分:0)

这是不可能的。 Pascal是一种严格类型化的语言,并且某些内容不能同时是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;

上面,我跳过了一些代码。我猜你可以填空。