Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   variable inexistente (https://www.clubdelphi.com/foros/showthread.php?t=44694)

mauqu 12-06-2007 21:11:57

variable inexistente
 
Estimados, muchas gracias por la respuesta a mi anterior pregunta, ahora tengo una nueva, algunas veces cuando creo variables locales en un procedimiento o función y le asigno un valor y por último pongo un punto de interrupción en esta asignación, el punto de interrupción se pone con una cruz y el flujo nunca pasa por esa asignación, por que ???

Código Delphi [-]
procedure unProcedimiento;
var
  i:integer;
  s:char; //esta variable no la toma en cuenta el flujo
  l:string;
begin
  i:=0; //por acá pasa bién
  s:=char(66); //por acá no pasa
  l:='OTRA VARIABLE' // por acá pasa bíen
end;

gracias.

dec 12-06-2007 21:16:58

Hola,

En este caso el compilador "no se para" porque en realidad no haces uso de ninguna variable luego de declararlas. O sea, el compilador dice, "subrimo las instrucciones de declaración de estas variables, puesto que no se utilizan". :)

Código Delphi [-]
procedure unProcedimiento;
var
  i:integer;
  s:char; //esta variable no la toma en cuenta el flujo
  l:string;
begin
  i:=0; //por acá pasa bién
  s:=char(66); //por acá no pasa
  l:='OTRA VARIABLE' // por acá pasa bíen

  ShowMessage(s);
end;

Prueba ahora verás como "se para". :)

maeyanes 12-06-2007 21:24:31

A lo que se refiere Dec es que el compilador de Delphi hace optimización de código, esto es, con variables que solo se inicializan y luego no las vuelves a usar, el compilador las elimina del ejecutable para ahorro de memoria, lo que sucede en tu caso.


Saludos...

egostar 12-06-2007 21:30:59

Pero si quieres "forzar" a que pase por esas variables, colócalas como globales y no como locales. Digo, si es cosa de aferrase:D:D:D

Salud OS.

roman 12-06-2007 22:27:29

También puede anular la optimización en Project|Options, pestaña Compiler.

// Saludos

dec 12-06-2007 22:29:54

Hola,

Cita:

Empezado por egostar
Pero si quieres "forzar" a que pase por esas variables, colócalas como globales y no como locales. Digo, si es cosa de aferrase :D :D :D

¿Y por qué "pasará" por las variables globales (pero que no se usan) y no por las variables locales? ¿Alguien sabe? :)

roman 12-06-2007 22:33:09

Supongo que porque el compilador no ve a distancia y no puede determinar si tal variable se usa o no en otra parte de la aplicación.

// Saludos

egostar 12-06-2007 22:39:06

Yo supongo que las variables locales solo son accesibles en el procedimiento o función en que es declarada por lo que es 'fácil' saber si son usadas o no, pero las variables globales pueden ser accesibles incluso desde cualquier otra unidad, por lo que sería demasiado trabajo para identificar si es usada o no.

Bueno, eso pienso:rolleyes::rolleyes:

Salud OS.


La franja horaria es GMT +2. Ahora son las 12:50:54.

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