我是Delphi编程领域的新手,我在控制台应用程序中调用过程时遇到问题.
我的简单应用程序是通过Windows上的telnet服务器运行的项目库存.
我使用旧的thinkpad作为我的瘦客户端运行linux和telnet客户端.
使用Delphi XE我遇到了鸡肉或鸡蛋的情况.
我得到了addscreen未声明的标识符…它被声明但是在主屏幕下!
如果我把addscreen程序放在主屏幕上,那么在addscreen程序中对mainscreen的任何调用都会让我误认为是unclared标识主屏幕!
简单来说,如何让程序在程序中到处调用?
我已经尝试过接口和实现,但它在控制台应用程序中无效!
program Project1; {$APPTYPE CONSOLE} uses SysUtils,windows,messages,Console in 'Console.pas'; procedure mainscreen; var choice: string; begin clrscr; writeln(' ------------------------------------------------------------------------------------------------------------------------------'); writeln(' | Inventory Management 0.1 ALPHA |'); writeln(' ------------------------------------------------------------------------------------------------------------------------------'); writeln(''); writeln(''); writeln(''); writeln(''); writeln(''); writeln(' Make a choice: Add(a),Remove(r),Edit(e),Backup Database(bd),Mass Add(ma),Mass Remove(mr)'); writeln('?:'); readln(choice); if choice = 'a' then addscreen else mainscreen; end; procedure addscreen; var choice: string; begin clrscr; writeln(' ------------------------------------------------------------------------------------------------------------------------------'); writeln(' | Add an Item |'); writeln(' ------------------------------------------------------------------------------------------------------------------------------'); writeln(''); writeln(''); writeln(''); writeln(' Not yet ready!'); writeln(' Press any key to return to the main menu...'); readln(choice); mainscreen; end; begin mainscreen; textbackground(black); textcolor(lightgray); ExitProcess(0); end.
非常感谢你!
@H_502_18@解决方法
编译器从上到下传递文件.在需要处理对addscreen的调用时,您还没有声明addscreen.
由于您有一个循环引用(addscreen调用mainscreen,反之亦然),您需要使用所谓的前向引用来打破它.在主屏幕之前添加此行
procedure addscreen; forward;
所以代码的组织应该如下所示:
procedure addscreen; forward; procedure mainscreen; begin ... end; procedure addscreen; begin ... end;
如果您没有循环引用,那么您可以简单地重新排序过程,以便在主屏幕之前声明添加屏幕.
@H_502_18@ @H_502_18@