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 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
  #2  
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
  #3  
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
  #4  
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
  #5  
Antiguo 07-08-2007
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Poder: 22
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



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 20:24:55.


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