FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
comportamiento extraño de variables en debug
Me sucede algo raro, cuando tengo la variable "i" en el watch-list, a medida que voy ruteando el for va decreciendo a partir del valor 5 !!!
como es posible si el for dice claramente " for i:=0 to 4 " a alguien le ha pasado algo parecido ?
|
#2
|
||||
|
||||
Lo que ves en la lista de observaciones (watch list) es normal y se debe a la optimización que hace el compilador al generar el código máquina resultante.
En teoría, desactivando la optimización deberías ver el valor que esperas. Otra forma de conocer el valor de la variable contador, sin desactivar la optimización, es "provocar" que dicha variable tenga mayor uso dentro del ciclo. Por ejemplo:
Cabe mencionar que, aún con la optimización que Delphi hace del código máquina, tu programa se ejecutará como lo esperas (internamente el programa usa otro "contador" para la asignación, en lugar de I). Espero te resulte útil. Hasta pronto. Al González. |
#3
|
||||
|
||||
Hola,
Se que no voy a poder aportar mucho al tema. Lo mío es más una duda. Aparte de que esto se ve afectado por el optimizador de código, y como dice Al que el valor de i "poco se usa" y significado tiene a efectos del algoritmo (según lo poco que tengo entendido) ¿es posible que en última juegue el modo en como "traduce" el compilador las líneas?. Yo me imagino, puesto que yo le escapo al assembler y niveles tan bajos, que internamente el compilador traduce a esas líneas como una instrucción del tipo "brinco si es cero"... no estoy totalmente seguro de como sería en inglés... ¿jump to zero"? Y creería que se basa en que alguna variable (o mejor dicho, registro) va decrementando hasta llegar a cero lo cual hace que se salte a la siguiente rutina fuera del ciclo. Saludos, |
#4
|
||||
|
||||
Solo una observacion
Aparte de lo comentado por Alberto y Delphius ,te hago una observacion:
Si has declarado tu Array asi: Eso siginifica que tus indices deben empezar en uno (1) y no en cero (0). por lo que tu ciclo for deberia ser asi: Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Extraño comportamiento de ADO | r1d2m3 | Conexión con bases de datos | 3 | 12-12-2009 19:08:32 |
comportamiento extraño ClientDataSet con DBX | TrUnkS | Conexión con bases de datos | 6 | 31-03-2009 01:50:28 |
Comportamiento extraño en StringList | MaMu | Varios | 7 | 19-06-2007 19:07:07 |
Comportamiento extraño de DisplayFormat | Thales | Conexión con bases de datos | 0 | 02-12-2005 21:56:32 |
Comportamiento extraño con InnoBD | brandolin | MySQL | 0 | 20-10-2003 14:34:09 |
|