2017-01-09 5 views
1

この問題があります。この関数の最後に イム:パスカル - 別の関数からプロシージャを呼び出す

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; 

は今、私は、「サブメニュー」と呼ばれる手順を持っています。だから、メインプログラムのコードでは、私はプロシージャを呼び出すことができます "サブメニュー()"。しかし、上記の関数内のimは、私のコードをコンパイルしません。 「識別子が見つかりません」と表示されます。しかし、この機能を実行した後、最後に行う必要があるのはサブメニューに入ることです。そして、私は実際にはメインプログラムだけで無限ループを構築しないようにしようとしています。それをする最善の方法は何ですか?

私は、他の機能の前にサブメニューが起動されていれば機能すると思います。しかし、両方の機能はお互いを呼び出すので、どちらも常に存在しないのでどちらも互いに上にあることはありません。

よろしくお願いします。

答えて

2

その後、あなたは前方宣言が必要ですFORWARD

+0

と宣言ありがとう

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

注意を!完璧に動作します! – user7285912

関連する問題