Comprensione e utilizzo di funzioni e procedure

Ti sei mai trovato a scrivere più volte lo stesso codice per eseguire alcune attività comuni nei gestori di eventi? Sì! È tempo che tu impari a conoscere i programmi all'interno di un programma. Chiamiamo quelle subroutine di mini-programmi.

Introduzione alle subroutine

Le subroutine sono una parte importante di qualsiasi linguaggio di programmazione e Delphi non fa eccezione. In Delphi, ci sono generalmente due tipi di subroutine: una funzione e una procedura. La solita differenza tra una funzione e una procedura è che una funzione può restituire un valore e una procedura generalmente non lo farà. Una funzione viene normalmente chiamata come parte di un'espressione.

Dai un'occhiata ai seguenti esempi:

 procedura Di Ciao(const sWhat:corda); inizio ShowMessage ('Hello' + sWhat); fine; funzione Anni(const Anno di nascita: intero): intero; var Anno, mese, giorno: parola; inizio DecodeDate (Data, Anno, Mese, Giorno); Risultato: = Anno - Anno di nascita; fine; 

Una volta definite le subroutine, possiamo chiamarle una o più volte:

 procedura TForm1.Button1Click (Mittente: TObject); inizio SayHello ('Utente Delphi'); fine; procedura TForm1.Button2Click (Mittente: TObject); inizio SayHello ("Zarko Gajic"); ShowMessage ('You are' + IntToStr (YearsOld (1973)) + 'years old!'); fine; 

Funzioni e procedure

Come possiamo vedere, sia le funzioni che le procedure agiscono come mini-programmi. In particolare, possono avere il proprio tipo, costanti e dichiarazioni variabili al loro interno.

Dai un'occhiata più da vicino a una funzione (varie) SomeCalc:

 funzione SomeCalc (const SSTR: corda; const iYear, iMonth: intero; var iDay: intero): booleano; inizio ...  fine; 

Ogni procedura o funzione inizia con a intestazione che identifica la procedura o la funzione ed elenca il file parametri la routine usa se presente. I parametri sono elencati tra parentesi. Ogni parametro ha un nome identificativo e di solito ha un tipo. Un punto e virgola separa i parametri in un elenco di parametri l'uno dall'altro.

vengono chiamati sStr, iYear e iMonth parametri costanti. I parametri costanti non possono essere modificati dalla funzione (o dalla procedura). L'iDay viene passato come a parametro var, e possiamo apportare modifiche ad esso, all'interno della subroutine.

Le funzioni, poiché restituiscono valori, devono avere a tipo di ritorno dichiarato alla fine dell'intestazione. Il valore di ritorno di una funzione è dato dall'assegnazione (finale) al suo nome. Poiché ogni funzione ha implicitamente una variabile locale Result dello stesso tipo delle funzioni restituiscono valore, l'assegnazione a Result ha lo stesso effetto che l'assegnazione al nome della funzione.

Posizionamento e chiamata di subroutine

Le subroutine sono sempre collocate nella sezione di implementazione dell'unità. Tali subroutine possono essere chiamate (utilizzate) da un gestore eventi o subroutine nella stessa unità definita dopo.

Nota: la clausola usi di un'unità indica quali unità può chiamare. Se vogliamo che una subroutine specifica in un'unità 1 sia utilizzabile dai gestori di eventi o subroutine in un'altra unità (ad esempio unità2), dobbiamo:

  • Aggiungi Unit1 alla clausola use di Unit2
  • Inserire una copia dell'intestazione della subroutine nella sezione dell'interfaccia dell'Unità1.