Wie behebe ich eine Prozedur-Zirkelreferenz?

8

Ich bin neu in der Delphi Programmierumgebung und habe Probleme beim Aufruf einer Prozedur in einer Prozedur in meiner Konsolenanwendung.

Meine einfache Anwendung ist für ein Artikel-Inventar, das über einen Telnet-Server unter Windows läuft. Ich benutze ein altes Thinkpad als meinen Thinclient mit Linux und einem Telnet-Client.

Mit Delphi XE bin ich in eine Hühner- oder Eissituation geraten.

Ich bekomme addscreen undeclared indifier ... es wird aber unter dem Mainscreen deklariert !!! Wenn ich addscreen Verfahren über den Hauptbildschirm eins setze, mache jeder Anruf zum Hauptbildschirm in der addscreen Prozedur mich einen Fehler undeclared Identifizierungs-Hauptbildschirm!

In einfachen Worten, wie kann man die Prozedur überall im Programm aufrufen lassen?

Ich habe versucht, die Schnittstelle und die Implementierung, aber es ist nicht gültig in einem Konsolenanwendungsprogramm!

%Vor%

Vielen Dank!

    
ELCouz 16.10.2011, 19:28
quelle

1 Antwort

13

Der Compiler durchläuft die Datei von oben nach unten. An dem Punkt, an dem es den Aufruf von addscreen verarbeiten muss, haben Sie addscreen noch nicht deklariert.

Da Sie eine zirkuläre Referenz haben ( addscreen ruft mainscreen und umgekehrt), müssen Sie diese mit einer sogenannten Vorwärtsreferenz brechen. Fügen Sie diese Zeile vor mainscreen

hinzu %Vor%

Also sollte die Organisation des Codes so aussehen:

%Vor%

Wenn Sie keinen Zirkelverweis hätten, könnten Sie einfach die Prozeduren neu ordnen, so dass addscreen vor mainscreen deklariert wurde.

    
David Heffernan 16.10.2011, 19:32
quelle