Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-08-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Cita:
Debo comentarles que esa actualización no debe verse como un "milagro", ya que es algo que he hecho perfectamente con las versiones antiguas de Delphi y que por lo tanto, lo mínimo que esperaba (o espero, que quizás haya forma de hacerlo) es que Delphi 2007 lo haga.
Cómo qué. Qué es lo que has hecho exactamente. Cómo puede esperarse que Delphi renombre unidades así como así. Ignoro si hará lo propio con algunas unidades (cosa que pongo en duda), pero, no puede meterse en camisas de once varas por lo que he dicho antes: puede ser contraproducente.

Por otro lado la utilidad "convert.exe" parece una herramienta de conversión de formularios, que no me queda muy claro su uso, pero, no se trata de "migrar", sino de "convertir" formularios. Ya el compañero JXJ ha comentado lo que puede esperarse de la herramienta de migración de Delphi y no es poco, me parece.

Delphi retoca su código: añade propiedades a los formularios que él mismo ha de manejar, etc., pero, no puede retocar mi código a menos que yo esté dispuesto a que haya algo que vaya mal, que sea peor el remedio que la enfermedad. Obviamente las copias de seguridad están para algo, pero, aún así.

Es simple. Tú partes de una base: quiero que esto se automatize porque de lo contrario me llevará mucho tiempo. Yo parto de esta otra base: voy a migrar una aplicación de Delphi 5 a Delphi 2007, puede que me lleve tiempo, pero, casi prefiero que sea así. De hecho tal vez ya has perdido más tiempo en tratar de averiguar si se puede automatizar la tarea que en llevarla a cabo.

Tal vez me equivoque, pero, insisto: no se le pueden pedir milagros a Delphi en este sentido, simplemente, porque Delphi no puede meterse donde no le llaman. Delphi no puede renombrar alegremente unidades porque puede que yo tenga unidades que se llamen igual que algunas "obsoletas" y entonces mete la pata. Que Delphi migre su código (y gracias) que yo me encargaré de migrar el mío.

Además... ¿Renombrar unidades? ¿Esa es la tarea? Pues no sé a qué tanto miedo: Search and Replace y a tirar. Eso te renombra texto en archivos a la velocidad del rayo y con una eficiencia sorprendente. Y quien dice Search and Replace dice cualquier otro programa del estilo, que le llegue a los talones por lo menos, claro.
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 05-08-2007 a las 09:09:50.
Responder Con Cita
  #2  
Antiguo 05-08-2007
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Poder: 22
JXJ Va por buen camino
nada mas para agregar.
que exitosamente he logrado
compilar e instalar 12 componentes
que eran para la version de delphi 2.0

a delphi 2007, sin tocarles nada. el programa que los usa tambien
compila bien. en delphi 2007
sin tocarle nada. a los archivos dfm o a los archivos pas
Responder Con Cita
  #3  
Antiguo 06-08-2007
rolandoj rolandoj is offline
Miembro
 
Registrado: abr 2007
Posts: 395
Poder: 18
rolandoj Va por buen camino
En Delphi 2, los dfm eran en texto ?

Cita:
Empezado por JXJ Ver Mensaje
nada mas para agregar.
que exitosamente he logrado
compilar e instalar 12 componentes
que eran para la version de delphi 2.0

a delphi 2007, sin tocarles nada. el programa que los usa tambien
compila bien. en delphi 2007
sin tocarle nada. a los archivos dfm o a los archivos pas
Hola,

Ante todo gracias por la colaboración. Una pregunta y una observación:

Los dfm de la versión 2 son en texto ?. Lo pregunto porque dices que pudistes migrarlos sin cambios; pero los dfm de la versión 4 si los requieren porque son binarios. Yo la versión 2 la trabajé hace unos 10 años y no recuerdo ese detalle. Si también son binarios, como hicistes la conversión ?

La observación es respecto al caso que mencionas de poseer componentes de terceros que no tengan código fuente. En caso extremo una alternativa sería adaptarlos para convertirlos en controles ActiveX usando la versión de Delphi para la que fueron originalmente diseñados.
Responder Con Cita
  #4  
Antiguo 06-08-2007
rolandoj rolandoj is offline
Miembro
 
Registrado: abr 2007
Posts: 395
Poder: 18
rolandoj Va por buen camino
En gustos y colores

Cita:
Empezado por dec Ver Mensaje
Hola,



Cómo qué. Qué es lo que has hecho exactamente. Cómo puede esperarse que Delphi renombre unidades así como así. Ignoro si hará lo propio con algunas unidades (cosa que pongo en duda), pero, no puede meterse en camisas de once varas por lo que he dicho antes: puede ser contraproducente.

Por otro lado la utilidad "convert.exe" parece una herramienta de conversión de formularios, que no me queda muy claro su uso, pero, no se trata de "migrar", sino de "convertir" formularios. Ya el compañero JXJ ha comentado lo que puede esperarse de la herramienta de migración de Delphi y no es poco, me parece.

Delphi retoca su código: añade propiedades a los formularios que él mismo ha de manejar, etc., pero, no puede retocar mi código a menos que yo esté dispuesto a que haya algo que vaya mal, que sea peor el remedio que la enfermedad. Obviamente las copias de seguridad están para algo, pero, aún así.

Es simple. Tú partes de una base: quiero que esto se automatize porque de lo contrario me llevará mucho tiempo. Yo parto de esta otra base: voy a migrar una aplicación de Delphi 5 a Delphi 2007, puede que me lleve tiempo, pero, casi prefiero que sea así. De hecho tal vez ya has perdido más tiempo en tratar de averiguar si se puede automatizar la tarea que en llevarla a cabo.

Tal vez me equivoque, pero, insisto: no se le pueden pedir milagros a Delphi en este sentido, simplemente, porque Delphi no puede meterse donde no le llaman. Delphi no puede renombrar alegremente unidades porque puede que yo tenga unidades que se llamen igual que algunas "obsoletas" y entonces mete la pata. Que Delphi migre su código (y gracias) que yo me encargaré de migrar el mío.

Además... ¿Renombrar unidades? ¿Esa es la tarea? Pues no sé a qué tanto miedo: Search and Replace y a tirar. Eso te renombra texto en archivos a la velocidad del rayo y con una eficiencia sorprendente. Y quien dice Search and Replace dice cualquier otro programa del estilo, que le llegue a los talones por lo menos, claro.
Hola,

Ante todo gracias por el interés. Ya me es muy tarde; pero quiero hacer un primer comentario.

Respeto tú posición de querer hacer tú mismo el proceso de migración; pero no la comparto. Está bien que uno realice cierta revisión adicional; pero no encuentro lógico que deba hacerse todo un proceso que es perfectamente programable por parte de Delphi, razón por la cual, no la puedo considerar "milagro". Me explico más claramente :

El problema que mencionas de que una unidad propia puede tener el mismo nombre de una nueva de Delphi es posible que ocurra; pero, aparte que en la mayoría de los casos es improbable (una buena práctica de programación sugiere usar prefijos o sufijos propios para nuestras unidades) la simple compilación muestra eso. En cambio, se pierde más tiempo averiguando casos como el de la unidad DsgnIntf que en Delphi 2007 se dividió en dos. Delphi podría perfectamente reconocer la presencia de esa unidad y hacer automáticamente el reemplazo.

De hecho, hay que agregar que aparentemente esa funcionalidad tenían, o tienen, la intención de incluírla porque en las pruebas que he hecho, detectan un nombre obsoleto y preguntan si uno quiere actualizar; lo que pasa es que no lo hacen.

Y finalmente, si no podían, lo mínimo es que al detectar la situación, al menos lo remitieran a uno a una documentacíón adecuada.
Responder Con Cita
  #5  
Antiguo 06-08-2007
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Smile

¡Hola a todos!

Efectivamente Rolando, la única función de Convert.exe es convertir archivos .dfm binarios (formato antiguo) a .dfm de texto (formato nuevo). Pero debo aclarar que aún Delphi 7 (y supongo que también las versiones 2005+) reconoce y compila sin ningún problema los archivos .dfm de formato binario.

No es estrictamente necesario convertirlos a formato de texto para seguir utilizándolos en tus proyectos.

En cuanto a los paquetes, es sabido que no suele ser muy fácil maniobrar con ellos cuando tienen muchas dependencias. En mucho se debe a que los paquetes compilados son en realidad DLLs y adquieren su naturaleza en muchos aspectos. Cierto, siempre es posible hacer mejoras a los subsistemas de actualización, y quizá tu punto de vista debe ser escuchado en CodeGear, pero tampoco estamos desamparados.

En resumen, tu clamar es válido desde una óptica perfeccionista, y me uno a él pero sin perder el sueño.

Un abrazo actualizado.

Al González.
Responder Con Cita
  #6  
Antiguo 06-08-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Tú te mantienes en tu posición y yo me mantengo en la mía. Y hoy por hoy, no puedes hacer lo que dices desde Delphi. ¿Es un error? ¿Es un problema de Delphi? Tal vez. Sin embargo, yo prefiero que nadie toque mi código, que nadie toque el código sobre el que estoy al cargo, ni siquiera Delphi, puesto que puede hacer cambios que yo no espere y al cabo las cosas vayan peor incluso que sin su ayuda.

Te pondré un ejemplo. Delphi también detecta que un manejador del evento "OnClick" de cualquier componente ya ha dejado de existir, no sé si me explico. Sin embargo, si tú tienes codificado lo que sea en dicho manejador... aunque Delphi detecte que dicho manejador ya no se declara, y por tanto no se usa, ¿debe Delphi eliminar el código que has escrito tú?

La respuesta es que no. No debe hacerlo. Y de hecho no lo hace. El "nombre" de las unidades es un ejemplo más. En definitiva, Delphi no puede ni debe tocar el código que no le pertenece, porque los riesgos son altos. ¿O va Delphi a reescribir el código que yo escribí previamente y que echó a perder? No. Por lo tanto, que tenga cuidado con eso de tocar el código de uno.

Es mi opinión. Tú no compartes mi punto de vista, y yo no comparto el tuyo. Pero, lo cierto es que a día de hoy no puedes "automatizar" lo que dices, y es por eso que he dicho más de una vez "ponte manos a la obra"... acaso tardes menos en tratar de automatizar la tarea que en llevarla a cabo tú mismo. Sé que esto no es extrapolable a otros asuntos, pero, en el caso que nos ocupa puede ser la única solución.

Ahora bien, tómala o déjala. Tú decides. Delphi podrá, como mencionó el compañero JXJ añadir alguna propiedad a los formularios, podrá hacer cosas así, pero, no podrá quitar propiedades (aunque estén obsoletas, no podrá porque yo puedo estar usando dichas propiedades y él no sabe para qué), ni tampoco podrá renombrar determinadas unidades... simplemente no debe hacerlo y no lo hace.

Sin ir más lejos el otro día topé con un componente bastante interesante y que me interesaba particularmente. Dicho componente hacía uso de dos unidades que me llamaban la atención: "Wintyes" y "WinProc" (o algo así). Trabajo con Delphi 2007, o sea que este "actualizó" lo que pudo en dicho componente, pero, dejó dichas unidades tal cual.

Me pregunté qué demonios hacían ahí esas unidades... qué significaban... y bien, se trata de unidades antiguas y obsoletas que ya se sustituyeron por una sola unidad: Windows. ¿Quitó Delphi las unidades? No. ¿Las renombró? Tampoco. Lo que puede hacer Delphi y de hecho hace es que te permite seguir usando dichas unidades, no sé si internamente se incluye la unidad Windows o qué, pero, no quita del medio dichas unidades... que, aunque ya obsoletas, permiten al componente funcionar.

¿Podría hacer esto Delphi, como hize yo, que sustituí ambas unidades obsoletas por una sola unidad, Windows? No; Delphi no puede meterse en ese problema porque yo puedo estar usando algo de dichas unidades que no esté en la unidad Windows, por ejemplo. Y "WinTyes" y "WinProc" son unidades del propio Delphi (algo como "DesignInf"), pero Delphi no las tocó, y mejor que no lo hiciera.

Yo vi las unidades, comprendí que estaban obsoletas, las quité del medio y añadí la unidad Windows. Fui yo quien tuvo que hacerlo, porque Delphi no es lo suficientemente inteligente como para dilucidar si hago uso de dichas unidades hasta el punto de no poder ser sustituidas por otras, y un largo etcétera, supongo.

¿Que Delphi debería hacer cosas así? Yo no estoy seguro. Y, en todo caso, la realidad es que no lo hace. Tal vez, como yo supongo, existen motivos de peso para que esto sea así. De hecho las cosas son como son, y, aunque los desarrolladores de Delphi son humanos, lo cierto es que son muy buenos, y cuando a veces se te pasa por la cabeza "¡es un bug de Delphi, es un bug de Delphi!", generalmente (no siempre), es que algo está mal en tu código.

Quiero decir que a uno le puede parecer que Delphi debería hacer esto mejor que esto otro, y puede que lleve razón, pero, probablemente es un asunto que ya han tratado en Borland / CodeGear (siempre puedes contactar con sus desarrolladores a ver qué te dicen), y han visto de hacer las cosas de un determinado modo porque han estimado que es la mejor manera de hacer las cosas, hasta cierto punto y desde varios puntos de vista, supongo.
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 06-08-2007 a las 11:08:09.
Responder Con Cita
  #7  
Antiguo 06-08-2007
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Smile

¡Hola a todos!

Al igual que con Rolando, estoy de acuerdo con mucho de lo que dices Dec. Lo ideal serían unos wizards que fueran guiando al programador poco a poco en el proceso de conversión. Los dos extremos "poco buenos" (por las razones que ya se expusieron en este hilo) serían: un convertidor total automático y, el otro, que todo sea talacha. Delphi 7, por ejemplo, se encuentra más cerca del segundo extremo que del centro ideal, pero no como para abrumarse. Es cuestión de que CodeGear siga mejorando los asistentes de conversión.


Cita:
Empezado por dec Ver Mensaje
...Dicho componente hacía uso de dos unidades que me llamaban la atención: "Wintyes" y "WinProc" (o algo así). Trabajo con Delphi 2007, o sea que este "actualizó" lo que pudo en dicho componente, pero, dejó dichas unidades tal cual.

Me pregunté qué demonios hacían ahí esas unidades... qué significaban... y bien, se trata de unidades antiguas y obsoletas que ya se sustituyeron por una sola unidad: Windows. ¿Quitó Delphi las unidades? No. ¿Las renombró? Tampoco. Lo que puede hacer Delphi y de hecho hace es que te permite seguir usando dichas unidades, no sé si internamente se incluye la unidad Windows o qué, pero, no quita del medio dichas unidades... que, aunque ya obsoletas, permiten al componente funcionar....
Efectivamente, hace muchas versiones WinTypes y WinProcs desaparecieron para dar paso a la unidad Windows. Fue entonces que Borland, para ayudar a mantener compatibilidad hacia atrás (algo que sabe hacer muy bien), agregó la característica "Unit aliases" en las opciones del proyecto. Esa es la clave.


Me gustaría agregar que cambiar en automático alguna parte del código, puede traer consecuencias indeseadas al trabajar con unidades .pas que son utilizadas en dos o más versiones de Delphi, como suele suceder con algunas bibliotecas de múltiples propósitos. Por ello pienso que no debería automatizarse más allá de un wizard preguntón. Hay cosas que por falta de capacidad tecnológica (o inteligencia artificial), recaen en la, por ahora, entidad más apta para asumir responsabilidades: el humano.

Un abrazo asistido.

Al González.
Responder Con Cita
  #8  
Antiguo 06-08-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Cita:
Empezado por Al
Efectivamente, hace muchas versiones WinTypes y WinProcs desaparecieron para dar paso a la unidad Windows. Fue entonces que Borland, para ayudar a mantener compatibilidad hacia atrás (algo que sabe hacer muy bien), agregó la característica "Unit aliases" en las opciones del proyecto. Esa es la clave.
Gracias por la información. Y así es, parece un buen ejemplo de lo que Delphi puede hacer para ayudar en la migración de aplicaciones entre distintas versiones del entorno.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #9  
Antiguo 07-08-2007
rolandoj rolandoj is offline
Miembro
 
Registrado: abr 2007
Posts: 395
Poder: 18
rolandoj Va por buen camino
Smile Importantes aclaraciones

Hola a todos,
Bueno, la primera parte del proceso de migración; o sea convertir los fuentes para que se ejecuten en Delphi 2007, aunque con algunos que otros tropiezos adicionales, está casí lista; pero debo hacerles algunas aclaraciones útiles.

Siempre que he tenido que convertir de Delphi 4 a versiones superiores, el proceso había sido automático y fácil; pero ante la presión de las opiniones en contra, puesto que es la primera vez que tomo parte en un hilo de varios mensajes, consideré de elemental cortesía investigar en más detalle. y dado que hacía mucho tiempo que no había hecho una conversión, quise validar el
proceso, así que tomé los fuentes del caso y fuí a donde tenía disponible Delphi 5.

Efectivamente tal y como yo recordaba solo abrí el paquete de Delphi 4 en Delphi 5, este me preguntó que si quería actualizar, le dije que sí, y, a diferencia de Delphi 2007, Delphi 5 efectuó conversión.

Ahora bien, esta vez la analicé y esto es lo que encontré :

Delphi 5 renombra automáticamente los paquetes Delphi 4 a los nombres equivalentes en Delphi 5; es decir, esa versión si es capaz de renombrar.
Por otra parte, y como dice Al, Delphi 5 no convirtió a texto los Dfm; pero los interpretó automáticamente. Aquí podría decirse que cometí una ligereza, ya que como nunca había tenido problemas de conversión asumí que el Delphi cambiaba el formato de los Dfm y en realidad lo que hace es interpretar el formato.

Probé con Delphi 2007 sin convertir previamente los DFM, tan solo borrando los nombres de los paquetes propios de Delphi 4 de la clausula requires y también hizo la conversión correctamente; o sea, que como tambien dice Al, Convert.exe no es estrictamente necesario.

La conclusión que saco es que todo el problema se origina por un error en Delphi 2007, que a diferencia de versiones anteriores, no es capaz de renombrar correctamente (Y lo considero error porque versiones anteriores lo hace). Vale anotar que tengo hasta el Update 1; pero entiendo que hay un Update 2; quizás en este el problema se corrija.

Por otra parte, aunque me parece válido contar con un asistente para posibles inconsistencias, y muy lógico preguntar antes de renombrar para cubrir los casos de bibliotecas multiversiones y otros casos especiales, encuentro incluso muy fácil de programar, para un Ingeniero de desarrollo de CodeGear, lo de renombrar donde fuere necesario. Y es que tanto en paquetes como aplicaciones, cada unidad tiene su "path" completo, así que es fácil saber si es o no de CodeGear, y por tanto saber si puede o
no renombrarse; como también manejar los casos en que varias unidades se fundan en una, o una unidad se expanda a varias. Igualmente, dado que tienen la lista de todas las unidades, pueden saber si al renombrar una de ellos, el nuevo nombre (o nombres) entra en conflicto con un nombre existente en una unidad ajena, avisando en consecuencia.

En últimas, y como dije antes, en caso de error, al compilar es muy facil de determinar porque puede que una unidad nuestra tenga el mismo nombre de una nueva de Delphi; pero es casi imposible que tenga los mismos componentes y/o procedimientos.

Bueno, creo que con todo lo dicho en estos hilos se documenta el proceso básico y se ilustran las diversas posiciones acerca de la automatización. Solo me queda agradecerles a todos su apoyo, y pasar a a nuevos problemas de migración, donde espero contar con ustedes.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Migrar de Delphi 7 a Delphi 2007 Arturo_ Varios 2 13-07-2007 10:36:12
Codegear publica la ayuda de la VCL de delphi 2007 Win32 en PDF rruz Noticias 1 28-06-2007 03:26:17
Delphi 2007 para PDA jlrbotella Varios 4 07-03-2007 18:26:23
Lanzamiento de Delphi 2007 y Delphi para PHP en México con David I Andreano Noticias 13 27-02-2007 21:16:04
Lanzamiento de Delphi 2007 y Delphi para PHP en Bogotá - Colombia Andreano Noticias 9 25-02-2007 19:09:42


La franja horaria es GMT +2. Ahora son las 13:40:10.


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
Copyright 1996-2007 Club Delphi