Funktionen und Prozeduren verstehen und verwenden

weibliche webentwicklerin, die am computer arbeitet

Maskot/Getty Images





Haben Sie jemals festgestellt, dass Sie denselben Code immer und immer wieder geschrieben haben, um eine gemeinsame Aufgabe darin auszuführenEvent-Handler? Ja! Es ist an der Zeit, dass Sie sich über Programme innerhalb eines Programms informieren. Nennen wir diese Miniprogramme Subroutinen.

Einführung in Subroutinen

Subroutinen sind ein wichtiger Bestandteil von jedem Programmiersprache , und Delphi ist keine Ausnahme. In Delphi gibt es im Allgemeinen zwei Arten von Unterroutinen: eine ​Funktion und eine Prozedur. Der übliche Unterschied zwischen einer Funktion und einer Prozedur besteht darin, dass eine Funktion einen Wert zurückgeben kann und eine Prozedur dies im Allgemeinen nicht tut. Eine Funktion wird normalerweise als Teil eines Ausdrucks aufgerufen.



Sehen Sie sich die folgenden Beispiele an:

|_+_|

Sobald Subroutinen definiert wurden, können wir sie ein- oder mehrmals aufrufen:



|_+_|

Funktionen und Prozeduren

Wie wir sehen können, verhalten sich sowohl Funktionen als auch Prozeduren wie Miniprogramme. Insbesondere können sie ihren eigenen Typ, Konstanten und Variablendeklarationen enthalten.

Schauen Sie sich eine (verschiedene) SomeCalc-Funktion genauer an:

|_+_|

Jede Prozedur oder Funktion beginnt mit a Header die das Verfahren oder die Funktion identifiziert und die auflistet Parameter die Routine verwendet, falls vorhanden. Die Parameter sind in Klammern aufgeführt. Jeder Parameter hat einen identifizierenden Namen und normalerweise einen Typ. Ein Semikolon trennt Parameter in einer Parameterliste voneinander.

sStr, iYear und iMonth werden aufgerufen konstante Parameter . Konstante Parameter können von der Funktion (oder Prozedur) nicht geändert werden. Der iDay wird als übergeben Parameter war , und wir können innerhalb der Subroutine Änderungen daran vornehmen.



Funktionen müssen, da sie Werte zurückgeben, a haben Rückgabetyp am Ende des Headers deklariert. Der Rückgabewert einer Funktion ist durch die (endgültige) Zuweisung an ihren Namen gegeben. Da jede Funktion implizit eine lokale Variable Result vom gleichen Typ wie der Rückgabewert der Funktion hat, hat die Zuweisung an Result denselben Effekt wie die Zuweisung an den Namen der Funktion.

Positionierung und Aufruf von Unterprogrammen

Subroutinen werden immer im Implementierungsabschnitt der Unit platziert. Solche Subroutinen können von einem Event-Handler oder einer Subroutine in derselben Unit aufgerufen (verwendet) werden, die danach definiert ist.



Hinweis: Die uses-Klausel einer Unit sagt Ihnen, welche Units sie aufrufen kann. Wenn wir möchten, dass eine bestimmte Subroutine in einer Unit1 von den Event-Handlern oder Subroutinen in einer anderen Unit (z. B. Unit2) verwendet werden kann, müssen wir:

  • Fügen Sie Unit1 zur uses-Klausel von Unit2 hinzu
  • Platzieren Sie eine Kopie des Headers der Subroutine im Schnittstellenabschnitt von Unit1.

Das bedeutet, dass Unterprogramme, deren Header im Interface-Abschnitt angegeben sind globalen Geltungsbereich .



Wenn wir eine Funktion (oder eine Prozedur) innerhalb ihrer eigenen Unit aufrufen, verwenden wir ihren Namen mit was auch immer Parameter wird gebraucht. Wenn wir andererseits eine globale Subroutine aufrufen (definiert in einer anderen Unit, z. B. MyUnit), verwenden wir den Namen der Unit, gefolgt von einem Punkt.

|_+_|

Hinweis: Funktionen oder Prozeduren können ihre eigenen Unterroutinen enthalten, die in sie eingebettet sind. Eine eingebettete Subroutine ist lokal für die Container-Subroutine und kann nicht von anderen Teilen des Programms verwendet werden. Etwas wie:



|_+_|