In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Xailer cria EXE com funções em duplicidade

Foro de Xailer profesional en español
Responder
Avatar de Usuario
Hurricane
Mensajes: 262
Registrado: Mar Mar 24, 2015 10:21 am
Ubicación: Brasil
Contactar:

Xailer cria EXE com funções em duplicidade

Mensaje por Hurricane »

boa tarde,

Percebi que o programador copiou sem perceber, a mesma função para 2 arquivos PRG, gerou o EXE normalmente e sem nenhum aviso.
Como impedir o Xailer de fazer isso?

Anexei um exemplo que demonstra.
Xailer 7/Mingw
Adjuntos
FNC_DOUBLE.zip
(2.69 KiB) Descargado 95 veces
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9243
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: Xailer cria EXE com funções em duplicidade

Mensaje por ignacio »

Buenos días,

Intento traducir su mensaje:
Noté que el programador copió sin darme cuenta, la misma función para 2 archivos PRG, generó el EXE normalmente y sin previo aviso.
¿Cómo evitar que el chal haga esto?
Pero sigo sin entender del todo la pregunta. No obstante, si se refiere al hecho que pueda existir una función con el mismo nombre en distintos PRGs, me temo que no es un problema que pueda resolver Xailer. Debería enviar un aviso en enlazador. Es posible que haya un 'flag' para ello en MinGW, pero lo desconozco.

Un saludo
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Avatar de Usuario
Hurricane
Mensajes: 262
Registrado: Mar Mar 24, 2015 10:21 am
Ubicación: Brasil
Contactar:

Re: Xailer cria EXE com funções em duplicidade

Mensaje por Hurricane »

bom dia Ignacio,

entendo que você não conheça o flag do MinGW, porém é necessário tentar encontrar (o Xailer não pode gerar o EXE), e um bom caminho para isso é você analisar as saídas do hbmk2.exe.
Se eu tiver tempo, tentarei ajudá-lo se ainda precisar.

O título diz tudo :D, traduzido pelo google:
Shawl creates EXE with duplicate functions
ignacio escribió: Mié Ago 25, 2021 10:22 am Pero sigo sin entender del todo la pregunta. No obstante, si se refiere al hecho que pueda existir una función con el mismo nombre en distintos PRGs, me temo que no es un problema que pueda resolver Xailer. Debería enviar un aviso en enlazador. Es posible que haya un 'flag' para ello en MinGW, pero lo desconozco.
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5705
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Re: Xailer cria EXE com funções em duplicidade

Mensaje por jfgimenez »

Hola,

el motivo por el que se permite introducir dos nombres de función idénticas es para poder sobrecargar las clases T de Xailer (https://info.xailer.com/es/?p=21)
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Avatar de Usuario
Hurricane
Mensajes: 262
Registrado: Mar Mar 24, 2015 10:21 am
Ubicación: Brasil
Contactar:

Re: Xailer cria EXE com funções em duplicidade

Mensaje por Hurricane »

bom dia,

até o momento não temos nenhuma resposta sobre uma futura solução ao problema com o Xailer.
Por favor, pelo menos nos dê uma alternativa para nós alterarmos e desativarmos isso no Linker. Dando mais segurança e qualidade ao criar arquivos EXE.

É uma situação (extremamente inesperada e desastrosa) que acontece apenas com Xailer. O padrão de qualquer compilação console ou GUI para Harbour ou xHarbour: não permitir funções em duplicidade.
Pelo resposta do José, parece que foi intencional por vocês acharem que seria necessário para sobrecargas das classes T<****> FROM X<****>, mas não é.
jfgimenez escribió: Mar Ago 31, 2021 12:17 pm el motivo por el que se permite introducir dos nombres de función idénticas es para poder sobrecargar las clases T de Xailer (https://info.xailer.com/es/?p=21)
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5705
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Re: Xailer cria EXE com funções em duplicidade

Mensaje por jfgimenez »

Buenos días,

SÍ es necesario para sobrecargar clases T. Si no usáramos este flag, sería imposible hacer estas sobrecargas, y créeme, es una característica muy importante de Xailer. En otros GUIs xbase, cuando un usuario quiere cambiar algo del GUI, no tiene más remedio que hacer una copia del fuente de la clase correspondiente y hacer ahí sus modificaciones. Posteriormente, cuando sale una nueva versión tiene que volver a hacer el mismo proceso; y esto se repite una y otra vez, con el consiguiente problema de tiempo, esfuerzo y posibilidad de errores. En Xailer basta con sobrecagar la clase T añadiendo o modificando lo que necesite, y cuando sale una nueva versión de Xailer no hay que hacer nada... todo sigue funcionando correctamente.

Como comprenderás, no estamos dispuestos a renunciar a esta enorme ventaja por un problema puntual que hayas podido tener. Después de 18 años con Xailer creo que se ha demostrado con bastante claridad que esta característica es una solución muy acertada al problema que se pretendía corregir. En todos estos años nunca ha tenido nadie ningún inconveniente. Al revés, todo han sido ventajas.

Estoy seguro de que el problema que puedas tener se puede resolver de otra forma, no así. No obstante, si estás convencido de que esa es la solución y quieres probarlo, puedes crear un plugin que intercepte el evento "PR_PreLink". Este evento recibe los parámetros ( @cCmdLine, cWorkingDir, @cLinkScript ), y puedes modificar tanto la línea de comandos como el script de enlazado. Prueba a quitar el flag "-allow-multiple-definition" con un simple cLinkScript := StrTran( cLinkScript, "-allow-multiple-definition", "" ).

Por cierto, cuando usábamos BCC, no había ninguna necesidad de usar este flag. De hecho ni siquiera existía. BCC siempre ha permitido duplicar símbolos.
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Avatar de Usuario
Hurricane
Mensajes: 262
Registrado: Mar Mar 24, 2015 10:21 am
Ubicación: Brasil
Contactar:

Re: Xailer cria EXE com funções em duplicidade

Mensaje por Hurricane »

boa noite José,

Obrigado por responder. Eu criei o plugin para usar PR_PreLink, e funciona bem. Removi as várias funções em duplicidade nos PRGs, usarei em momentos específicos.
Uso de forma improvisada, pois para gerar o EXE em Xailer, esta sendo obrigatório -allow-multiple-definition.
compile.png
compile.png (13.51 KiB) Visto 1486 veces
Como informei e com exemplo, é possível fazer a sobrecarga normalmente de uma função ou classe CLASS T* FROM X* existente na LIB, não depende de nenhum parâmetro especial do Linker.
xHarbour e Harbour também possui mecanismo (em tempo de execução) para fazer sobrecarga de métodos de classes (não da classe), mas acho CLASS T* FROM X* mais eficiente, versátil e limpo.

>>Después de 18 años con Xailer creo...
Uma coisa não tem nada haver com outra, entenda que cada programador tem sua forma de trabalhar, de analisar, seus princípios... não devemos gerar EXE com funções em duplicidade, regra tão antiga e útil.
jfgimenez escribió: Jue Oct 28, 2021 1:37 pm Buenos días,

SÍ es necesario para sobrecargar clases T. Si no usáramos este flag, sería imposible hacer estas sobrecargas, y créeme, es una característica muy importante de Xailer. En otros GUIs xbase, cuando un usuario quiere cambiar algo del GUI, no tiene más remedio que hacer una copia del fuente de la clase correspondiente y hacer ahí sus modificaciones. Posteriormente, cuando sale una nueva versión tiene que volver a hacer el mismo proceso; y esto se repite una y otra vez, con el consiguiente problema de tiempo, esfuerzo y posibilidad de errores. En Xailer basta con sobrecagar la clase T añadiendo o modificando lo que necesite, y cuando sale una nueva versión de Xailer no hay que hacer nada... todo sigue funcionando correctamente.

Como comprenderás, no estamos dispuestos a renunciar a esta enorme ventaja por un problema puntual que hayas podido tener. Después de 18 años con Xailer creo que se ha demostrado con bastante claridad que esta característica es una solución muy acertada al problema que se pretendía corregir. En todos estos años nunca ha tenido nadie ningún inconveniente. Al revés, todo han sido ventajas.

Estoy seguro de que el problema que puedas tener se puede resolver de otra forma, no así. No obstante, si estás convencido de que esa es la solución y quieres probarlo, puedes crear un plugin que intercepte el evento "PR_PreLink". Este evento recibe los parámetros ( @cCmdLine, cWorkingDir, @cLinkScript ), y puedes modificar tanto la línea de comandos como el script de enlazado. Prueba a quitar el flag "-allow-multiple-definition" con un simple cLinkScript := StrTran( cLinkScript, "-allow-multiple-definition", "" ).

Por cierto, cuando usábamos BCC, no había ninguna necesidad de usar este flag. De hecho ni siquiera existía. BCC siempre ha permitido duplicar símbolos.
Responder