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 27-01-2009
Avatar de Faust
Faust Faust is offline
Miembro
 
Registrado: abr 2006
Ubicación: México D.F.
Posts: 930
Poder: 19
Faust Va por buen camino
Error en el compilador de Delphi 7

Saludos de nuevo camaradas...

Pues sucede que hoy haciendo una pequeña aplicación para imprimir cheques noté algo que podría ser un error... uso Delphi 7 Ent sobre winXP y el siguiente código no me da error:

Código Delphi [-]
   IniFile.ReadSections(lstCheques.Items,  );

La coma indica que hay un segundo parámetro pero...

Quizás sea inteligente el analizador sintáctico y deduzca "se espera un solo parámetro, una coma y un espacio vacío extra no son problema"... con este nivel de inteligencia esto tampoco daría error:

Código Delphi [-]
   IniFile.ReadSections(lstCheques.Items,  , );

Pero si muestra el error...

¿entonces?
__________________
Herr Heins Faust
Responder Con Cita
  #2  
Antiguo 27-01-2009
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
¿Cuál es el mensaje de error? ¿En qué momento preciso aparece? (<-- estas dos preguntas nunca deberían ser necesarias )

Con esta prueba:
Código Delphi [-]
  IntToStr (5, );
, me aparece el error "Too many actual parameters" al tratar de compilar, colocándose el cursor entre el paréntesis de cierre y el punto y coma (Delphi 7).

Saludos.

Al.
Responder Con Cita
  #3  
Antiguo 27-01-2009
Avatar de Faust
Faust Faust is offline
Miembro
 
Registrado: abr 2006
Ubicación: México D.F.
Posts: 930
Poder: 19
Faust Va por buen camino
Este no me muestra error!!!

Código Delphi [-]
  IniFile.ReadSections(lstCheques.Items, );

Código Delphi [-]
  IniFile.ReadSections(lstCheques.Items, , );

En el último el error es igual que el tuyo "Too many actual parameters"
__________________
Herr Heins Faust
Responder Con Cita
  #4  
Antiguo 27-01-2009
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¡Vaya! Nunca había notado esto. También

Código Delphi [-]
ShowMessage('Hola mundo',);

compila sin problemas

// Saludos
Responder Con Cita
  #5  
Antiguo 27-01-2009
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Curioso...

Como dice Al, esto no compila:

Código Delphi [-]
IntToStr(84,);

Sin embargo esto sí

Código Delphi [-]
function IntToStr(N: Integer): String;
begin
  Result := SysUtils.IntToStr(N);
end;

IntToStr(84,);

// Saludos
Responder Con Cita
  #6  
Antiguo 27-01-2009
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
¡Hey!

Creo saber por dónde van los tiros:

Código Delphi [-]
Uses
  IniFiles;

Procedure Proc1 (L :TStrings);
Begin
End;

Procedure Proc2 (S :String);
Begin
End;

Procedure Proc3 (I :Integer);
Begin
End;

Procedure Proc4 (S :String); Overload;
Begin
End;

procedure TForm1.Button1Click(Sender: TObject);
Var
  Ini :TIniFile;
begin
  // ¡La compilación NO falla con estas seis llamadas!:

  Ini.ReadSections (Memo1.Lines, );

  Proc1 (Memo1.Lines, );

  With Memo1 Do
    Proc1 (Lines, );

  Proc2 ('001', );

  StrToInt ('001', );

  Proc3 (5, );


  // La compilación sí falla con estas dos llamadas

  Proc4 ('001', );  // Proc4 es "Overload"

  IntToStr (5, );  // IntToStr es "Overload"
end;

Tal parece que el desliz del compilador sólo ocurre con las rutinas no sobrecargadas. Con las que llevan la declaración Overload sí se fija.

¡Sorprendente descubrimiento!
Responder Con Cita
  #7  
Antiguo 28-01-2009
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
Acabo de probarlo en Delphi 2007 también: ahí el compilador presenta el mismo extraño comportamiento.

Encontraste un defecto (bug) interesante, Faust. Si esto está desde Delphi 7, ¿acaso no habrá sido reportado ya? Habrá que echar un vistazo en QualityCentral...
Responder Con Cita
  #8  
Antiguo 28-01-2009
poyo poyo is offline
Miembro
 
Registrado: ene 2009
Posts: 47
Poder: 0
poyo Va por buen camino
Eso en D2009 + Upd.1 no compila. Tira error "too many..." como debería ser.
por las dudas... se fijó alguien qué código genera? si genera lo mismo que cuando la función está siendo llamada correctamente?
yo supongo que sí... pero...
Responder Con Cita
  #9  
Antiguo 28-01-2009
Avatar de Faust
Faust Faust is offline
Miembro
 
Registrado: abr 2006
Ubicación: México D.F.
Posts: 930
Poder: 19
Faust Va por buen camino
Vaya... hoy si hice un descubrimiento...

Ojalá hubiera sido un cometa, para ponerle mi nombre

Y aprovechando mi fugaz popularidad... por favor échenme la mano con este problemita de impresión
__________________
Herr Heins Faust

Última edición por Faust fecha: 28-01-2009 a las 05:41:39.
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
Compilador Delphi 2006 salta sentencias joan_mvf Varios 5 16-03-2007 01:52:04
Compilador De C Pskotler Varios 2 09-03-2007 09:08:46
Error de compilador en el archivo dstring.h (68) JuanErasmo C++ Builder 0 05-02-2007 23:31:45
compilador de linea de delphi 7 / 2006 avmm2004 Varios 3 07-11-2006 23:24:28
compilador delphi 4 joako_ Varios 1 12-12-2003 09:21:04


La franja horaria es GMT +2. Ahora son las 18:31:31.


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