Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-08-2007
rolandoj rolandoj is offline
Miembro
 
Registrado: abr 2007
Posts: 395
Poder: 17
rolandoj Va por buen camino
Angry Ayuda para migrar a Delphi 2007

Hola,

Estoy intentando migrar una aplicación a Delphi 2007. Abró el programa con Delphi 2007 y este detecta correctamente que los fuentes son viejos (Delphi 4) y me pregunta si deseo actualizar a Delphi 2007. Por supuesto, le digo que sí; pero no los actualiza. Alguién sabe como puede hacerse esto automáticamente ?. Es un error en Delphi 2007 ?. Ya probé a reinstalar e incluso instalé el Update 1; pero nada que funciona.

Me es crítico que esto se pueda hacer automáticamente porque renombrar manualmente las unidades referenciadas en cada unidad fuente tomaría demasiado tiempo puesto que la aplicación tiene muchísimas unidades.

Muchas gracias por la ayuda que puedan prestarme.
Responder Con Cita
  #2  
Antiguo 04-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,

Milagros no pueden hacerse. No sé exactamente qué hace el "actualizador" de Delphi 2007, pero, no le veo renombrando unidades o algo así, puesto que además podría resultar contraproducente. Ahora bien, si se trata de renombrar unidades, no tienes que hacerlo "a mano".

Existen programas como Search and Replace que te permiten buscar y reemplazar texto en un conjunto de archivos.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 05-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: 29
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 O con GReplace

¡Hola a todos!

Rolando:

El programa que te sugiere David parece muy completo, no lo conocía. Para casos como el tuyo suelo emplear la utilería Global Search & Replace (archivo GReplace.zip) de Objective Software Technology. Creo que cualquiera de las dos herramientas podría serte útil.

No dejes de comentarnos cómo te fue.

Un abrazo reemplazado.

Al González.
Responder Con Cita
  #4  
Antiguo 05-08-2007
rolandoj rolandoj is offline
Miembro
 
Registrado: abr 2007
Posts: 395
Poder: 17
rolandoj Va por buen camino
Cita:
Empezado por Al González Ver Mensaje
¡Hola a todos!

Rolando:

El programa que te sugiere David parece muy completo, no lo conocía. Para casos como el tuyo suelo emplear la utilería Global Search & Replace (archivo GReplace.zip) de Objective Software Technology. Creo que cualquiera de las dos herramientas podría serte útil.

No dejes de comentarnos cómo te fue.

Un abrazo reemplazado.

Al González.
Gracias a ambos por las respuestas.

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.

Agradezco el dato de los programas y creo que esas y otras utilidades de esos sitios me pueden ser utiles; pero ocurre lo siguiente:

Los programas de busqueda y reemplazo de texto no son suficientes porque los DFM de Delphi 4, a diferencia de lo que ocurre en versiones posteriores, son en formato binario; ello implica que para convertirlos manualmente toca abrirlos en Delphi 4 como Dfm, seleccionar y copiar el texto, que Delphi muestra, a otro archivo que se salve entonces como dfm (que quede claro, esa versión en texto solo la muestra Delphi 4, si ustedes intentan abrir los dfm de esa versión con un editor de texto no podrán manipularlos).
otra razón más para esperar que exista una herramienta de migración. Y a eso agreguenle que se requiere un período de análisis para ver que unidades pudieron haber sido renombrados o su funcionalidad dividida.

Aquí cabe una crítica constructiva a Delphi 2007:

Desde el punto de productividad es un punto crítico para alguién que como yo tiene muchísimo código desarrollado y bastante carga de trabajo. Dedicarse uno a averiguar como hacer cosas que deberían hacerse automáticamente de manera intuitiva, puesto que no requieren de lógica, no es precisamente la mejor forma de atraer a los programadores con experiencia. Creo que no sobra resaltar, dado que ambos, tanto Delphi 4 como Delphi 2007, los compré legalmente y además, debido a mi influencia otras versiones de Delphi fueron compradas en compañias que asesoro, que siendo una herramienta tan costos debería brindar facilidades de actualización a sus usuarios antiguos.

En últimas, una solución podría ser pasarlos primero a Delphi 5, si es que Delphi 2007 es capaz de hacer la conversión automática a partir de ahí (alguién puede confirmarlo?); pero no es la solución lógica.
Responder Con Cita
  #5  
Antiguo 05-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: 29
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 Convert.exe

¡Hola a todos!

Cita:
Empezado por rolandoj Ver Mensaje
...los DFM de Delphi 4, a diferencia de lo que ocurre en versiones posteriores, son en formato binario; ello implica que para convertirlos manualmente toca abrirlos en Delphi 4 como Dfm, seleccionar y copiar el texto, que Delphi muestra, a otro archivo que se salve entonces como dfm...
Mira, para eso Delphi viene con una utilería llamada Convert.exe (carpeta Bin en Delphi 7).

Actualmente, tengo un archivo Convert.bat con el siguiente contenido:
Código:
@Echo Off
Echo Conversi¢n de archivos Delphi .dfm de formato
Echo binario (anterior) a formato de texto (nuevo).
Pause
"C:\Archivos de programa\Borland\Delphi7\Bin\convert.exe" -i -s -t *.dfm
Pause
Sólo colocas el .bat en tu carpeta de fuentes, lo ejecutas y listo.

Lo sé, esto parece un remedio tipo Linux, pero es una mucho mejor alternativa que abrir uno por uno los .dfm.

Por otra parte, comparto tu opinión acerca de que Delphi debería contar con mejores herramientas de actualización de fuentes. Aunque siempre es aconsejable que el desarrollador eche un ojo a lo que está convirtiendo en los .pas. No vaya a ser que algo de lo convertido tenga otro significado en el ámbito donde está la referencia (y esto aplica a cualquier lenguaje; siempre es bueno asegurarse).

Un santo remedio.

Al González.
Responder Con Cita
  #6  
Antiguo 05-08-2007
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Poder: 21
JXJ Va por buen camino
Delphi2007 al actualizar lo mas importante que hace es crear un
archivo xml con extension
.dproj

agrega algunas propiedades a los archivos dfm
para que sean compatibles con los nuevos eventos y cositas de esas

si usas componentes de terceros. yo he probado que casi todos
se pasan de delphi 6 , delphi 7, 2005, 2006
sin ningun cambio al codigo fuente,
los menos un cambio a los archivos *.inc donde indican que version de delphi
usar.
elimina todos los dcu. y demas archivos no fuente, no necesarios si tienes los codigos fuente de esos componentes
se podran regenerar.

yo tube un desagradable problema con delphi 2007
mas que nada por mi culpa de andar revolviendo delphi2007 sin update y
luego instalar y desinstalar mal. el update2

pero todo se arreglo despues de limpiar el registro. y eliminar las dcu
Responder Con Cita
  #7  
Antiguo 05-08-2007
rolandoj rolandoj is offline
Miembro
 
Registrado: abr 2007
Posts: 395
Poder: 17
rolandoj Va por buen camino
Muchas gracias.

Cita:
Empezado por Al González Ver Mensaje
¡Hola a todos!


Mira, para eso Delphi viene con una utilería llamada Convert.exe (carpeta Bin en Delphi 7).

Actualmente, tengo un archivo Convert.bat con el siguiente contenido:
Código:
@Echo Off
Echo Conversi¢n de archivos Delphi .dfm de formato
Echo binario (anterior) a formato de texto (nuevo).
Pause
"C:\Archivos de programa\Borland\Delphi7\Bin\convert.exe" -i -s -t *.dfm
Pause
Sólo colocas el .bat en tu carpeta de fuentes, lo ejecutas y listo.

Lo sé, esto parece un remedio tipo Linux, pero es una mucho mejor alternativa que abrir uno por uno los .dfm.

Por otra parte, comparto tu opinión acerca de que Delphi debería contar con mejores herramientas de actualización de fuentes. Aunque siempre es aconsejable que el desarrollador eche un ojo a lo que está convirtiendo en los .pas. No vaya a ser que algo de lo convertido tenga otro significado en el ámbito donde está la referencia (y esto aplica a cualquier lenguaje; siempre es bueno asegurarse).

Un santo remedio.

Al González.
Muchas gracias por el dato. Lo probé y parece que funciona bien. Debo hacer más pruebas porque ahora estoy con mi plataforma principal (Windows 2000 con Delphi 4) y el Delphi 2007 lo tengo en mi segundo disco con Windows XP. Máñana te comento como me fué.

En cuanto a lo de que el desarrollador debe hechar una mirada, estoy totalmente de acuerdo y lo hago siempre; aunque, salvo por alguno que otro detalle aislado, muy fácil de corregir, nunca había tenido problemas hasta ahora. De todas formas, después de la conversión automática esa es una revisión muy rápida que no afecta la productividad

Por otra parte esta solución confirma la mala opinión que hasta ahora tengo de la versión 2007. Supongo que te tomó algún tiempo encontrar esa solución y agradezco que la compartas; aunque algo tan rebuscado lo que demuestra es la falta de cuidado que la gente de Code Gear tiene por sus clientes antiguos ya que la pregunta es : Porque no la incorporaron automáticamente como ocurre en versiones previas ?

Tengo otros problemitas con esta versión; mañana les comento
Responder Con Cita
  #8  
Antiguo 05-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: 29
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!

Cita:
Empezado por rolandoj Ver Mensaje
...esta solución confirma la mala opinión que hasta ahora tengo de la versión 2007. Supongo que te tomó algún tiempo encontrar esa solución y agradezco que la compartas; aunque algo tan rebuscado lo que demuestra es la falta de cuidado que la gente de Code Gear tiene por sus clientes antiguos ya que la pregunta es : Porque no la incorporaron automáticamente como ocurre en versiones previas ?...
Desconozco si la versión 2007 tiene alguna herramienta para "conversión automática total de proyectos antiguos". Actualmente uso Delphi 7, pero comencé a utilizar Convert.exe en alguna versión anterior porque tuve un problema similar al tuyo.

Fíjate que esto del cuidado que CodeGear tiene (o dejó de tener) con la comunidad de usuarios de versiones "Borland" es un tema muy importante para el fortalecimiento de Delphi en el futuro. Hay dos mercados Delphi para CodeGear: Delphi 7- (versiones 7 y anteriores) y Delphi 2005+ (versiones 2005 y posteriores). Debemos hacerles ver que deben revalorar al primero. Las estadísticas no mienten.

Un abrazo estadístico.

Al González.
Responder Con Cita
  #9  
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 10:09:50.
Responder Con Cita
  #10  
Antiguo 05-08-2007
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Poder: 21
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
  #11  
Antiguo 06-08-2007
rolandoj rolandoj is offline
Miembro
 
Registrado: abr 2007
Posts: 395
Poder: 17
rolandoj Va por buen camino
Cita:
Empezado por Al González Ver Mensaje
¡Hola a todos!


Desconozco si la versión 2007 tiene alguna herramienta para "conversión automática total de proyectos antiguos". Actualmente uso Delphi 7, pero comencé a utilizar Convert.exe en alguna versión anterior porque tuve un problema similar al tuyo.

Fíjate que esto del cuidado que CodeGear tiene (o dejó de tener) con la comunidad de usuarios de versiones "Borland" es un tema muy importante para el fortalecimiento de Delphi en el futuro. Hay dos mercados Delphi para CodeGear: Delphi 7- (versiones 7 y anteriores) y Delphi 2005+ (versiones 2005 y posteriores). Debemos hacerles ver que deben revalorar al primero. Las estadísticas no mienten.

Un abrazo estadístico.

Al González.
Hola Al,

Te agradezco toda la colaboración y te prometo que el martes voy a sacar tiempo para hacer algunos comentarios al respecto en la sección de estadísticas.

Ahora quiero contarte acerca del avance del proceso de migración.

Convert trabaja bien en los .dfm; pero al parecer no hace nada más. Probé con los .pas y los .dpk y nada. De todas formas, a prueba y error descubrí algunas cosas que hacen que la migración, por lo menos con los paquetes, haya trabajado aparentemente bien (al menos compilaron). No es lo ideal; pero trabaja.

Mi primer paso ha sido migrar mis paquetes, ya que estos incluyen más de 100 componentes. Para ello lo que hice fué experimentar con la clausula "requires". Descubri que si los nombres de los paquetes requeridos son los de Delphi 4, o los de Delphi 5, no hace nada; pero si son de Delphi 6 o Delphi 7, intenta compilar; fallando al no encontrarlos. Después se me ocurrió borrar la clausula requires y funcionó !!; es decir, el mismo Delphi se encargo de determinar los paquetes requeridos para la versión 2007 e insertalos en el dpk.

En conclusión, el método para migrar un p<aquete a Delphi 2007 consiste en ejecutar primero convert sobre los dfm y luego, borrar del paquete los nombres de los paquetes propios de Delphi, que estén en la clausula requires.

Sin embargo, al parecer hay excepciones porque el paquete DesignIDE tuve que incluírlo manualmente.

Mañana probaré con las aplicaciones como tal; pero razonablemente ya no debería haber mayores problemas.
Responder Con Cita
  #12  
Antiguo 06-08-2007
rolandoj rolandoj is offline
Miembro
 
Registrado: abr 2007
Posts: 395
Poder: 17
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
  #13  
Antiguo 06-08-2007
rolandoj rolandoj is offline
Miembro
 
Registrado: abr 2007
Posts: 395
Poder: 17
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
  #14  
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: 29
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
  #15  
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 12:08:09.
Responder Con Cita
  #16  
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: 29
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
  #17  
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
  #18  
Antiguo 07-08-2007
rolandoj rolandoj is offline
Miembro
 
Registrado: abr 2007
Posts: 395
Poder: 17
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
  #19  
Antiguo 07-08-2007
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Poder: 21
JXJ Va por buen camino
los componentes estaban unos en formato de texto para los dfm
y otros en binario. por algunos que traian dfm para los controles de diseño

el programa, si estaba con todos los dfm en formato binario.
y en la forma dentro de delphi
los converti a formato de texto.

con un click con el boton derecho sobre la forma,
del menu eleji, Text dfm.. o algo asi. hasta abajo del menu..
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 11:36:12
Codegear publica la ayuda de la VCL de delphi 2007 Win32 en PDF rruz Noticias 1 28-06-2007 04:26:17
Delphi 2007 para PDA jlrbotella Varios 4 07-03-2007 19:26:23
Lanzamiento de Delphi 2007 y Delphi para PHP en México con David I Andreano Noticias 13 27-02-2007 22:16:04
Lanzamiento de Delphi 2007 y Delphi para PHP en Bogotá - Colombia Andreano Noticias 9 25-02-2007 20:09:42


La franja horaria es GMT +2. Ahora son las 00:28:25.


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