Cómo usar funciones y procedimientos en Delphi

¿Alguna vez te has encontrado escribiendo el mismo código una y otra vez para realizar alguna tarea común en controladores de eventos? ¡Si! Es hora de que aprenda sobre los programas dentro de un programa. Llamemos a esos subprogramas de mini programas.

Introducción a las subrutinas

Las subrutinas son una parte importante de cualquier lenguaje de programaciónyDelphi no es una excepción. En Delphi, generalmente hay dos tipos de subrutinas: una función y un procedimiento. La diferencia habitual entre una función y un procedimiento es que una función puede devolver un valor, y un procedimiento generalmente no lo hará. Una función normalmente se llama como parte de una expresión.

Eche un vistazo a los siguientes ejemplos:

procedimiento Di hola(const ¿Qué?cuerda); empezar
ShowMessage ('Hola' + sWhat); final; función Añosconst BirthYear: entero): entero; var
Año, Mes, Día: Palabra; empezar
DecodeDate (Fecha, Año, Mes, Día); Resultado: = Año - Año de nacimiento; final; 

Una vez que se han definido las subrutinas, podemos llamarlas una o más veces:

instagram viewer
procedimiento TForm1.Button1Click (Remitente: TObject); empezar
SayHello ('Usuario de Delphi'); final; procedimiento TForm1.Button2Click (Remitente: TObject); empezar
SayHello ('Zarko Gajic'); ShowMessage ('Tú eres' + IntToStr (YearsOld (1973)) + 'años!'); final; 

Funciones y procedimientos.

Como podemos ver, tanto las funciones como los procedimientos actúan como miniprogramas. En particular, pueden tener su propio tipo, constantes y declaraciones de variables dentro de ellos.

Eche un vistazo más de cerca a una función SomeCalc (miscelánea):

función SomeCalc. (const sStr: cuerda; const iYear, iMonth: entero; var iDay: entero): booleano; empezar...final; 

Cada procedimiento o función comienza con un encabezamiento que identifica el procedimiento o la función y enumera los parámetros la rutina usa si hay alguna. Los parámetros se enumeran entre paréntesis. Cada parámetro tiene un nombre de identificación y generalmente tiene un tipo. Un punto y coma separa los parámetros en una lista de parámetros entre sí.

Se llaman sStr, iYear e iMonth parámetros constantes. Los parámetros constantes no pueden ser cambiados por la función (o procedimiento). El iDay se pasa como un parámetro var, y podemos hacer cambios, dentro de la subrutina.

Las funciones, dado que devuelven valores, deben tener un tipo de retorno declarado al final del encabezado. El valor de retorno de una función viene dado por la asignación (final) a su nombre. Dado que cada función tiene implícitamente una variable local Resultado del mismo tipo que el valor de retorno de las funciones, la asignación a Resultado tiene el mismo efecto que la asignación al nombre de la función.

Subrutinas de posicionamiento y llamadas

Las subrutinas siempre se colocan en la sección de implementación de la unidad. Tales subrutinas pueden ser llamadas (utilizadas) por un controlador de eventos o una subrutina en la misma unidad que se define después.

Nota: la cláusula de usos de una unidad le dice a qué unidades puede llamar. Si queremos que los controladores de eventos o las subrutinas de otra unidad puedan usar una subrutina específica en una Unidad1 (por ejemplo, Unidad2), tenemos que:

  • Agregue Unit1 a la cláusula de usos de Unit2
  • Coloque una copia del encabezado de la subrutina en la sección de interfaz de la Unidad1.

Esto significa que las subrutinas cuyos encabezados se dan en la sección de interfaz son alcance global.

Cuando llamamos a una función (o procedimiento) dentro de su propia unidad, usamos su nombre con lo que sea parámetros Se necesitan. Por otro lado, si llamamos a una subrutina global (definida en alguna otra unidad, por ejemplo, MyUnit), usamos el nombre de la unidad seguido de un punto.

... // El procedimiento SayHello se define dentro de esta unidad
SayHello ('Usuario de Delphi'); // La función YearsOld se define dentro de la unidad MyUnit
Dummy: = MyUnit. Years Old (1973);... 

Nota: las funciones o procedimientos pueden tener sus propias subrutinas incrustadas dentro de ellas. Una subrutina incrustada es local a la subrutina contenedor y no puede ser utilizada por otras partes del programa. Algo como:

procedimiento TForm1.Button1Click (Remitente: TObject); función Es pequeño(const sStr:cuerda): booleano; empezar// IsSmall devuelve True si sStr está en minúsculas, False en caso contrario
Resultado: = LowerCase (sStr) = sStr; final; empezar// IsSmall solo se puede usar dentro del evento Button1 OnClickSi IsSmall (Edit1.Text) luego
ShowMessage ('Todas las mayúsculas en Edit1.Text')
más
ShowMessage ('No todas las mayúsculas en Edit1.Text'); final;
instagram story viewer