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.
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;
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.
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: