Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
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 12-01-2015
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
Comprobar 'Internal Error URW1154' en XE6 y XE7

Hola amigos.

Hay una situación con el compilador de Delphi XE5 que produce una falla del mismo. El más o menos conocido error URW1154 que parece estar muy relacionado con genéricos.

He logrado aislar el problema que se presenta en mi caso. Si alguien tiene XE6 o XE7 a la mano, le agradecería que me ayudara a comprobar si este defecto sigue presente en esas versiones del compilador. La prueba es muy sencilla. En un proyecto que contenga dos unidades (Unit1 y Unit2), hay que escribir el siguiente código:

[archivo anexo más abajo]

Al compilar se presenta el mensaje: [dcc32 Fatal Error] ... F2084 Internal Error: URW1154

Como sabemos, estos errores poco comunes se producen en situaciones donde el compilador no logra transformar de forma adecuada el código fuente. Generalmente por darse una serie de circunstancias que se pasaron por alto en su desarrollo. Eventualmente, Embarcadero corrige el problema con algún parche o en las siguientes versiones. Mi duda principal es si este caso en particular ya fue resuelto en Delphi XE6 y XE7, por lo cual pido la colaboración de quienes tengan alguna de esas versiones. Algunos reportes de QualityCentral hablan de este error, pero no en las circunstancias que aquí presento (o no lo encontré). Como ven el código es bastante sencillo, y la solución sería evitar usar parámetros objetos genéricos con valor predeterminado (o sea, quitar el "= Nil"), con la desventaja de que el parámetro en cuestión ya no podría ser opcional, aunque esto puede compensarse un poco creando dos sobrecargas de mismo método.

¿Me ayudan a comprobar si esto sigue presente en XE6 y XE7? Pongo este enlace a una imagen que ilustra el problema: https://twitter.com/algonzalez74/sta...998592/photo/1

Espero su ayuda; no sólo es para mí, sino también para los que vengan después de mí.

Un saludo.

Al.

P.D. Uso Delphi XE5, Update 2.
Archivos Adjuntos
Tipo de Archivo: rar InternalError_URW1154.rar (51,7 KB, 6 visitas)

Última edición por Al González fecha: 12-01-2015 a las 19:28:02.
Responder Con Cita
  #2  
Antiguo 12-01-2015
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
¡Chanfle! Han desaparecido los "<" y ">". Mejor anexo el proyecto...
Responder Con Cita
  #3  
Antiguo 12-01-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.037
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Parece que con un espacio antes y después se muestra
¿Es válido o mejor borro este mensaje?
Desconozco el uso de esa declaración

Última edición por Casimiro Notevi fecha: 12-01-2015 a las 20:04:51.
Responder Con Cita
  #4  
Antiguo 12-01-2015
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
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Parece que con un espacio antes y después se muestra
¿Es válido o mejor borro este mensaje?
Desconozco el uso de esa declaración
Gracias, Casi. Ahora sé, para la siguiente vez, aunque no estaría mal buscar la manera de que esta sintaxis venga admitida de cajón. Los genéricos son pan de cada día con las versiones actuales de Delphi (y con cualquier otro lenguaje moderno).

Es válido, pero te faltaron algunas. Si gustas sólo dejemos el archivo anexo.

Esa declaración sirve para "personalizar por tipo" a una clase, de tal forma que el compilador transforma el código en una clase especializada en el tipo que se indique. Así puedes tener, por ejemplo, un TList de enteros, un TList de cadenas, un TList de punteros, sin tener que escribir tres clases, y sin las complejidades que para un caso así presentaría intentar usar sólo herencia.
Responder Con Cita
  #5  
Antiguo 12-01-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.037
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Todos los días se aprende algo.
Responder Con Cita
  #6  
Antiguo 12-01-2015
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
Alberto,

Cita:
Empezado por Al
...Comprobar 'Internal Error URW1154' en XE6 y XE7...Mi duda principal es si este caso en particular ya fue resuelto en Delphi XE6 y XE7...¿Me ayudan a comprobar si esto sigue presente en XE6 y XE7?...Uso Delphi XE5, Update 2...


El resultado de las pruebas realizadas con el código propuesto en el Msg #1, al compilar en Delphi XE4 y Delphi XE6 bajo Windows 7 Professional x32 y Delphi XE7 bajo Windows 10 Technical Preview x32 fueron las siguientes:

1- Delphi XE4 : [dcc32 Fatal Error] Unit2.pas(16): F2084 Internal Error: URW1154

2- Delphi XE6 : Success

3- Delphi XE7 : Success

Luego se concluye, que el error fue corregido a partir del la versión de Delphi XE6.

Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 12-01-2015 a las 21:27:01.
Responder Con Cita
  #7  
Antiguo 12-01-2015
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
Muchas gracias, Nelson.

Lo mismo me confirmaron en Twitter y lo reporté en QC para las personas que pudieran encontrarse con el mismo problema.

Y he agregado esta nota a las clases genéricas que voy definiendo en XE5:
Código Delphi [-]
    { NOTE: We avoid using generic object parameters with default value in
      methods of generic classes, because these cause Internal Error
      URW1154 when those classes are referenced from another unit (quality
      report #129713). }
Saludos.
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
Por qué sale el [Fatal Error]Internal Error:LA30?? Lizette Varios 13 14-01-2016 13:44:35
internal error: URW3950 sebamora Varios 2 14-10-2013 03:04:43
[Fatal Error] Internal error: LA33 FelipeDiaz Conexión con bases de datos 7 25-06-2008 15:15:05
Error Internal gds software consistency check (can´t continue after bugcheck)" en XP murci Firebird e Interbase 6 04-08-2003 08:49:59
Error internal gds charly Firebird e Interbase 4 26-06-2003 16:31:16


La franja horaria es GMT +2. Ahora son las 01:48:52.


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