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

 
 
Herramientas Buscar en Tema Desplegado
  #2  
Antiguo 16-12-2011
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 30
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
Hola César.

Esto se debe a la manera en que el compilador genera el código máquina. A fin de optimizar éste, si la variable contador no es referida dentro del For, su existencia es obviada y el código máquina solamente cumple el requisito de repetir el ciclo tantas veces como la cabecera del for lo indica.
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
Var
  I :Integer;
begin
  For I := 1 To 12 Do
    Caption := Caption + 'x';
end;

En cambio, si la variable contador es referida dentro del ciclo, ésta contendrá el valor que se espera.
Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
Var
  I :Integer;
begin
  For I := 1 To 12 Do
    Caption := Caption + IntToStr (I);
end;

Puedes comprobar lo que hay detrás de segmentos de código como los anteriores, ejecutando paso a paso y mirando la ventana CPU del depurador. Notarás que para el primero usa una instrucción DEC mientras que para el segundo emplea una instrucción INC.

Como dato adicional, algo de la ayuda de Delphi que lleva cierta relación con el tema:
Cita:
Empezado por apartado "For statements"
After the for statement terminates (provided this was not forced by a break or an exit procedure), the value of counter is undefined.
Saludos y que haya concluido aquella restricción de teclados.

Al González.
Responder Con Cita
 



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
El programa se queda "colgado" mientras copia y luego "despierta" NeWsP OOP 5 10-03-2010 22:05:40
No funciona "AGREGAR O QUITAR PROGRAMAS" soler Varios 3 13-01-2008 23:28:12
"(nombre + ' ' + apellidos)" no funciona molina669 SQL 9 07-12-2007 16:36:08
Necesito llamar a métodos de clases "hija" desde su clase "padre" Flecha OOP 17 20-04-2007 00:03:53
Código "erroneo" pero que funciona ixMike Varios 8 11-04-2007 18:57:08


La franja horaria es GMT +2. Ahora son las 01:38:46.


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