domingo, septiembre 28, 2008

DELEGADOS Y MÉTODOS ANÓNIMOS EN DELPHI

Ahora que me están impartiendo un curso de C# me toco ver los famosos Delegados, cuando mi instructor menciono esa palabra me pregunte ¿qué diablos en un delegado? ¿Existen en Delphi? Luego cuando termino la explicación me di cuenta que los famosos delegados no son más que punteros a métodos y que siempre han existido en Delphi de hecho son la base de los eventos.

Un delegado es un tipo que hace referencia a un método, en realidad es un puntero a un método y son una característica muy interesante ya que nos permiten pasar métodos como parámetros de otros métodos. Los delegados tienen las siguientes propiedades:

  • Los delegados son similares a los punteros a funciones pero con la diferencia de que un puntero a un método son un par de punteros; el primero guarda la dirección al método y el segundo guarda una referencia a un objeto.
  • Los delegados permiten pasar métodos como parámetros.
  • Los delegados pueden utilizarse para definir métodos de devolución de llamada.
  • La versión de Delphi 2009 introduce el concepto de métodos anónimos, que permite pasar bloques de código como parámetros en lugar de utilizar métodos definidos independientemente.

Como dije antes un delegado nos permite pasar un método como parámetro de otro método, sabemos cómo hacer para pasar tipos de datos como parámetros, simplemente declaramos el tipo y el nombre, si quisiera indicar que en cierto lugar espero un método para utilizarlo tengo que establecer el tipo de retorno del método en este caso si es una función o un procedimiento y los parámetros que acepta, esto es justamente un delegado, una firma que nos permite establecer cómo deberá ser el método que esperamos. Veamos la declaración de un delegado para utilizarlo en un método como parámetro:






El delegado se declara en la sección type y es parecido a la declaración de un puntero a una función pero al final agregamos las palabras of Object para indicar que es un puntero a un método.

Ahora vamos a crear un método que espere un tipo TDelegado como parámetro para invocarlo dentro.







Este método va a tomar como parámetro un delegado del tipo TDelegado (o sea un método tipo procedimiento y tome un string como parámetro) y luego lo va a invocar. Veamos la llamada al método. Primero creamos el método que utilizáremos como parámetro del tipo TDelegado.













El método recibe un string y manda el mensaje a la pantalla. Ahora vamos a ver cómo se invoca.








Ahora lo corremos y vemos que funciona:















Resumiendo:
  1. Primero declaramos un tipo delegado.
  2. Luego declaramos un método que espera un tipo delegado como parámetro.
  3. A continuación declaramos un método que es el que vamos a pasar como parámetro al método anterior.
  4. Y finalmente lo invocamos.
Hay una forma de de ahorrarnos un paso en esta secuencia, podemos evitarnos la fatiga de declarar el método que vamos a pasar como parámetro, la solución es la siguiente:

1. Vamos a cambiar la declaración del tipo delegado de la siguiente forma:

2. Luego modificamos el método que espera un al tipo delegado se la siguiente forma:






3. Y finalmente lo invocamos







Lo que hacemos aquí es definir en la misma línea el delegado y la implementación, esto es lo que se conoce como método anónimo.

Un método anónimo es un procedimiento o función que no tiene un nombre asociado. En un método anónimo un bloque de código puede tratarse como una entidad y puede asignarse a una variable o puede ser usado como parámetro, como en el ejemplo anterior.

El objetivo principal del método anónimo es reducir la cantidad de código requerida para establecer una funcionalidad con delegados, sobre todo cuando no estamos interesados en involucrar relaciones entre las clases.

Bueno pues hasta aquí mi explicación espero haya quedado claro lo que son los delegados y métodos anónimos en el próximo post tratare el tema de los Generics o Genéricos y al finalizar daré un ejemplo práctico del uso de estas nuevas características en Delphi 2009.

jueves, septiembre 11, 2008

EVERYDAY - CARLY COMANDO

Antier platicando con mi primo (el cual me está enseñando a programar en C# y yo enseñándole Delphi) sabiendo mi afición al piano me mando un enlace a una canción que estaba muy padre, la escuche y me enamore de ella se trata de la canción EveryDay de Carly Comando de la cual nunca había escuchado, me di a la tarea de buscar inmediatamente la partitura después de buscar durante algún tiempo la encontré, es una canción grado II la cual no tiene mucha complejidad y está muy bonita, pues me voy a dar a la tarea de estudiar la partitura y tocarla les avisare de mis avances y en cuanto esté lista la subiré, bueno pues les dejo el video para que le echen un ojo.

viernes, septiembre 05, 2008

PRESENTACIÓN DE DELPHI 2009 EN LA CIUDAD DE MEXICO

Hola amigos pues el día de ayer 04 de Septiembre en la ciudad el México se llevo a cabo la presentación de Delphi 2009, estuvieron presentes por supuesto la gente de CodeGear entre ellos: Andreano Lanusse, David I y Lisa Flores también la gente de Gopac : Raúl Gómez y Gerardo Delgado. El evento comenzó con una presentación de C++ Builder 2009 por parte de David I, a continuación después del break (en el cuál dieron crepas y café) comenzó Andreano con la tan ansiada presentación de Delphi 2009 que se puede resumir de la siguiente manera:

Nuevos componentes VCL y mejoras a los ya existentes:

Buscando crear mejores interfaces de usuario con los nuevos componentes VCL, se introduce los nuevos controles Ribbon para crear interfaces de usuario con la apariencia de Microsoft Office 2007, soporte para imágenes PNG, mejoras a los componentes existentes, y se continua el apoyo para la interfaz de Windows Vista.

Métodos anónimos y el uso de Generics

Delphi 2009 incluye ahora los métodos genéricos (Generics) y métodos anónimos. Generics se usa para crear código que funciona con cualquier tipo de datos. Los métodos anónimos te permiten introducir código en bloques, en cada lugar donde los necesites sin la necesidad de copiar y pegar código o crear procedimientos y funciones, ya sea en línea o como parámetros a otros bloques de código. Estas dos características y otras mejoras mantienen a Delphi 2009 a la vanguardia en tecnología de lenguaje nativo.

Internacionalización de aplicaciones

En Delphi 2009, todo el entorno de desarrollo - entre ellos el IDE, el editor de código, la RTL y la VCL están plenamente habilitados para Unicode, lo que permitirá que las aplicaciones puedan funcionar en cualquier Windows y aceptar prácticamente cualquier forma de datos Unicode. Además, si necesita traducir sus aplicaciones a otros idiomas, Delphi 2009 ofrece un potente conjunto de herramientas de traducción.

Nuevas características de DataSnap

La gestión de datos es el corazón de cualquier aplicación empresarial. Delphi 2009 ofrece DataSnap, un conjunto completo de herramientas para la construcción de aplicaciones escalables y robustas. En Delphi 2009, DataSnap, se ha revisado para proporcionar soluciones poderosas y flexibles y libres de COM, soluciones que le permite escribir métodos en el Servidor (es decir, Procedimientos almacenados en el nivel medio-servidor) con Delphi.



Otras características

También se hablo de otras nuevas características como: Un nuevo importador para la creación de componentes, nuevas opciones de compilación, el nuevo administrador de recursos entre otras cosas.

La verdad es que falto tiempo para explicar todo y la asistencia no fue lo que hubiéramos deseado, pero en general la presentación estuvo bien.

Hay rumores de que la gente de embarcadero desea que México sea el segundo mejor mercado después de Brasil, pero para que esto pase vamos a tener que trabajar en conjunto embarcadero, gopac y la comunidad de desarrolladores.

De la comunidad solo estuvimos presentes Eliseo González y un servidor, a lo mejor los demás por cuestiones de trabajo no pudieron estar presentes. Bueno pues por mi parte saben que cuentan con mi apoyo para que Delphi siga creciendo. Saludos y hasta la próxima.
eXTReMe Tracker