Ir al contenido


Foto

Convertir un projecto D7 a uniGUI


  • Por favor identifícate para responder
13 respuestas en este tema

#1 Sergio

Sergio

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.092 mensajes
  • LocationMurcia, España

Escrito 18 febrero 2011 - 07:26

Llevo esta semana mirando posibles vias para convertir una aplicacion (muy grade y antigua) de Delphi 7 a uniGUI, y he pensado que una pequeña historia sobre las piedras con las que me voy tropezando podria ser de utilidad, asi que empiezo con el capitulo 1:

Delphi 7 no es compatible con uniGUI:
============================

La primera en la frente... Delphi 7 tiene unas librerias runtime (RTL) que parecen no estar a la altura de lo que uniGUI necesita, así que uniGUI no funciona ni va a funcionar nunca con Delphi 7.

Curiosamente ExtPascal y Raudus si admiten Delphi 7, pero uniGUI creo que les da 1000 patadas a las otras dos soluciones, asi que me niuego a conformarme con menos ahora que puedo elegir, ya que luego me pasare 10 o 15 años dando soporte y mejorando la aplicacion resultante.

¿A que Delphi me paso?

Lo normal sería pensar que lo mejor es pasarse a la ultima version, la XE, pero ojo, desde delphi 2009 incluido, el lenguaje podria decirse que es otro a niveles muy internos: Un string ya no son codigos ASCII, ahora son UTF-16, es deicr, UNICODE, lo cual esta muy bien para poder convertir tu aplicacion a chino, arabe, sanscrito o ruso cirilico... pero es un gran dolor de cabeza.

Un pChar ya no es un byte, o Lenght(string) ya NO ES el numero de letras que tiene ese texto (ni el espacio que ocupa), cada letra puede ocupar 2 ó 4 bytes, e incluso dos letras de 2 bytes pueden representar una sola letra en realidad (¨+o=ö), y esto afecta a los cimientos mismos de muchas rutinas de lectura/grabacion a fichero o a stream, funciones de busqueda de textos, comparaciones, ordenaciones alfabeticas... toda una pesadilla.

Asi que, tras hacer pruebas con Delphi XE, creo que nos decantaremos por Delphi 2007, que es el más moderno compatible con uniGUI y que no usa UNICODE.


Componentes antiguos:
=================

Si usamos componentes algo antiguillos, toca recompilarlos con el nuevo delphi, pero igual no tenemos los fuentes, o bien no terminan de compilar, así que igual hay que quitarselos de encima.

En mi caso, aun uso FreeIB para conectar con FireBird, pero hace años que se abandonaron, asi que no hay versiones actualizadas y tocaria recompilarlo todo en Delphi 2007, pero ni con esas me vale, ya que FreeIB no eran multihilo, y la aplicacion en modo web TIENE que ser multihilo, con lo que FreeIB tienen que desaparecer.

Otros componentes que usamos, aunque casi hemos eliminado toda referencia a ellos, son las RX. En la web de sourceforge tienen versiones que compilan incluso con delphi XE, asi que solo tengo que actualizarlas y listo.

El resto de componentes son propios y tenemos codigo fuente, asi que si los string siguen siendo strings, se recompila todo y *espero* que no hayan más problemas.


Componentes no soportados en uniGUI
============================

Otra preocupacion es ver que componentes podremos usar finalmente en uniGUI y cuales tendremos que eliminar/sustituir. Con la V1 de uniGUI deberiamos tener componentes de  sobra, pero alguno se perdera seguro, y antes habria que sustituirlos.

Pienso concretamente el los PopUpMenus, segun Farshad no podemos contar con ellos porque no hay equivalente en las ExtJS, asi que planeo sustituir todos estos PopUpMenu por pequeños botones en el sitio adecuado (junto al edit que tenia el PopUpMenu) del estilo de "+ opciones", y donde no tenga suficiente espacio, solo pondre el "+" (me buscare un iconcito facilmente reconocible, un + "de diseño).


Bueno, de momento por aqui es por donde voy, como veis, tengo mas dudas que soluciones. Los que ya hayais pasado por esto, vendria muy bien que aportaseis vuestra experiencia para los que vengan detras (yo incluido).
  • 0

#2 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.484 mensajes
  • LocationMallorca

Escrito 18 febrero 2011 - 12:32

Hola Sergio.

Yo no tuve el menor problema al pasar aplicaciones Delphi 2007 (no Unicode) a Delphi 2010 (Unicode). ¿ Tan a bajo nivel trabajas con las cadenas para preveer problemas ?, te aseguro de que yo no me encontré con ninguno (también utilizo algún que otro stream, etc. ...).

Todas las futuras versiones de Delphi serán Unicode, yo creo que si tenéis que cambiar a un Delphi moderno, al menos deberíais evaluar las versiones de Delphi Unicode, son el futuro de Delphi y es probable que pronto nos encontremos con que se hagan componentes que solo funcionen en las versiones Unicode.

Respecto a sustituir las FreeIB, no te recomiendo que cambies a FibPlus, parecen muertas y no se sacan mejoras ni se corrigen errores. Escoge otros componentes de acceso.

Saludos.
  • 0

#3 apicito

apicito

    Advanced Member

  • Miembros
  • PipPipPip
  • 104 mensajes

Escrito 19 febrero 2011 - 11:28

Yo estoy en tu mismo caso. Planeando la transformación de una aplicación de escritorio (D7+Ibobjects) a entorno web. Estoy probando Unigui con Zeos y funciona bien. Tengo pendiente probar IbObjects (La parte compatible con TDataset, osea IboQuery,...) cuando las pruebe ya diré algo.
  • 0

#4 Sergio

Sergio

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.092 mensajes
  • LocationMurcia, España

Escrito 23 febrero 2011 - 09:41

Marc:

Si que usamos cosas a bajo nivel (zipeado de streams, criptografia twofish, firmado digital de ficheros, xml utf-8, streams a bastante bajo nivel, DLL que conectan con exe de ms-dos, ficheros que mezclan txt ascii con bloques de codigo exadecimal "a pelo" tipo xml... vete tu a saber donde nos salta la liebre) y no queremos hacer todo el cambio de un golpe (delphi, componentes de FB, uniGUI y UNICODE), asi que como de todas formas nos obligan a comprar la version XE con licencia para instalar las versiones que queramos, vamos a tirar con D2007 de momento, y luego, con un pluging que hay que te permite compilar desde D2007 con el compilador de D2009 miraremos a ver como se comporta lo de UNICODE.

La utilidad es CompilerPlugin2007 de la misma pagina que DelphiSpeedUp (usad google).


apicito:

FIBPlus las hemos descartado, a la larga tendremos los mismos problemas que con FreeIB, asi que queremos probar con UIB, pero no traen DataSet, seguramente le añadamos "a mano" lo poco que usamos del DataSet -solo se usa en 1 punto, gracias a la herencia visual- y, si van, nos quedemos con esas (ya las usamos en un servidor web "embebido" en la apliacion, mira tu que casualidad) que son multihilo sin problemas.

Los IBObjects, la verdad, ni acordarme de que existen! ¿Como estan actualmente? Son libres, de pago, están actualizados... si todo es bueno y traen un DataSet, igual es mejor que UIB.

IMPORTANTE: Admiten multithread? En el modo web es necesario que lo admitan (FreeIB no lo admiten, una pena porque los componentes antiguos me han compilado perfectamente en D2007).
  • 0

#5 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.484 mensajes
  • LocationMallorca

Escrito 23 febrero 2011 - 10:00

Hola Sergio

Marc:

Si que usamos cosas a bajo nivel (zipeado de streams, criptografia twofish, firmado digital de ficheros, xml utf-8, streams a bastante bajo nivel, DLL que conectan con exe de ms-dos, ficheros que mezclan txt ascii con bloques de codigo exadecimal "a pelo" tipo xml... vete tu a saber donde nos salta la liebre) y no queremos hacer todo el cambio de un golpe (delphi, componentes de FB, uniGUI y UNICODE), asi que como de todas formas nos obligan a comprar la version XE con licencia para instalar las versiones que queramos, vamos a tirar con D2007 de momento, y luego, con un pluging que hay que te permite compilar desde D2007 con el compilador de D2009 miraremos a ver como se comporta lo de UNICODE.

La utilidad es CompilerPlugin2007 de la misma pagina que DelphiSpeedUp (usad google).


La verdad es que yo instalaría en otro equipo, o en una máquina virtual, una Trial o una copia "pirata" de Delphi XE. Ya que no es para utilizar en aplicaciones finales, sino solo para "evaluar" los problemas que os podáis encontrar. Para ello, parece mejor evaluarlo en un entorno Delphi XE completo, con sus componentes específicos, etc. ..., que no solo con el compilador. Aunque alegal, no creo que eso sea reprobable (puesto que no sacáis beneficio).

apicito:

FIBPlus las hemos descartado, a la larga tendremos los mismos problemas que con FreeIB, asi que queremos probar con UIB, pero no traen DataSet, seguramente le añadamos "a mano" lo poco que usamos del DataSet -solo se usa en 1 punto, gracias a la herencia visual- y, si van, nos quedemos con esas (ya las usamos en un servidor web "embebido" en la apliacion, mira tu que casualidad) que son multihilo sin problemas.

Los IBObjects, la verdad, ni acordarme de que existen! ¿Como estan actualmente? Son libres, de pago, están actualizados... si todo es bueno y traen un DataSet, igual es mejor que UIB.

IMPORTANTE: Admiten multithread? En el modo web es necesario que lo admitan (FreeIB no lo admiten, una pena porque los componentes antiguos me han compilado perfectamente en D2007).


Creo que hoy en día los mejores componentes (y mejor soporte) que hay en el mercado para el acceso a Firebird son IBDAC.

http://www.devart.com/ibdac/

Aunque personalmente creo que voy a volver a utilizar dbExpress, como hacía en Delphi 6.

Saludos.
  • 0

#6 apicito

apicito

    Advanced Member

  • Miembros
  • PipPipPip
  • 104 mensajes

Escrito 24 febrero 2011 - 01:16

apicito:
FIBPlus las hemos descartado

No estoy utilizando FIBPlus sino Zeos aunque a nivel de futuro deben ser algo parecido.
Las IBDAC que propone marc tienen muy buena pinta.
Con respecto a los IbObjects son los que utilizo actualmente en mi aplicaicón (D7+Ibo) y sé que tienen nuevas versiones para D2010. De estos componentes solo utilizo los compatibles con TDataset (http://www.ibobjects.com/ibotdata.html) y no los nativos de IBobjects, ya que estos son para utilizar con los controles (DbEdit, DbCombo...) propios. Con unigui solo podrías utilizar estos ya que los otros no son compatibles con los widgets de unigui. Desconozco lo del multithreading.
Quiero comentarte tambien que cuando digo que estoy pensando en pasar la aplicación a web me refiero a que mi intención es escribirla de nuevo. Incluso no tengo clara aún la tecnología que utilizaré, tambien estoy mirando Php con Symfony que al igual que unigui entá en proceso de sacar la versión 2 pero hay que esperar unos meses.
  • 0

#7 Sergio

Sergio

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.092 mensajes
  • LocationMurcia, España

Escrito 24 febrero 2011 - 03:04

Marc, por supuesto que tengo una maquina virtual y en ella ando probando todas las combinaciones, tocar mi entorno de desarrollo "real" es impensable, y llegado el momento abririamos una rama y en ella integrariamos todo (usamos Git para las versiones, os lo recomiendo por encima casi de delphi, una passada).

En esa maquina tengo una foto del Delphi2009, pero no consegui ni compilar los componentes mas basicos que usamos, empezo con tipos de Char no compatibles y esas cosas, y la verdad es que me dio un yuyu asi de entrada (son casi todos componenetes o trozos de codigo nuestros o 2copiados y adaptados", tenemos solo el codigo y no hay soporte, es que empezamos con Delphi en 1995, tal cual salio del horno).

En la misma maquina virtual, puse luego un D2007 "pirata" y llevo varios dias actualizando componentes, compilando, trucando cosillas, y ayer consegui instalar todo lo que usamos, y sin problema,s eso si, de algunos componentes no hay verison para XE, asi que descartado al 100% de momento.

Esta mañana he compilado el primer programa "real", un visor de nuestor formato grafico que no usa cosas raras como macros en pascal interpretado, firmas difitales, etc (pero si que usa ZIP y UNZIP y los algoritmos de encriptacion), asi que D2007 de momento es el elegido, por goleada.

Respecto de los componentes, que me decis de Seos ese? no lo conozco en absoluto y una referencia tipo "ni se te ocurra" o "igual desaparecen mañana " me ayudaria.
  • 0

#8 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.484 mensajes
  • LocationMallorca

Escrito 24 febrero 2011 - 03:09

Respecto de los componentes, que me decis de Seos ese? no lo conozco en absoluto y una referencia tipo "ni se te ocurra" o "igual desaparecen mañana " me ayudaria.


Son componentes open source que hace mucho tiempo que están en el mercado, por lo que tienen una comunidad detrás que como mínimo lo actualiza a las nuevas versiones de Delphi.

No los he probado, pero he leído que están bastante bien.

Su inconveniente es que son componentes genéricos (es decir, están diseñados para acceder igualmente a Firebird, Interbase, SQL Server, Oracle, MySQL, etc. ...), y para utilizar componentes genéricos (que siempre llevan el mínimo común denominador de todas las plataformas), personalmente prefiero quedarme con dbExpress.

Saludos.
  • 0

#9 apicito

apicito

    Advanced Member

  • Miembros
  • PipPipPip
  • 104 mensajes

Escrito 24 febrero 2011 - 03:38

Respecto de los componentes, que me decis de Seos ese? no lo conozco en absoluto y una referencia tipo "ni se te ocurra" o "igual desaparecen mañana " me ayudaria.

Poco puedo decirte de ellos, es la primera vez que los utilizo y esto solo para hacer las pruebas con unigui. Para ello estoy utilizando D2010 + Zeos7. Funcionan bien en lo que yo los utilizo.
  • 0

#10 Bertifox

Bertifox

    Advanced Member

  • Miembros
  • PipPipPip
  • 109 mensajes
  • LocationLa Serena-Chile

Escrito 03 marzo 2011 - 09:38

Hola foristas, acabo de descubrir la existencia de uniGUI, me parece un proyecto grandioso. es lo que necesitaba para llevar adelante mis viejos y nuevos proyectos como aplicaciones web, les cuento que comence con Delphi 2.0 (90's) y actualmente tengo todas mis aplicaciones en D2007 mas Zeos 6.x, RXlib 2.7x, QuickReport 4.x. Mi duda antes de iniciarme en uniGUI, es si este es compatible con los componentes mencionados. Si alguien ya tiene alguna experiencia para comentar.

Saludos
  • 0

#11 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.484 mensajes
  • LocationMallorca

Escrito 03 marzo 2011 - 11:08

Hola.

Hola foristas, acabo de descubrir la existencia de uniGUI, me parece un proyecto grandioso. es lo que necesitaba para llevar adelante mis viejos y nuevos proyectos como aplicaciones web, les cuento que comence con Delphi 2.0 (90's) y actualmente tengo todas mis aplicaciones en D2007 mas Zeos 6.x, RXlib 2.7x, QuickReport 4.x. Mi duda antes de iniciarme en uniGUI, es si este es compatible con los componentes mencionados. Si alguien ya tiene alguna experiencia para comentar.


Delphi 2007 - Sí
ZeosLib - Sí
RxLib - Sí para las librerías de funciones y componentes no visuales
QuickReport 4 - Sí

Respecto a las QuickReport, como estos son componentes visuales, no se pueden usar directamente para mostrar Reports en aplicaciones UniGUI. Pero hay una forma de sortear el problema. Se crea un visor QuickReport invisible y se exporta el Report formado a PDF, y eso es lo que se le envía al usuario de la aplicación. De esta forma se puede seguir usando QuickReport y se pueden aprovechar todos los Reports ya definidos, sin que tengamos un visor en el framework UniGUI (yo he usado sin problemas algo parecido con FastReport y VCL for the Web / Intraweb).

Saludos.
  • 0

#12 Bertifox

Bertifox

    Advanced Member

  • Miembros
  • PipPipPip
  • 109 mensajes
  • LocationLa Serena-Chile

Escrito 03 marzo 2011 - 11:27

Hola Marc, se agradece tus comentarios los he leido todos, bueno tendre que cambiar los RxLib visuales por los standard de Delphi, respecto de QR obtener los reportes en PDF es muy conveniente, veo que no hay mayores dificultades. Otra duda que tipo de salida se obtiene al compilar?. En aplicaciones win32 como todos saben es .exe y como se integra a sitio web.


  • 0

#13 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.484 mensajes
  • LocationMallorca

Escrito 03 marzo 2011 - 01:07

Hola.

Hola Marc, se agradece tus comentarios los he leido todos, bueno tendre que cambiar los RxLib visuales por los standard de Delphi, respecto de QR obtener los reportes en PDF es muy conveniente, veo que no hay mayores dificultades. Otra duda que tipo de salida se obtiene al compilar?. En aplicaciones win32 como todos saben es .exe y como se integra a sitio web.


En realidad los componentes visuales RxLib que utilices, no los tienes que sustituir por los estándar de Delphi, sino por el equivalente de UniGUI. En lugar de usar un TEdit, TComboBox, ..., tienes que usar una TwebEdit, TwebComboBox, ...

Respecto al resultado compilado, tienes varias opciones.

* Puedes obtener una aplicación .exe. En este caso funciona como una aplicación normal y corriente, sin que se vea ninguna diferencia respecto a cualquier otra aplicación Delphi. Solo que una vez en marca, incorpora también su propio servidor Web. De manera que si conectas con un navegador entonces ves la aplicación como páginas HTML con Javascript.

* Puedes obtener un Servicio. Es otro .exe (creo), que puedes instalar como servicio del sistema, de forma que arranque automáticamente con el equipo. Una vez en marcha incorpora su propio servidor Web (al igual que en el caso anterior) para que puedas acceder a la aplicación con un navegador.

* Puedes compilarlo como un módulo Apache o IIS. En este caso creo que obtienes una dll, que puedes registrar en un servidor Apache o Internet Information Server, para que ese servidor pueda proporcionar la aplicación a quien se conecte.

Saludos.
  • 0

#14 asapltda

asapltda

    Newbie

  • Miembros
  • Pip
  • 9 mensajes

Escrito 22 agosto 2011 - 07:04

Hola ,
He estado haciendo mis primeras pruebas con UNIGUI y para leer las bases de datos uso sql-direct SQL-DIRECT.COM y no he tenido problemas con unigui, con estos componentes uso delhi profesional y puedo leer practicamente todas las bases de datos comerciales comunes 
  • 0




IP.Board spam blocked by CleanTalk.