PDA

Ver la Versión Completa : Nueva GH Freebrary (open source) "beta"


Al González
20-12-2012, 00:59:19
Noviembre de 2016. Actualizo el enlace de su ubicación: https://github.com/algonzalez74/GHFreebrary

Saludos.

Hola.

Abro este hilo con la intención de ofrecer a toda la comunidad la más reciente versión de GH Freebrary, una biblioteca de clases y funciones para Delphi en la que he estado trabajando con mucho esmero por más de 10 años.

Hace tiempo me propuse ponerla "en forma" revisándola a fondo y dándole una licencia de software libre. Ya está lista una primera versión "beta" que me tomé la libertad de subir al FTP de Club Delphi.

Compila en Delphi 7 (teniendo éste sus debidas actualizaciones). Y podrá ser adaptada con menor o mayor grado de dificultad a otras versiones, dependiendo de qué se quiera utilizar de ella.

Sé que una veintena de colegas usaron alguna de las versiones anteriores (desde que se llamaba "Interfaz GH"). Ahora que la he revisado y liberado como open source, en lo personal me daría mucho gusto saber que este trabajo se aprovecha en mayor medida de lo que yo mismo lo hago en los ocasionales proyectos que desarrollo. Al quedar disponible para su explotación por parte de la Comunidad Delphi, espero ayude a muchos colegas a salvar pequeñas barreras de programación y a escribir menos código.

Asimismo, toda colaboración técnica para mejorar esta pequeña obra es bienvenida. De momento lo que podría hacer falta es que se ponga a prueba, contiene algunas clases de distintos propósitos y funciones para variedad de asuntos. Entre las clases podemos encontrar las que estaban en Magia Data, además de otras como las siguientes:

TghXMLDoc.- Para crear, leer y escribir documentos XML.

TghOpenXMLSpreadsheet, TghOpenXMLSpreadsheetBook y TghOpenXMLSpreadsheetStrs.- Para abrir y leer libros Excel de formato 2007 o superior (OpenXML).

TghFileVersionInfo.- Para consultar información de versión de un módulo ejecutable.

TghForm.- Para tenerla como clase padre de nuestros formularios (en lugar de TForm) y con ello usar varias funcionalidades extras.

TghObjList y TghObjListEx.- Como TObjectList pero con algunas características adicionales.

TghStrList.- Como TStringList pero con algunas características adicionales.

Sin olvidar las decenas de funciones de propósito general, la mayoría concentradas en la unidad GHFRTL.pas (que es como el "kernel" de esta nueva GH Freebrary).

No esperen encontrar en esta versión documentación más allá de los breves comentarios que están en el código fuente. Éste es fácil de leer para quien conoce el lenguaje Object Pascal, y no es difícil entender el propósito o utilidad de buena parte de los tipos, constantes, clases, métodos y funciones (sobre todo si dedicamos un par de minutos a probar alguno de estos elementos o a buscar los lugares donde es usado). De momento no instala componentes, así que basta con añadir al "Library Path" el directorio donde la descompriman y añadir al Uses la unidad que se quiera emplear.

Modestia aparte, siento que este puede ser un recurso muy valioso, y es normal que todos los que hemos creado algún componente público anhelemos que muchos colegas lo usen. En mi caso la motivación que hay detrás de ese anhelo es compartir algo que considero hecho con sumo cuidado y que puede servir a otros programadores Delphi. Con ello todas las horas de análisis, investigación, pruebas, depuración... habrán valido la pena. Es mi forma de contribuir al rescate de Delphi y de devolverle algo a la Comunidad.

Luego habrá versión para XE2 y demás, y espero entonces lleguemos a ser muchas manos dispuestas a ayudar. ¿Quién se apunta? :)

Enlace para descarga: [...]

Espero sus opiniones y críticas constructivas, y que generemos bastante retroalimentación a fin de mejorar este pequeño monstruo y hacerlo de gran provecho para todos.

Saludos.

Al González.

mamcx
20-12-2012, 01:02:31
Genial.

*Mas* genial seria si postearan el codigo en un repositiorio como github, google code o bitbucket ;)

Casimiro Notevi
20-12-2012, 01:08:37
Muchas gracias, Al, espero tener oportunidad de usarla, viniendo de ti es seguro que es de fiar, aunque sea beta.

ecfisa
20-12-2012, 01:21:11
Lo mismo digo, muchas gracias por el aporte :)

La semana entrante (que me libero de algunos compromisos), voy a probarla. ;)

Saludos. :)

Neftali [Germán.Estévez]
20-12-2012, 09:35:04
Muchas Gracias Al.
En su día ya tuve la oportunidad de "echarle un vistazo" y me pareció excelente.

^\||/^\||/^\||/

marcoszorrilla
20-12-2012, 19:19:59
Muchas Gracias Al.

Un Saludo

TiammatMX
20-12-2012, 23:07:28
...de ofrecer a toda la comunidad la más reciente versión de GH Freebrary, una biblioteca de clases y funciones para Delphi en la que he estado trabajando con mucho esmero por más de 10 años...

¡¡Mil felicitaciones, compadre Al!! Yo todavía tengo en uso las GH's y me son indispensables. Prometo utilizarlas, a ver qué puedo sugerirte añadir.

P. D.: ¡¡10 años!!, desde los felices días del foro..., ¡qué tiempos aquéllos, señor Don Simón!

nlsgarcia
21-12-2012, 00:09:30
Al González,


En mi caso la motivación que hay detrás de ese anhelo es compartir algo que considero hecho con sumo cuidado y que puede servir a otros programadores Delphi. Con ello todas las horas de análisis, investigación, pruebas, depuración... habrán valido la pena. Es mi forma de contribuir al rescate de Delphi y de devolverle algo a la Comunidad.

Mil gracias por tu aporte, estoy seguro que sera muy valioso para todos en el Club Delphi, Felicitaciones por tu tiempo, esfuerzo y dedicación :)

Nelson.

fjcg02
21-12-2012, 09:12:38
Hola Al,
después de una semana intensa de jornadas de hasta 25 horas seguidas hemos conseguido terminar la carga de datos en la que he estado enfrascado con bastante solvencia. Vaya 4 días que llevamos.

Ahora sí podré dedicarle tiempo a la biblioteca. Intentaré documentarla e incluir demostraciones de uso para ver cómo puedes aumentar el nº de personas que la utilice.

Un saludo somnoliento

Al González
22-12-2012, 00:55:16
Me siento sumamente agradecido por sus comentarios y apoyo. En verdad, muchas gracias por tener en cuenta este recurso y a su servidor. Entre todos vamos a mejorarlo y ayudar un poquito a Delphi. :)

*Mas* genial seria si postearan el codigo en un repositiorio como github, google code o bitbucket ;)
Hola Mario. Hace tiempo tengo una cuenta en el depósito BerliOs (http://developer.berlios.de/) y en breve publicaré ahí las actualizaciones. ;)

Yo todavía tengo en uso las GH's y me son indispensables. Prometo utilizarlas, a ver qué puedo sugerirte añadir.
Adelante Felipe, eso es precisamente lo que hace falta: usarla y señalar abiertamente lo que deba mejorarse o añadirse, aportar ideas e incluso código.

Intentaré documentarla e incluir demostraciones de uso para ver cómo puedes aumentar el nº de personas que la utilice.
¡Gracias Javier! Tómate tu tiempo, sabes bien que valoro lo que haces. Aunque no debemos pensar tanto en el número de usuarios, más bien en las soluciones que esta biblioteca pueda proporcionar.

Nuevamente gracias y esperemos que salga algo bueno al abrir esta caja de Pandora. :)

TiammatMX
28-12-2012, 14:36:00
...Adelante Felipe, eso es precisamente lo que hace falta: usarla y señalar abiertamente lo que deba mejorarse o añadirse, aportar ideas e incluso código...

¡¡Duda, maestro!! ¿Debo desinstalar las IGH antes, verdad? Creo que ya le dí en la torre a algo... :o

Al González
28-12-2012, 19:10:36
¿Debo desinstalar las IGH antes, verdad?
Aunque las IGH (Interfaz GH) son de hace ya algunos años, te recomiendo que las mantengas instaladas si es que las usas en algún proyecto. La nueva GH Freebrary no incluye todas las funciones de aquella ni tampoco conserva los mismos nombres (ahora todos los nombres son en inglés).

Yo tengo instaladas ambas por cierto proyecto que necesita de las dos y no he visto ningún problema. ¿Qué ocurre en tu caso?

Saludos desde Los Mochis, Sinaloa. :)

Al.

AGAG4
18-01-2013, 03:57:19
Saludos alberto, OTRO ZARANDEADO ?? :)

Ando investigando apenas como leer un archivo XML como si fuera un dataset ó un archivo .ini, serviria la liberia GHFXMLDoc.pas ??

Tienes ejemplos de como se usa ??

saludos....

Al González
18-01-2013, 05:07:20
Hola Alfredo, que gusto verte (ahora a distancia). ;)

Sí te sirve, pero no como data set. Es decir, no puedes simplemente asignarla a un TDataSource, ya que TghXMLDoc es para leer y escribir cualquier archivo XML, pero "a patín" (aunque no estaría mal añadirle algunos métodos para pasar en automático información a un TDataSet).

Sería bueno, si gustas, que adjuntaras aquí uno de los archivos que deseas leer (si es información sensible la puedes alterar) y me dices cuáles son los datos a extraer, para ponerte un ejemplo de cómo sería usando esta clase. :)

Abrir el archivo no tiene ciencia, pero para ubicar la información a leer cuenta con varios métodos que soportan expresiones XPath (FindNode, FindNodes, LocateNode, Node y Nodes).

Var
Doc :TghXMLDoc;
Begin
Doc := TghXMLDoc.Create ('C:\AGAG4\Docs\ReporteSemanal.xml');
// Al constructor también se le puede dar el texto XML directamente

Try
// Aquí leer o modificar el contenido del documento (objeto Doc)

Doc.Save; // Guardar los cambios en el mismo archivo
// O bien, guardar el documento con otro nombre:
Doc.Save ('C:\AGAG4\Docs\ReporteModificado.xml');
Finally
Doc.Free;
End;

Esta clase emplea una de las APIs de Windows, llamada MSXML. Con la clase intento que el trabajo del programador resulte más sencillo. :)

Ya sabes, si gustas pon por aquí una copia del documento o algo que se le parezca y con gusto hacemos el ejercicio de cómo leer el contenido.

Saludos.

Al.

P.D. El siguiente zarandeado lo invitaré yo. ^\||/

Al González
21-01-2013, 05:26:07
Acabo de subir una actualización. Respecto a la anterior, se incluyen unas 30 funciones adicionales, varias de ellas para manejo de cadenas de caracteres y conversión de valores numéricos a su expresión con letras. Otras son para operaciones matemáticas aplicando redondeo, además de funciones para mostrar mensajes de diálogo al usuario, entre diversas más.

La parte más relevante de esta actualización consiste en las unidades GHFXXX_Reg del directorio Registration, con las que ahora ya pueden instalarse los componentes en el IDE.

Incluí también dos archivos de texto: License.txt (la licencia, misma que está en el interior de los .pas) e Install.txt (las instrucciones de instalación).

Las clases de componentes instalables en la paleta son:
TghDataSource
TghClientDataSet
TghDataSetProvider
TghSQLConnection
TghFirebirdSQLConnection
TghSQLQuery
TghSavePoints

http://terawiki.clubdelphi.com/Delphi/Componentes-Funciones/?download=GHFreebrary_Delphi7_20130120.zip

Reitero mi agradecimiento a los amigos Delphi que han mostrado interés en probar y comentar sus puntos de vista sobre este trabajo, a fin de ayudar a perfeccionarlo.

Un saludo.

Al.

Neftali [Germán.Estévez]
21-01-2013, 09:27:36
Gracias de nuevo a tí, Al; Por compartir y mejorar esta librería.

Casimiro Notevi
21-01-2013, 10:20:21
Gracias... ^\||/

fjcg02
21-01-2013, 10:43:23
Gracias de nuevo a tí, Al; Por compartir y mejorar esta librería.

...biblioteca...

que si no Al se enfada ;)

Saludos

nlsgarcia
21-01-2013, 14:37:03
Al González,

Excelente ^\||/ :)

Nelson.

marcoszorrilla
21-01-2013, 15:04:24
Muchas gracias Al.

Un Saludo.

Al González
03-02-2013, 20:52:38
[...] como leer un archivo XML [...] Tienes ejemplos de como se usa ??

Hola amigos. He preparado un ejemplo muy sencillo de cómo leer un archivo XML con TghXMLDoc. Se extrae la información contenida en éste y se muestra en un TMemo y en un TDBGrid.

fjcg02 hizo el favor de proporcionarme un archivo XML que le interesaba poder leer, y entonces hice este pequeño programa:

http://terawiki.clubdelphi.com/Delphi/Ejemplos/Varios/?download=TghXMLDoc_EjemploLectura.zip (http://terawiki.clubdelphi.com/Delphi/Componentes-Funciones/__GH_Freebrary__/?download=TghXMLDoc_EjemploLectura.zip) (código fuente).

http://img221.imageshack.us/img221/550/tghxmldocejemplolectura.png (http://imageshack.us/photo/my-images/221/tghxmldocejemplolectura.png/)

En este caso el contenido del XML no es nada complejo, pero si tuvieran otros archivos que quisieran leer o escribir desde Delphi, podemos elaborar más ejemplos y con ello enriquecer el tema. :)

Espero resulte de utilidad.

Saludos.

Al González.

Casimiro Notevi
03-02-2013, 22:33:32
Muy interesante, gracias :)

fjcg02
03-02-2013, 22:35:18
Gracias Al, eres muy benévolo conmigo.

Realmente te pedí que me pasaras código de ejemplo porque era incapaz de extraer la información del fichero.

Para información de todos, el fichero lo he extraido de la carga de autonomías de OpenERP. En OpenERP existen muchos más ficheros xml tanto con datos como con la información referente a la generación de pantallas, ...

OpenERP es un erp de código abierto hecho en phyton. Tiene servidor de aplicación, servidor web y hasta la versión 6.* cliente "pesado".

Gracias de nuevo, estudiaré el código a fondo.

Un saludo

Al González
17-02-2013, 01:20:40
Saludos a todos.

Casimiro ha creado una carpeta dedicada (http://terawiki.clubdelphi.com/Delphi/Componentes-Funciones/__GH_Freebrary__/) para el proyecto. Con esto se facilita la descarga y colaboración a través de la aportación de ejemplos, documentos, sugerencias de cambios, etc.

Acabo de subir una nueva actualización que incluye diversas correcciones y mejoras, muchas de ellas estuvieron en la lista de pendientes algún tiempo. Creo que en pocos meses podría esta biblioteca dejar de ser beta. De hecho esto de ponerle "beta" fue en cierto modo una precaución de mi parte, pues son realmente los usuarios quienes deciden.

Me gustaría que integráramos un pequeño grupo de colaboradores para trabajar de forma estrecha y coordinada en las siguientes etapas del proyecto (etapas que el mismo grupo defina). Una de las cosas que me llama la atención es comenzar a adaptarla a XE2, sin embargo hay mucho qué hacer desde la actual versión, sobre todo en materia de pruebas, elaboración de ejemplos y documentación. Todas las ideas son bienvenidas. :)

Por lo pronto me anoto en la lista, ¿quién más se anima a formar parte de este grupo de trabajo?