Espero que encontrarais interesante el artículo de Cary Jensen que compartimos en la entrada anterior y que resalté porque abordaba un tema que, aunque puede no ser crítico, no estaba de más conocerlo.
Shifting TFields in TDataSets Bound to TDBGrids…
Comentábamos que era uno de esos temas en los que se suele caer por accidente, y a veces ni siquiera se llega a ser consciente del problema, pues se tiene que dar la casualidad que al usuario le haya dado por alterar el orden de las columnas en un dbgrid y que justamente se haya escrito codigo que pueda acceder a través de un índice dentro del ClientDataset y que además no existan columnas persistentes… 🙂 Quizás son demasiadas casualidades… pero seguro que si algún día se cruzan, será con fatalidad, en una de esas rejillas que tiene que salvar al mundo de una destrucción total:
-Atención sr. presidente… haga doble click en la rejilla para que los misiles destruyan el meteorito…
-Dios mio!!! Esto ha generado una excepción… Estamos todos perdidos… Se ha bloqueado el sistema…
… (y se hizo el silencio en toda la Tierra… ) 🙂
Fuera de lo meramente anecdótico, la idea es seguir trabajando en esa linea e ir seleccionando de cuando en cuando algunas entradas para destacarlas y compartirlas con la comunidad hispana de programadores. Y si es posible, incluso aportar la traducción como ya ha sucedido en dos ocasiones. Aunque eso, os confieso que no resulta tan sencillo, ni disponemos siempre de tiempo suficiente, teniendo en cuenta además, que intentamos hacer las cosas correctamente y solicitamos permiso -previamente- para poder llevar a cabo cualquiera de estas iniciativas. Creo que sería bueno que entre todos, poco a poco fueramos derribando los muros que van aislando a las distintas comunidades, de forma que existieran ventanas y espacios abiertos entre ellas, que las pudieran comunicar y hacer converger.
A veces me pregunto si vamos por buen camino… 🙂 Solo hay que seguir las señales.
Hoy he seleccionado a través de la lectura del Twitter, y concretamente del perfil de Malcon Groves, una referencia a la entrada WeakRefence in Delphi – solving circular interface references escrita por Vincent Parrett. Es una entrada muy interesante, donde se reflexiona acerca de las interfaces y el recuento de referencias, desde un punto de vista enfocado en varios frentes que se interrelacionan: la posibilidad de que nuestra aplicación no libere correctamente la memoria reservada, los posibles errores de acceso o violaciones, que emergerían al acceder desde nuestro código a referencias no validas, y la problemática real que plantea el hecho de tener que evitar las referencias circulares, puesto que éstas, se prohiben expresamente desde nuestro entorno. Vicent Parret utiliza para explicar esta problemática y proponer una posible solución, un ejemplo muy sencillo basado en la relación padre-hijo, aunque entiende que pueda ser resuelta de una forma mas formal desde el mismo compilador:
I still think this is something that could be solved in a better way by the delphi compiler/vcl guys n girls.
Esa posible solución se apoya en la posibilidad de crear una clase TWeakReferencedObject, que le permite evitar la referencia circular y establecer la relación entre las clases padre e hijo. Las últimas lineas de código de su entrada, donde comenta los metodos Get/Set que permiten acceder a la clase padre desde la clase hijo (TChild), lo harían de forma segura.
Ahora mismo no es posible descargar el código completo del ejemplo, puesto que existe un pequeño problema en el fichero zip. Pero en breve, nos ha comentado que lo va a reponer para que pueda ser descargado. Creo que sería interesante darle un vistazo a ese código.
Por cierto, el hecho de que el comentario partiera de Malcon Groves, no es casual ya que, anteriormente, podemos encontrar en su blog varias entradas abordando aspectos relacionados con las interfaces. Concretamente en Casting an Interface Reference to the Implementing Class in Delphi 2010 de fecha 16 deAgosto de 2009, hace una referencia a una de las novedades introducidas en Delphi 2010, relacionadas con las interfaces, que tiene que ver con el operador Is y la posibilidad de que ahora pueda ser utilizado para evaluar si un interface es implementado por una clase especifica:
In Delphi 2010, you can now use the is operator to test to see if an interface type is implemented by a specific class, and if so, cast it to that type and reference any non-interface methods, properties, etc.
Así que si tenéis unos minutos, creo que lo escrito por Malcon Groves puede ser un buen punto de parada para detenerse.
Más cosas en el tintero… (cambiamos de tercio):
Hace unos días hacíamos mención a Intraweb, a raíz del Seminario del día 26 de Febrero. Recordais que hablábamos sobre ello en la entrada Próxima cita el 26 de Febrero haciendo un breve repaso de las sesiones y lo que nos había parecido destacable. En lo que hace referencia a Intraweb, ya tenemos disponibles los ejemplos que se vieron en el seminario y que pueden ser descargados desde la url:
Descarga ejemplos del miniscurso Desmitificando el Intraweb
También es posible acceder al video del curso a través del enlace existente en Embarcadero: Desmitificando el Intraweb
De igual forma, Eliseo González, en uno de sus comentarios anteriores, compartía con nosotros la dirección de descarga de el total de vídeos que componían el seminario del día 26. Comento esto porque fácilmente puede pasar su comentario inadvertido dado que no queda a la vista. Esta es la dirección de Embarcadero en la que podemos encontrarlos:
Delphi Developer Day IV – Vídeos del Seminario
Mas cosas…
Comentaros también que ya está disponible el número 10 de la revista Blaise Magazine, número que requiere la suscripción puesto que ha finalizado el plazo de disponibilidad gratuita para usuarios que hubieran adquirido Delphi 2010 o Rad Studio 2010. Muchos vais a encontrar muy interesante su contenido y por eso lo remarco. Ahora mismo, es una de las pocas publicaciones activas centradas en el Mundo de Delphi y se encuentra traducida a varios idiomas, aunque de momento no a español.
Creo que nada mas por hoy.
Un saludo a todos.
Estas son las rutas de descarga de los ficheros de ejemplo de la entrada de Vicent Parrett:
http://www.finalbuilder.com/downloads/delphi/weakreference.zip
http://www.finalbuilder.com/downloads/delphi/WeakRefD2007.zip
Me gustaMe gusta