Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   [GH Freebrary] (https://www.clubdelphi.com/foros/forumdisplay.php?f=54)
-   -   Adaptar GHF a distintas versiones de Delphi (https://www.clubdelphi.com/foros/showthread.php?t=82609)

Al González 23-03-2013 08:20:45

Adaptar GHF a distintas versiones de Delphi
 
Sin duda este va a ser uno de los temas fuertes. Aunque tengo a mi disposición un Delphi 2007 Professional y un XE2 Enterprise, no he hecho nada importante con ella después de Delphi 7.

En 2012 le integré componentes de acceso a datos que pertenecían a otra biblioteca de mi autoría, siendo, a mi parecer, los dos más importantes TghDataSource por sus innovaciones y universalidad, y TghClientDataSet por la variedad de pequeñas mejoras que ofrece sobre el nativo TClientDataSet. La de 2012 fue una reforma total, refiné muy diversos aspectos de GH Freebrary, y dejé fuera por falta de tiempo muchas funciones de anteriores versiones que todavía tendrían vigencia.

Así que tenemos ahora una biblioteca de funciones, clases y componentes para programar en Delphi, no muy grande pero sí útil, que trabaja aceptablemente con la versión 7 de ese entorno de desarrollo y que ha llegado el momento de adaptar a versiones más modernas del mismo.

Uno de los principales retos es sin duda el manejo del estándar Unicode de las versiones 2009+. No me parece que sea un reto demasiado difícil, pero sí algo a lo que hay que tenerle ciertas consideraciones, dada la variedad de lugares donde una biblioteca de propósito general usa cadenas de caracteres. Y claro está, hay también una larga serie de pequeñas y lógicas incompatibilidades por resolver al movernos entre distintas versiones de un lenguaje tan amplio y potente como Delphi.

Creo que lo más sano será ir adaptando la biblioteca por partes, para que los usuarios de otras versiones del compilador gocen de sus beneficios sin tener que esperar a que todo el paquete esté 100% convertido. Pero mi pregunta es, ¿cuáles son las partes más valiosas por las que vale la pena comenzar? Tengo mi opinión al respecto, mas opto por escuchar primero la de ustedes, quienes ya han tenido la amabilidad de echar un vistazo. Y segunda pregunta, ¿hacia cuáles versiones de Delphi?

Saludos.

Al González.

avmm2004 23-03-2013 18:34:17

Yo creo que respecto a que partes ... nadie mejor que tu conoce las funcionalidades y utilidades y respecto a que versiones, hacerlas compatibles con algo anterior a delphi xe2 creo que no merece la pena.

Ñuño Martínez 25-03-2013 13:42:08

Una preguntita. ¿Y Lázarus (o Free Pascal)? ¿Y Oxygene? O quizá sea pedir mucho.

La verdad es que no he visto cómo es la biblioteca.

Al González 27-03-2013 17:54:46

Cita:

Empezado por avmm2004 (Mensaje 457490)
[...] nadie mejor que tu conoce las funcionalidades y utilidades [...]

Hola Vicente. Aunque nada impide que otros colegas las conozcan también. :)

Cita:

Empezado por avmm2004 (Mensaje 457490)
[...] respecto a que versiones, hacerlas compatibles con algo anterior a delphi xe2 creo que no merece la pena.

En eso tengo mis dudas, pues la última encuesta no deja tan abajo a versiones como 2010 o XE. Pienso que eventualmente deberían cubrirse casi todas las versiones posteriores a la 7, pero comenzando por las más demandadas. ¿O cómo lo ves?

Cita:

Empezado por Ñuño Martínez (Mensaje 457567)
¿Y Lázarus (o Free Pascal)? ¿Y Oxygene? O quizá sea pedir mucho.

Hola Ñuño. Al ser un proyecto open source está abierto a ello:
Cita:

Empezado por Al González (Mensaje 457016)
[...] libre de ser utilizada en cualquier proyecto y de ser adaptada a cualquier otro lenguaje [...]

De momento nuestro amigo Rolphy Reyes estuvo revisando cuestiones de incompatibilidad para compilar en recientes versiones, un primer paso para darnos una idea de los obstáculos a salvar. Más adelante pondré aquí algo de lo que me ha compartido.

¿Más ideas de la ruta a seguir?

Al González 28-04-2013 06:12:02

Bueno, decir que hay cierto y modesto avance en el tema. Ya está disponible una primera y sencilla versión para Delphi XE2, la cual veremos de qué manera seguir ampliando. ;)

Concerniente a este primer avance sobre versiones modernas de Delphi, rescato uno de los varios apuntes que Rolphy Reyes hizo durante una navegación exploratoria:
Cita:

Empezado por Rolphy Reyes
He sacado tiempo y he realizado una instalación (sin realizar prueba) del componente TghDataSource en Delphi 2010.

Tuve algunos Warnings y Errors, ojala Al pueda echar un vistazo, en la unidad GHFRTL en su mayoría pude corregirlos solo un Warning no pude corregir en el siguiente método:
Código Delphi [-]
      Function ghStr (Const Value, MinLength :Integer;
        Const PadChr :Char = '0') :String; Overload;
      Var
        AResult :PChar Absolute Result;
        I :Integer;
      Begin
     
        /// Para XE2 utilizar System._Str2Ext
        Str (Value:MinLength, Result); //<<--------- Aqui
     
        If PadChr = ' ' Then
          Exit;
     
        I := 0;
     
        While AResult [i] = ' ' Do
        Begin
          AResult [i] := PadChr;  // Direct writing on the unique string Result
          Inc (I);
        End;
      End;
Buscando referencia encontré en el wiki de Embardero la descripción del método y la salvedad (nota) de que era posible que dicha advertencia podía surgir, pero no su arreglo.

A manera general, cree un Package llamado GHFreebraryCore donde añadí todas las unidades para su compilación mas no pude completar el proceso porque existen demasiadas incompatibilidades de tipo de datos en el ClientDataSet por lo que procedí a crear el paquete GHFCoreDataSource donde si pude realizar la compilación de manera satisfactoria.

[...]

La buena noticia de todo esto es que se puede instalar el componente TghDataSource tanto para Delphi 2010 como XE1, dentro de poco me pondré a compilar para Delphi XE2.

Sobre la función que Rolphy me señalaba, encontré que la advertencia del compilador "Implicit string cast from X to Y" no supone riesgo alguno, e incluso dentro de algunas unidades nativas de la RTL puede verse una directiva que la desactiva:
Código Delphi [-]
unit System.WideStrUtils;

{$WARN IMPLICIT_STRING_CAST OFF}
Así que, después de estudiar el tema, hice lo propio en la unidad GHFRTL:
Código Delphi [-]
Unit GHFRTL;  { RTL }

{$Warn Implicit_String_Cast Off}

Sigamos entonces, ya hay avance en XE2. ¿Qué paso damos ahora? ¿Seguimos ampliando en XE2 o primero llevamos ese componente a otras versiones?

Saludos.

Al González 18-05-2013 01:25:23

Dadas las grandes expectativas que está despertando Delphi XE4, pienso que terminaré incluyéndola en el grupo de versiones más atractivas y confiables (en mi opinión) posteriores a la 7: 2010, XE2 y ahora quizá XE4 también. Creo que dedicaré parte de mis esfuerzos a que dispongamos, en esas tres modernas versiones de Delphi, de las mismas funcionalidades que tiene GH Freebrary en Delphi 7.

De esta manera quedará cierta facilidad para, en caso de requerirse, podamos luego adaptar la biblioteca a Delphi 2009, XE o XE3, tomando de base alguna de las versiones adyacentes.

Sería estupendo hacer esto junto con otros programadores de perfil bibliotecario que se comprometan, y que se animen a explorar el código al grado de resultarles familiar con el tiempo, enriqueciendo las discusiones técnicas que llevamos a cabo en este foro.

Podemos quedarnos contemplando las flamantes listas de ranking, o podemos fortalecer a Delphi y su comunidad ofreciendo soluciones que faciliten un poco el quehacer del programador. :)

Casimiro Notevi 18-05-2013 01:43:45

Cita:

Empezado por Al González (Mensaje 460658)
Podemos quedarnos contemplando las flamantes listas de ranking, o podemos fortalecer a Delphi y su comunidad ofreciendo soluciones que faciliten un poco el quehacer del programador. :)

Buen punto :)

Al González 21-05-2013 17:36:56

Cita:

Empezado por Al González (Mensaje 460658)
Sería estupendo hacer esto junto con otros programadores de perfil bibliotecario que se comprometan, y que se animen a explorar el código al grado de resultarles familiar con el tiempo, enriqueciendo las discusiones técnicas que llevamos a cabo en este foro.

¿Alguna novedad? ¿Voluntarios? :confused: :(

Chris 21-05-2013 17:54:29

Cita:

Empezado por Al González (Mensaje 460861)
¿Alguna novedad? ¿Voluntarios? :confused: :(

Estimado compañero, sólo una pregunta, has considerado hospedar el código de tus componentes en Github o un repositorio público donde todos pueden ver y descargar el código?

Al González 21-05-2013 18:49:13

Cita:

Empezado por Chris (Mensaje 460863)
Estimado compañero, sólo una pregunta, has considerado hospedar el código de tus componentes en Github o un repositorio público donde todos pueden ver y descargar el código?

Hola Chris. Ya tengo el espacio reservado en BerliOS, pero de momento aquí todos pueden ver y descargar el código: http://terawiki.clubdelphi.com/Delph...H_Freebrary__/

Por ahora me resulta más práctico el FTP del club (que también es un repositorio público), pero, conforme crezca el proyecto, seguro llegará el momento de organizarlo mejor dentro de BerliOS. :)


La franja horaria es GMT +2. Ahora son las 12:54:03.

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