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 15-05-2008
Avatar de mlara
[mlara] mlara is offline
Miembro Premium
 
Registrado: jun 2003
Ubicación: Colombia
Posts: 667
Poder: 21
mlara Va por buen camino
Question Expected ':' but an identifier found.

No se cómo sucedió, es la verdad. Trabajaba un día sobre una ventana que tiene muchos componentes y mucho código. El dfm tiene 354 KB y el pas 174 KB. Bueno, lo menciono por si acaso.

Creo que eliminaba algunos componentes cuando de repente salió el mensaje al intentar compilar el programa. Después de tratar volver atrás, la única forma en que pude compilar el programa fue adicionando una línea de comentario . Y aunque me pareció absurdo, no tuve más tiempo para probar, así que esta ventana se quedó así.

Luego, mes y medio más tarde debo realizar modificaciones a la dichosa ventana y claro... nuevamente no me deja hacer nada. No me deja eliminar componentes, no me deja poner nuevos componentes, y es más, cuando intento algo así, nuevamente no puedo compilar y debo mover la línea de comentario a otro lugar. En todos los casos siempre sale el mismo mensaje:

Expected ':' but an identifier found.

¿Qué $·%#"|\\**)/$ significa esto?

El código está bien, no uso componentes extraños, y traté de revisar un poco a vuelo de pájaro el dfm, y la verdad lo veo bien.

Alguien tiene idea de por qué sucede esto. Le ha pasado algo así?

De no solucionar esto, me quedo varado sin poner hacer cambios a la ventana. Como es tanto código y la ventana tiene tantos componentes, no es fácil reconstruirla... me tomaría muchíííííísimo tiempo, que no tengo.
__________________
...y mañana caminaré por las calles pasando inadvertido, como siempre.

Última edición por mlara fecha: 15-05-2008 a las 06:27:55.
Responder Con Cita
  #2  
Antiguo 15-05-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Como comprenderás sin ver el código es practicamente imposible darte una solución con sentido.

Lo único que se me ocurre es que tengas alguna palabra, nombre, variable,... que se confunda con algun elementos reservado de la sintaxis de Delphi.
Pero vamos, que la propbabilidad de acertar con los datos que das, debe ser aproximadamente de 1 entre 25 millones.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 15-05-2008
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Normalmente el error te dice en qué línea es.
Envía el trozo de código que contiene el error.

Se me ocurre también que el error sea justo después de compilar, cuando ejecuta la aplicación. En este caso el error saldrá en una ventana pequeña en el centro de la pantalla.

Puede ser que al ejecutar el programa se abran tablas de una base de datos.
Los parámetros, suele ponerse como ":NOMBRE_PARAMETRO".
- Puede ser que alguna tabla tenga el sql mal hecho.
- Si se genera el sql en tiempo de ejecución, puede que se olvide de algún parámetro.

Con esto ya puedes verificar 1 de las 25 millones de posibilidades de error.
Responder Con Cita
  #4  
Antiguo 15-05-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Concuerdo con los mensajes aneriores, y añado algo más:
Esos tipos de errores me suenan a incongruencias entre el .dfm y el .pas, incluso en cosas aparente absurdas como eliminar líneas vacías o de longitud desmesurada con espacios.

También puede ocurrir que el error mostrado no tenga nada que ver con el que realmente cause el problema. Este tipo de cosas son muy muy raras


Saludos y Suerte
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 15-05-2008
Avatar de mlara
[mlara] mlara is offline
Miembro Premium
 
Registrado: jun 2003
Ubicación: Colombia
Posts: 667
Poder: 21
mlara Va por buen camino
Quien acerta más es Lepe seguido de Neftali. Quiero decir que el problema no es con parámetros en consultas SQL, ni tengo problemas de sintaxis. Voy a tratar más despacio de encontrar el problema... si llego a un grado tal que pueda volverme loco o algo por el estilo, sin solucionar el problema... vuelvo por aquí, que es lo más seguro.

PD. Urgente: El sistema no está enviando los correos para avisar que un hilo tiene un nuevo post (Notificación instantánea por correo electrónico). Si alguien puede verificar...
__________________
...y mañana caminaré por las calles pasando inadvertido, como siempre.

Última edición por mlara fecha: 15-05-2008 a las 16:04:23.
Responder Con Cita
  #6  
Antiguo 15-05-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por mlara Ver Mensaje
PD. Urgente: El sistema no está enviando los correos para avisar que un hilo tiene un nuevo post (Notificación instantánea por correo electrónico). Si alguien puede verificar...
OFF-TOPIC:
Quise enviarte un privado para comentarte sobre esto, ya que no quería desvirtuar el hilo, pero tienes la casilla llena.
Pues me parece raro ya que yo lo estoy recibiendo sin problemas.
¿No será que por error? te desuscribiste?
Cuando uno recibe el mensaje, hay varios links, entre ellos está la opción de desusbrirse del/los hilo/s. Tal vez por error diste clic sobre ese enlace.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #7  
Antiguo 15-05-2008
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
Muéstranos la parte del código donde el compilador encuentra ese error.

Es probable que hayas borrado por accidente los dos puntos que le siguen al identificador (y quizá algo más) en la declaración de uno de los componentes dentro de la clase formulario.

Déjanos ver la parte del código donde el compilador te señala el error, eso es básico para poder auxiliarte.

Esperamos tu retroalimentación.

Saludos.

Al González.
Responder Con Cita
  #8  
Antiguo 18-05-2008
Avatar de mlara
[mlara] mlara is offline
Miembro Premium
 
Registrado: jun 2003
Ubicación: Colombia
Posts: 667
Poder: 21
mlara Va por buen camino
Cita:
Empezado por Delphius Ver Mensaje
OFF-TOPIC:
¿No será que por error? te desuscribiste?
Cuando uno recibe el mensaje, hay varios links, entre ellos está la opción de desusbrirse del/los hilo/s. Tal vez por error diste clic sobre ese enlace.
En este preciso instante estoy suscrito a 6 o 7 hilos, y tengo que estar buscando para saber si alguien ha contestado. No es por error. Algo sucede.
__________________
...y mañana caminaré por las calles pasando inadvertido, como siempre.
Responder Con Cita
  #9  
Antiguo 18-05-2008
Avatar de mlara
[mlara] mlara is offline
Miembro Premium
 
Registrado: jun 2003
Ubicación: Colombia
Posts: 667
Poder: 21
mlara Va por buen camino
Cita:
Empezado por Al González Ver Mensaje
Muéstranos la parte del código donde el compilador encuentra ese error.

...

Esperamos tu retroalimentación.
No me había dado cuenta que habías contestado... Espero que me sigan llegando las notificaciones automáticas, porque si no... . Je je, bueno, si alguien de paso puede verificar lo que está sucediendo les agradezco mucho.

Bueno, en este link puse unas imágenes que muestran lo que sucede.

Muchas gracias Al y a los demás por su colaboración.
__________________
...y mañana caminaré por las calles pasando inadvertido, como siempre.
Responder Con Cita
  #10  
Antiguo 18-05-2008
Avatar de mlara
[mlara] mlara is offline
Miembro Premium
 
Registrado: jun 2003
Ubicación: Colombia
Posts: 667
Poder: 21
mlara Va por buen camino
Cita:
Empezado por mlara Ver Mensaje
..., si alguien de paso puede verificar lo que está sucediendo les agradezco mucho.
... la culpa era mía, pero les aseguro que no sé a qué hora sucedió. La dirección del foro estaba bloqueada en mi correo. .

, mis disculpas.
__________________
...y mañana caminaré por las calles pasando inadvertido, como siempre.
Responder Con Cita
  #11  
Antiguo 18-05-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
No sé yo, pero si esa es la línea 602 del código fuente y todavía estamos declarando variables privadas, miedo me da el resto.

mlara, lo raro es que funcione algo

Creo es hora de crear frames y que se creen en tiempo de ejecución, sólo aquellos que se necesiten. Aunque mejor me callo porque será inviable....

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #12  
Antiguo 18-05-2008
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
El error no es arrojado por el compilador (los errores, advertencias y mensajes de compilación son enlistados en una ventana especial), sino por el analizador sintáctico ("parser") del IDE. La prueba de ello sería mostrar el formulario e intentar ir al código DFM presionando Alt+F12. Al hacer esta operación deberá mostrarte el mismo mensaje de error.

Esto descartaría al compilador como el responsable del extraño error, incluso puede que la compilación sea perfectamente viable desde la línea de comandos. El problema aquí es algo en el IDE.

¿Cuántas líneas de código tiene en total tu unidad .pas? Probablemente exista un "bug" relacionado con la capacidad de líneas que puede manejar el editor.

Mi otra pregunta sería: ¿tienes instalado algún accesorio (experto / wizard) en el IDE que pudiera interferir con la manera en que el entorno maneja el código fuente?

Por otro lado, considera que tal vez sí hacen falta los dos puntos en alguna línea de la declaración de la clase, pero por alguna razón el analizador sintáctico lo señala en la 602. En ese caso el compilador de línea de comandos también te señalará el error, pero, con algo de suerte, en la línea que realmente omite los dos puntos. ¿Qué te parece si haces esta prueba?

No dejes de mencionar qué versión de Delphi es la que tienes con ese problema.

Independientemente de todo lo anterior, considera seriamente el uso de herencia visual y técnicas similares para una eficiente estructuración de tu proyecto. Pero primero lleguemos al fondo de esto.

Esperamos nuevamente tu retroalimentación a este interesante caso.

Al González.
Responder Con Cita
  #13  
Antiguo 18-05-2008
Avatar de mlara
[mlara] mlara is offline
Miembro Premium
 
Registrado: jun 2003
Ubicación: Colombia
Posts: 667
Poder: 21
mlara Va por buen camino
Al... estoy en línea (almorzando). En un momento regreso y te cuento.
__________________
...y mañana caminaré por las calles pasando inadvertido, como siempre.
Responder Con Cita
  #14  
Antiguo 18-05-2008
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 mlara Ver Mensaje
Al... estoy en línea (almorzando). En un momento regreso y te cuento.
Provecho, yo haré lo mismo en un rato con lo que quedó del Pollo Feliz de ayer.
Responder Con Cita
  #15  
Antiguo 18-05-2008
Avatar de mlara
[mlara] mlara is offline
Miembro Premium
 
Registrado: jun 2003
Ubicación: Colombia
Posts: 667
Poder: 21
mlara Va por buen camino
  1. Efectivamente al estar en el form y presionar Alt+F12 se muestra el mensaje de error.
  2. Líneas de código: 4506 hasta el end.
  3. No tengo instalado ningún experto / wizard del IDE.
  4. "Estoy seguro" de que no hacen falta dos puntos en cualquier línea de declaración de la clase del form. Si así fuera, incluso poniendo el comentario no dejaría compilar el programa.
  5. Uso Delphi 7.
  6. "herencia visual" <- No he usado alguna vez esta técnica. Si lo he hecho, quizá intuitivamente.

Además aún no uso el compilador de línea de comandos, pero me dispongo a hacerlo. Sigo en línea.
__________________
...y mañana caminaré por las calles pasando inadvertido, como siempre.
Responder Con Cita
  #16  
Antiguo 18-05-2008
Avatar de mlara
[mlara] mlara is offline
Miembro Premium
 
Registrado: jun 2003
Ubicación: Colombia
Posts: 667
Poder: 21
mlara Va por buen camino
Acabo de compilar el programa con el compilador de línea de comandos. No hubo inconveniente, así que es definitivo, el problema es con el IDE y específicamente con el analizador sintáctico. Y ahora? Voy a buscar en el dfm, después de cada object debemos encontrar el nombre del componente seguido de dos puntos y luego del nombre de la clase. Espero tener suerte, ya que encontré 676 objetos.
__________________
...y mañana caminaré por las calles pasando inadvertido, como siempre.

Última edición por mlara fecha: 18-05-2008 a las 23:43:29.
Responder Con Cita
  #17  
Antiguo 19-05-2008
Avatar de mlara
[mlara] mlara is offline
Miembro Premium
 
Registrado: jun 2003
Ubicación: Colombia
Posts: 667
Poder: 21
mlara Va por buen camino
El archivo dfm tiene 9192 líneas. Hice un pequeño programa para ayudarme, y encontró lo siguiente:

  1. Los 676 objetos tienen sus respectivos dos puntos después del identificador o nombre del objeto.
  2. El identificador de nombre más largo tiene 41 caracteres. Luego le siguen algunos de estas longitudes: 1 de 37, 1 de 36, 1 de 35, 1 de 34, 2 de 33, 4 de 32, y de ahí hacia abajo los demás.

Estaba pensando que podía ser el identificador de longitud más larga.

Cuál es el número máximo de caracteres que puede tener un identificador?
Además, de acuerdo a la sintaxis del dfm, cuándo se espera que aparezcan los dos puntos además de después del identificador y antes del nombre de la clase?
__________________
...y mañana caminaré por las calles pasando inadvertido, como siempre.

Última edición por mlara fecha: 19-05-2008 a las 00:09:13.
Responder Con Cita
  #18  
Antiguo 19-05-2008
Avatar de mlara
[mlara] mlara is offline
Miembro Premium
 
Registrado: jun 2003
Ubicación: Colombia
Posts: 667
Poder: 21
mlara Va por buen camino
Tengo dos versiones de mi programa. Las dos trabajan con versiones muy similares de Configuracion, hasta el momento "prácticamente iguales" (en realidad sobre la que tabajo actualmente ya tiene varios cambios), y con el otro programa no tengo problema. Eso quiere dedir que no tiene nada que ver el tamaño de los archivos ni su número de líneas, y tampoco la longitud de los identificadores.
__________________
...y mañana caminaré por las calles pasando inadvertido, como siempre.

Última edición por mlara fecha: 19-05-2008 a las 00:56:27.
Responder Con Cita
  #19  
Antiguo 19-05-2008
Avatar de mlara
[mlara] mlara is offline
Miembro Premium
 
Registrado: jun 2003
Ubicación: Colombia
Posts: 667
Poder: 21
mlara Va por buen camino
Jajajaj... esto la verdad no me lo imaginaba.

Aunque la verdad no me parece muy gracioso pues he perdido muchas horas revisando línea por línea. Les voy a contar que sucedía, y eso por no dejarlos con la duda .

Pues resulta que uso el Notepad++ para editar mis archivos de texto, ya sean scripts .sql, código .pas o .c, formas .dfm, archivos por lotes .bat, de configuración .ini, archivos planos .txt o .csv, etc.

El por qué los .pas, es sencillo. El Notepad++ ofrece herramientas que el editor de Delphi no tiene. Necesité realizar muchas modificaciones clave de una versión a otra y por eso usé esta aplicación, con muy buenos resultados.

Quizá, y como me ha sucedido últimamente por no haber dormido muy bien, le cambié el formato al archivo .pas de DOS\Windows a UNIX. Claro, el final de línea en Windows se representa con un CRLF, mientras que en UNIX es un LF.

Esto hacía que el IDE de Delphi fallara mostrando mensajes sin sentido como este:

"Expected ':' but an identifier found"

, en prácticamente cualquier línea. Lo que me sorprende es que haciendo algo tan absurdo como poner un comentario antes de la línea lograra "engañar" al analizador sintáctico.

Tiene lógica que el compilador no fallara, porque supongo que para este el final de línea puede ser tanto CRLF como LF.

Estaba a punto de volverme loco .

Gracias a todos.
__________________
...y mañana caminaré por las calles pasando inadvertido, como siempre.

Última edición por mlara fecha: 19-05-2008 a las 03:02:23.
Responder Con Cita
  #20  
Antiguo 19-05-2008
Avatar de mlara
[mlara] mlara is offline
Miembro Premium
 
Registrado: jun 2003
Ubicación: Colombia
Posts: 667
Poder: 21
mlara Va por buen camino
Podríamos sugerir a CodeGear que en sus próximos analizadores sintácticos incluyera la posibilidad de trabajar con archivos en formato UNIX / Linux, o que detectara el formato de los archivos. Ahí va entonces para Andreano esta sugerencia. A cualquiera podría sucederle luego, cierto? Más si trabajan con CLX para compilar sus programas en Delphi o en Linux.
__________________
...y mañana caminaré por las calles pasando inadvertido, como siempre.
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
Statement expected, but expression of type 'Boolean' found Shikanda Conexión con bases de datos 7 06-09-2007 13:26:19
"Undeclared Identifier "CLOSE" anghell77 OOP 4 09-10-2006 12:18:26
Error "File not found: AHMSystemClass.dcu" Miriamc Varios 2 05-06-2006 16:13:36
Error: "Record not found or changed by another user" jmlifi Varios 0 27-01-2006 10:16:57
Solución para el error "Field ID not found" Calderin Conexión con bases de datos 5 24-11-2004 11:18:26


La franja horaria es GMT +2. Ahora son las 08:38:23.


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