Soy nuevo en la escena de programación Delphi y tengo problemas para llamar un procedimiento en un procedimiento en mi aplicación de consola.Cómo reparar la referencia circular del procedimiento?
Mi aplicación simple es para un inventario de artículos que se ejecuta a través de un servidor telnet en Windows. Estoy usando un viejo thinkpad como mi thinclient corriendo Linux y un cliente de telnet.
Usando Delphi XE Me encontré con una situación de gallina o huevo.
Aparece el indentificador undeclared de addscreen ... está declarado pero bajo la pantalla principal !!! Si pongo un procedimiento de agregar pantalla sobre la pantalla principal, cualquier llamada a la pantalla principal en el procedimiento de agregar pantalla me convierte en un error en la pantalla principal del indentificador no declarado.
En términos simples, ¿cómo hacer que el procedimiento se llame a todas partes en el programa?
¡He intentado con la interfaz y la implementación, pero no es válido en un programa de aplicación de consola!
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.
Muchas gracias!
Será mejor que mueva el código 'pantalla principal' al programa 'principal' y mueva más instrucciones al ciclo 'repetir'. –