Ese día llegó
He liberado la primera parte de mi biblioteca de clases para versiones modernas de Delphi, en un sitio Web famoso para proyectos de software libre.
Es una versión beta, todas las unidades compilan en Delphi XE7. https://github.com/algonzalez74/GHFreebrary Bienvenidas las contribuciones. :) |
Gracias Al.
#:-)##:-)##:-)# |
Un gran paso adelante... ^\||/
|
Que alegría saber de este lanzamiento :), te felicito y agradezco Al.
|
Me uno a las felicitaciones. Vamos a pegar un vistazo si señor!
|
Gran trabajo, ¡ Felicitaciones ! ^\||/
Un abrazo :) |
Amigo Al.
Gracias por compartir tu trabajo. ^\||/ |
Hola a todos,
¡Me uno a las felicitaciones Al! :) |
Muchas gracias Al por compartir tu conocimiento y estas librerías con todos nosotros.
|
Seria realmente genial iniciar algo como esto con la nueva biblioteca
|
Hola nuevamente Al
Estuve explorando un poco el codigo, pero aun no he puesto en marcha ninguna prueba Solamente tengo un par de comentarios para hacerte: - Me alegra que uses identificadores calificados. A mi tambien me gusta hacerlo y creo que crear bibliotecas publicas es una buena forma de impulsar al resto a que haga lo mismo. Solamente hay una pequeña diferencia en como lo hago yo; yo prefiero seguir la convencion que esta adoptando poco a poco Firemonkey, en la cual, el prefijo para los elementos del tipo enumerado ya no se usa Por ejemplo, de GHF.Sys, linea 528
Esto nos lleva a escribir codigo asi:
Yo creo que el prefijo que historicamente se uso en Delphi (pensando tambien en TAlignLayout --> alClient, alTop, etc) no es necesario si se usan identificadores calificados y "ensucia" el codigo fuente. Otro detalle que creo que es importante, veo que en tus unidades siempre activas la directiva de compilacion SCOPEDENUMS Ahora me entro la curiosidad, pero yo creo que lo mas seguro es compilar nuestros tipos enumerados con la directiva y luego volver a ponerla a OFF que es su valor por defecto. Es decir, asi es como yo declaro los tipos enumerados: Código PHP:
- Otra recomendacion es el uso de regiones para hacer el codigo mas legible. Las regiones te permiten [plegar?] porciones del codigo y denotarla con un nombre, para hacer mas facil la navegacion dentro de la unidad. Es mas largo hacer scroll en una unidad larga como por ejemplo las GHF.Sys y GH.SysEx. Tambien creo que es una buena idea usar una region para la licencia, que ocupa su buena porcion de espacio - El ultimo punto es el uso de la documentacion XML. Esta es una de las ultimas practicas que he adoptado, y ya me he acostumbrado. Consiste en documentar el codigo de forma tal que pueda ser util al momento de que el usuario use tu biblioteca, y no tenga que tener un manual de referencia para consultar. Esta documentacion XML se adjunta en la ventana que aparece cuando Delphi nos muestra cuales y que tipo de parametros recibe un metodo, el retorno de una funcion, etc Si hoy escribo alguna clase, metodo, funcion, tipo, lo que sea, sin incluir la documentacion XML, me siento mal conmigo mismo (es similar a tu comentario cuando hablamos de esto). De hecho en muchas ocasiones me ha pasado que es dificil explicar que es lo que deberia hacer el metodo en cuestion, y es cuando detecto un error de diseño que debe ser refactorizado incluso antes de escribir codigo; tambien existe el caso de que no se me ocurre como escribir el codigo, pero al escribir la documentacion luego se hace mas facil la implementacion El efecto logrado es el siguiente: Código PHP:
Las ultimas vesiones de Delphi, en sus bibliotecas mas nuevas, escriben esta documentacion en linea y me ha ayudado mucho, por ejemplo la unidad REST.Json Código PHP:
|
Hola Agustín. Me da mucho gusto notar el gran interés que muestras. :)
Intentaré responder a todas tus inquietudes, comenzando por esta: Cita:
Saludos. Al González. |
Cita:
Cita:
Cita:
Cita:
Cita:
Cita:
|
Lamentablemente no puedo usar la biblioteca ni en Delphi 2010 ni 10.1 Berlin, debido a errores de compilacion
Voy a ver si puedo ir solucionandolos poco a poco para poder probar algo Saludos! |
Cita:
Hoy, con el repositorio, será más fácil que otros programadores se involucren con el proyecto. Te adelanto que el problema para compilar en Seattle y Berlin tiene que ver principalmente con cierta puerta trasera que permitía a una clase genérica acceder a los campos privados de su clase padre. Yo la utilicé preguntando primero si se trataba de un bug y no encontré respuesta. Pero para el lanzamiento de Seattle cerraron esa puerta (oficialmente se reconoció como defecto). Así que hay que cambiar código para que Delphi 10 y 10.1 logren compilar un par de clases ahora incorrectas. Saludos. :) |
En Berlín también está el problema de que los ayudantes ya no pueden acceder a la sección privada. Por ejemplo la unidad para Rtti de GHF no compila por eso. Y que yo sepa no hay un workaround limpio para solucionarlo. Las únicas alternativas que hay por ahí son horrendos hacks
Y mucho no puedo indagar porque con Starter no tengo código fuente |
Cita:
Trabajaré en la adaptación en cuanto me sea posible. :) Saludos. |
La franja horaria es GMT +2. Ahora son las 01:47:27. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi