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 17-06-2010
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
Angry Delphi no compila algunas líneas y cínicamente me lo informa

Así es: llevo rato tratando de ver el porque no funciona mi programa, he depurado y checado algunas de las variables, pero no me había dado cuenta que la variable con la que recorro un for dentro de otro for para procesar un array de strings no está siendo compílada y cínicamente delphi me ha dicho:

Cita:
(Hint) Coinc.pas(203): Value assigned to 'j' never used
Entiendo que dice que como esta variable no sirve de nada pues no la compila, y cuando compilo no aparece el puntito azul a la derecha de la línea de mi código y como no se compila aparece un tonto valor de 1308584 en esa variable y al usarla pues nunca ejecuta el codigo dentro de mi for

Código Delphi [-]
function Coincidences(Str1, Str2: string): TArrStr;
var
  LStr1, LStr2, i, j, Last: Integer;
  TmpArrStr: TArrStr;
begin
  ... // Aquí hay código donde no uso mi variable j
  j:= 1;  // Esta línea la pongo  de prueba pero es donde me salta el Hint al compilar y no se compila esta línea y al debuggear siempre tiene el valor 1308584
  for i:= 1 to Length(TmpArrStr) do
  begin
    SetLength(Result, Length(Result) + 1);
    Last:= Length(Result) - 1;
    for j:= 1 to Length(Result[i]) - 1 do  // Aquí a j no se le asigna 1 sino que se le queda el 1308584 y como resultado nunca ejecuta el código de abajo
      Result[Last]:= Result[Last] + TmpArrStr[i - 1, j]
  end
end;

¿cómo le hago al compilador para que me compile esta línea? para que entienda que si sirve esta variable, no creo estar haciendo nada mal, en el código anterior he puesto las líneas donde hago uso de j para ver si alguien me da una pista de qué es lo que está pasando.

Ah por cierto, uso Delphi 7 Enterprise y Win XP sp3

Saludos.
__________________
Herr Heins Faust

Última edición por Faust fecha: 17-06-2010 a las 01:12:07.
Responder Con Cita
  #2  
Antiguo 17-06-2010
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Creo que el problema podría venir de cómo está definido TArrStr. Es decir, ¿no sería posible que "Length(Result[i])" sea 1 ó 0 en el momento de compilar? En tal caso el bucle nunca se ejecutaría y el compilador deduciría que "j" no se utiliza.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #3  
Antiguo 17-06-2010
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
Cita:
Empezado por Ñuño Martínez Ver Mensaje
Creo que el problema podría venir de cómo está definido TArrStr. Es decir, ¿no sería posible que "Length(Result[i])" sea 1 ó 0 en el momento de compilar? En tal caso el bucle nunca se ejecutaría y el compilador deduciría que "j" no se utiliza.
Ya lo resolví, te comento en efecto el "Length(Result[i])" si era cero pues iba "Length(TmpArrStr[i]), TmpArrStr es un array of string, y mi otro error fue que la línea:

Código Delphi [-]
      Result[Last]:= Result[Last] + TmpArrStr[i - 1, j]

es:
Código Delphi [-]
       Result[Last]:= Result[Last] + TmpArrStr[i - 1][j]

Y ya con eso, de todas formas gracias amigo Ñuño.
__________________
Herr Heins Faust
Responder Con Cita
  #4  
Antiguo 17-06-2010
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Un placer, ya sabes.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #5  
Antiguo 17-06-2010
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
Seguramente si en las opciones del compilador desactivas el optimizador dejen de pasarte estas cosas raras...
__________________
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
  #6  
Antiguo 17-06-2010
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
Cita:
Empezado por Neftali Ver Mensaje
Seguramente si en las opciones del compilador desactivas el optimizador dejen de pasarte estas cosas raras...
Ya lo había desactivado y seguía haciéndome lo mismo de hecho me has recordado que lo vuelva a activar... muchas gracias
__________________
Herr Heins Faust
Responder Con Cita
  #7  
Antiguo 17-06-2010
FENIXadr FENIXadr is offline
Miembro
 
Registrado: may 2010
Ubicación: Córdoba - Cba. - Argentina
Posts: 102
Poder: 14
FENIXadr Va por buen camino
Delphi no Compila

Este problema me ha sucedido algunas veces, tengo D7 tambien y siempre lo he solucionado "arreglando" mi código.. o sea, el compilador de D7 está bastante depurado como para que haga "cosas raras" siempre que algo de esto sucede es MUY aconsejable revisar el código minuciosamente porque el error es más nuestro que del compilador. Saludos.
Responder Con Cita
  #8  
Antiguo 21-06-2010
(MAJ) (MAJ) is offline
Miembro
 
Registrado: abr 2007
Posts: 71
Poder: 18
(MAJ) Va por buen camino
hola Faust.
segun entiendo yo, con ese aviso, te esta diciendo que vos declaraste la variable "j" pero no estas haciendo ninguna operacion o algo asi, no significa que el compilador no la esta usando, sino que el compilador la esta interpretando como inutilizada,

Cita:
Coinc.pas(203): Value assigned to 'j' never used
porque la traduccion correcta del hint seria

Cita:
Coinc.pas(203): valor asignado a "j" nunca usado
Te esta diciendo que el valor que le asignaste a la variable j no esta siendo utilizado en ninguna parte del codigo, aunque vos la estes usando en el bucle for... hay que comprender que ese tipo de advertencias y demas, estan basadas en parametros, por lo que son propensas a errores.

espero estar en lo correcto, y que te alla servido la información

saludos
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
por que no me ignora algunas lineas de codigo MOCOSO07 Varios 3 03-04-2009 19:58:02
delphi no compila la base de datos ernestogiss Conexión con bases de datos 7 12-05-2007 20:06:52
No Compila todas las lineas DANIELMW Varios 3 09-02-2004 18:16:56


La franja horaria es GMT +2. Ahora son las 17:01:05.


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