Ver Mensaje Individual
  #4  
Antiguo 30-03-2008
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.610
Reputación: 32
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Smile

¡Hola!

Me gustaría añadir que ese tipo de dato se conoce como procedimental (en inglés procedural).

Es recomendable tomar en cuenta el ejemplo dado por Marcelo, Guillermo. Aunque en este caso, el nombre original del tipo de dato indica que se trata de una función de retrollamada (callback). Este tipo de funciones generalmente no son llamadas explícitamente desde nuestro código, sino que se las proporcionamos a otra función para que ésta se encargue de llamarlas.

Las funciones de retrollamada son similares a los eventos, en el sentido de que proporcionamos una rutina de código para que un proceso ya escrito, al ser ejecutado, llame a nuestra rutina cada vez que suceda algo en particular. Es usual encontrarlas en muchas APIs que usan estas funciones de retrollamada para "avisarnos" o "actualizarnos" información, algunas veces en procesos iterativos.

Por la sintaxis nativa, me parece bien definir a tu función de retrollamada como procedimiento. Sólo habría que averiguar qué convención de llamada utiliza, indicándolo con la palabra reservada correspondiente: Register, Pascal, CDecl, StdCall, SafeCall (ver tema "Calling conventions" en la ayuda de Delphi).

Por último comento que no es necesario usar la palabra Pointer para indicar que nuestra variable o tipo de dato es procedimental. En Pascal es implícito que un valor procedimental es la dirección de memoria (puntero) de la primera instrucción de código máquina de una rutina —es a esa dirección a donde "salta" la CPU para ejecutarla—.

Mi aportación.

Al González.

P.D. También te sugiero, Guillermo, llamarle a estas APIs o DLLs bibliotecas en lugar de "librerías". Es más correcto.
Responder Con Cita