delphi – 如何修复程序循环引用?
发布时间:2020-12-15 03:55:41 所属栏目:大数据 来源:网络整理
导读:我是Delphi编程领域的新手,我在控制台应用程序中调用过程时遇到问题. 我的简单应用程序是通过Windows上的telnet服务器运行的项目库存. 我使用旧的thinkpad作为我的瘦客户端运行linux和telnet客户端. 使用Delphi XE我遇到了鸡肉或鸡蛋的情况. 我得到了addscre
我是Delphi编程领域的新手,我在控制台应用程序中调用过程时遇到问题.
我的简单应用程序是通过Windows上的telnet服务器运行的项目库存. 使用Delphi XE我遇到了鸡肉或鸡蛋的情况. 我得到了addscreen未声明的标识符…它被声明但是在主屏幕下! 简单来说,如何让程序在程序中到处调用? 我已经尝试过接口和实现,但它在控制台应用程序中无效! 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. 非常感谢你! 解决方法
编译器从上到下传递文件.在需要处理对addscreen的调用时,您还没有声明addscreen.
由于您有一个循环引用(addscreen调用mainscreen,反之亦然),您需要使用所谓的前向引用来打破它.在主屏幕之前添加此行 procedure addscreen; forward; 所以代码的组织应该如下所示: procedure addscreen; forward; procedure mainscreen; begin ... end; procedure addscreen; begin ... end; 如果您没有循环引用,那么您可以简单地重新排序过程,以便在主屏幕之前声明添加屏幕. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |