Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   No consigo hacer funcionar este bucle. (https://www.clubdelphi.com/foros/showthread.php?t=63045)

radge 27-01-2009 17:23:29

No consigo hacer funcionar este bucle.
 
Buenas adjunto este codigo , porque me estoy volviendo loco , como vereis hago un bucle y tengo 2 variables Esfera1 y Esfera2 , pues cuando debugo pongo el breakpoint justamente en el begin , pués de la variables esfera1 salta directamente a ObrirQuery.

No se que puede ser o que hacer.

salu2 radge

Código Delphi [-]
procedure Tfrmoferta1.BitBtn6Click(Sender: TObject);
var
   minuevavar,var1,var2,esfera1,esfera2:integer;
begin
   Esfera1 := 100;
   Esfera2 := 200;

   ObrirQuery('699'); //consulta query

   While not qryCotes.EOF do begin
      var1:= round(qryCotes.FieldByName('campo1').AsFloat * 100);
      var2:= round(qryCotes.FieldByName('campo2').AsFloat * 100);


   ...
   ...
   end;


end;

coso 27-01-2009 17:36:40

Hola radge,

hay a veces, no se porque misteriosa razon, que la informacion de debug no queda actualizada con la compilación: breakpoints invalidos, etc... yo lo soluciono borrando todos los .dcu (u .obj) del proyecto y recompilando todo de cero. A ver si va a ser por eso. Saludos.

radge 27-01-2009 17:37:42

Gracias por la info lo pruebo ahora mismo y te cuento !

salu2 radge

radge 27-01-2009 17:39:41

Pues no me hace lo mismo... es rarisimo.

Alguna otra opción ?

salu2 radge

radge 27-01-2009 17:43:03

Dejo una muestra de la pantalla a ver si con esto ayudo un poco más.



salu2 radge

roman 27-01-2009 17:47:22

Y, ¿dónde más usas las variables esfera1 y esfera2? Porque si no se usan posteriormente, el compilador elimina esas asignaciones.

// Saludos

radge 27-01-2009 18:00:54

De hecho es el IF este que las 2 variables tienen el valor -1000 pero todo y asi no entra en el dichoso bucle.



salu2 radge

coso 27-01-2009 18:14:27

en los pantallazos que nos pones, sale la x de invalid breakpoint...estan las opciones de debug activadas en el compilador?

radge 27-01-2009 18:16:10

Cita:

Empezado por coso (Mensaje 336130)
en los pantallazos que nos pones, sale la x de invalid breakpoint...estan las opciones de debug activadas en el compilador?

En project ==> Options ==> Debugging (todas marcadas menos la que pone "use debug dcus"

Si pongo el breakpoint en otra fila no sale ese error tal como adjunto



salu2 radge

roman 27-01-2009 18:18:20

La verdad es que visto así a cuenta gotas, y con esos colores, cuesta mucho trabajo leer. Cuando los puntos de ruptura aparecen con ese verde tachado es porque el compilador eliminó esas instrucciones. Bien puede ser porque posteriormente asignas nuevos valores sin haber usado los primeros.

En todo caso, siempre puedes deshabilitar la optimización del depurador (Project|Options|Compiler) para que esas llamadas no se eliminen.

// Saludos

Neftali [Germán.Estévez] 27-01-2009 18:19:47

Desactiva las optimizaciones del compilador en las opciones del proyecto.

radge 27-01-2009 18:21:22

Cita:

Empezado por roman (Mensaje 336132)
La verdad es que visto así a cuenta gotas, y con esos colores, cuesta mucho trabajo leer. Cuando los puntos de ruptura aparecen con ese verde tachado es porque el compilador eliminó esas instrucciones. Bien puede ser porque posteriormente asignas nuevos valores sin haber usado los primeros.

En todo caso, siempre puedes deshabilitar la optimización del depurador (Project|Options|Compiler) para que esas llamadas no se eliminen.

// Saludos

Tambien lo he probado a quitar la opción "optimitzation" , guardar , hacer un build y nada hace lo mismo.

salu2 radge

Delphius 27-01-2009 18:27:12

Sin conocer mejor el código va a ser difícil que hallemos el problema. Las imágenes nos dan una idea de por donde puede venir el problema, pero es sólo una vista parcial del problema y va a ser necesario ver el código en su totalidad para saber por donde vienen los tiros.

Además veo una diferencia entre el código inicial y lo que se ve en las imágenes. Por ejemplo, en el código primero inicializas las variables y luego viene ObrirQuery,pero en la imagen se ve primero ObrirQuery, y luego la inicialización. ¿Que hace ese ObrirQuery()? Difieren además la cantidad de variables.

Discúlpame pero eso confunde un poco. ¿Cuál es el código correcto?:confused:

Saludos,

Chris 27-01-2009 18:47:59

Hago una pregunta. A pesar de que no se "ejecuten" las asignaciones según los breakpoints, obtienes un coportamiento no esperado?

Estoy suponiendo, que el compilador iniciliza las variables a sus respectivos valores cuando las creas. Para confirmar lo anterior, intenta hacer un breakpoint dentro del bucle "while ... do" y luego lee el contenido de las varibles, ya sea haciendo "CTRL + Click" sobre la variable o posicionando el mouse sobre ésta deberá aparecete un Tooltip con el valor de la variable.

Saludos.

coso 27-01-2009 18:54:35

Cita:

todas marcadas menos la que pone "use debug dcus"
yo la marcaria si de caso y recompilaria (borrando los anteriores .dcus)

Código Delphi [-]
while ((esfera <= EsfMax) and (esfera >= EsfMin)) do begin

if esfera = esfmin then ...

end;

es posible que sencillamente no se cumpla la condición ya de antemano? por ejemplo, que este while este en otro del tipo while esfera > EsfMin o algo parecido...entonces el compilador eliminaria esa linea.


La franja horaria es GMT +2. Ahora son las 23:19:04.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi