2013-05-13 14 views
5

Come posso fare una dichiarazione anticipata di una procedura in Delphi e renderla implementabile altrove? Voglio fare qualcosa di simile il codice di questo C, ma a Delfi:forward declaration of procedure in delphi

void FooBar(); 

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

Perché non hai cercato la dichiarazione in avanti nella documentazione? –

+1

@DavidHeffernan: Molto probabilmente perché se sapesse cosa cercare, non dovrebbe cercarlo. Sembra che la sua esperienza sia con C, che non ha una parola chiave 'forward' o qualcosa del genere. –

+2

@MasonWheeler Leggi di nuovo l'oggetto della domanda. Digitalo nella ricerca doc di Delphi. Questo è ciò che accade: http://docwiki.embarcadero.com/Search/?cx=0017879905796164350846%3Ad3x3zsyivu0&cof=FORID%3A9&ie=UTF-8&lr=lang_en&q=forward+declaration+of+procedure+in+delphi&sa=Go&siteurl=docwiki. embarcadero.com% 2FRADStudio% 2FXE4% 2Fen% 2FMain_Page e ref = docs.embarcadero.com% 2Fproducts% 2Frad_studio% 2F & ss = 160j25600j2 Dovremmo incoraggiare le persone a utilizzare la documentazione. La tua risposta dovrebbe includere un riferimento alla documentazione. –

risposta

16

lo fai con la direttiva forward, in questo modo:

procedure FooBar(); forward; 

... 
//later on 

procedure FooBar() 
begin 
    // Do something 
end; 

Questo è necessario solo se si sta dichiarando come una funzione interna. (vale a dire già nella sezione implementation della tua unità). Qualunque cosa dichiarata come metodo di una classe, o nella sezione interface dell'unità, viene automaticamente dichiarata inoltrata.

+0

Grazie, ha funzionato. – Seatless

5

Ecco un modo di farlo, attraverso la parte di interfaccia/implementazione di un'unità.

Unit YourUnit; 

Interface 

    procedure FooBar(); // procedure declaration 


Implementation 

// Here you can reference the procedure FooBar() 

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

Si dovrebbe anche dare un'occhiata alla documentazione su forward declarations, dove si parla un'altra opzione, come @MasonWheeler rispose.