2013-05-13 10 views
5

Wie kann ich eine Vorwärtsdeklaration einer Prozedur in Delphi machen und es an anderer Stelle implementieren? Ich möchte wie Code der dies C etwas tun, aber in Delphi:Forward-Deklaration der Prozedur in Delphi

void FooBar(); 

void FooBar() 
{ 
    // Do something 
} 
+2

Warum haben Sie nicht nach oben in der Dokumentation nachschlagen? –

+1

@DavidHeffernan: Wahrscheinlich, denn wenn er wüsste wonach er suchen müsste, würde er nicht nachsehen müssen. Sieht so aus, als wäre seine Erfahrung mit C, das kein forward-Schlüsselwort oder ähnliches hat. –

+2

@MasonWheeler Lesen Sie das Thema der Frage erneut. Geben Sie dies in die Delphi-Dokumentsuche ein. Dies passiert: http://docwiki.embarcadero.com/Search/?cx=0017879905796164350846%3Ad3x3zsyivu0&cof=FORID%3A9&ie=UTF-8&lr=lang_en&q=forward+declaration+of+conduction+in+delphi&sa=Go&siteurl=docwiki. embarcadero.com% 2FRADStudio% 2FXE4% 2Fen% 2FMain_Page & ref = docs.embarcadero.com% 2Fproducts% 2Frad_studio% 2F & ss = 160j25600j2 Wir sollten die Leute ermutigen, die Dokumentation zu benutzen. Ihre Antwort sollte einen Verweis auf die Dokumentation enthalten. –

Antwort

16

Sie tun das mit der forward Richtlinie, etwa so:

procedure FooBar(); forward; 

... 
//later on 

procedure FooBar() 
begin 
    // Do something 
end; 

Dies ist nur erforderlich, wenn Sie es als eine interne Funktion sind zu deklarieren. (z. B. bereits im Bereich implementation Ihres Geräts.) Alles, was als Methode einer Klasse oder im Bereich interface der Einheit deklariert ist, wird automatisch als vorwärts deklariert.

+0

Danke, das hat funktioniert. – Seatless

5

Hier ist eine Möglichkeit, es zu tun, über die Schnittstelle/Implementierungsteil einer Einheit.

Unit YourUnit; 

Interface 

    procedure FooBar(); // procedure declaration 


Implementation 

// Here you can reference the procedure FooBar() 

procedure FooBar(); 
begin 
    // Implement your procedure here 
end; 

sollten Sie auch einen Blick in die Dokumentation über forward declarations, wo eine weitere Option erwähnt wird, wie @MasonWheeler beantwortet.