PASCAL - 从另一个函数调用过程

时间:2017-01-09 15:08:58

标签: function call pascal procedures

我有这个问题。 我在这个功能的最后:

FUNCTION ToString(Liste : Pokemon) : String;
VAR
RES : STRING;
BEGIN

  ClrScr;
  TextBackground(Green);
  Writeln('DER POKEDEX:');
  Writeln;
  WHILE (Liste <> NIL) DO
     BEGIN
      RES :=  RES + Concat('#',IntToStr(Liste^.PkmnPos), ': ', Liste^.PkmnName, '. // ', IntToStr(Liste^.PkmnKG), ' kg', chr(13),chr(10),chr(13),chr(10));
      Liste := Liste^.Next;
    END;
    TextBackground(Black);
    ToString := Res;

END;

现在,我有一个名为“子菜单”的程序。因此,在主程序代码中,我可以调用过程“Submenu()”。但是当我在上面的函数中时,它不会编译我的代码。它说“找不到标识符”。但是,在完成此功能之后,它需要做的最后一件事就是进入子菜单。我真的试图不在主程序中存在无限循环,只是为了没有程序结束。这样做的最佳方式是什么?

O,我知道,如果我在其他功能之前启动了Submenu功能,它就可以了。但是这两个函数互相调用,所以两者都不能相互叠加,因为总会有一个函数不能正常工作......

的问候。

1 个答案:

答案 0 :(得分:2)

然后你需要一个前瞻声明:

  FUNCTION ToString(Liste : Pokemon) : String; FORWARD;

  FUNCTION Submenu(); 
  BEGIN
      ..
       ToString(Liste);
      ..
  END;

  FUNCTION ToString(Liste : Pokemon) : String; 
  BEGIN
     // real implementation tostring
     ..
     Submenu();
     ..
  END;

请注意 FORWARD

的声明