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 02-10-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Question El cero tiene muchas caras

Acabo de ver esto en los grupos de noticias de borland.

¿Algún gurú me podría explicar por qué la siguiente sentencia no sólo no incomoda al compilador sino que además da el resultado correcto?

Código:
var
  Cero: Integer;

begin
  Cero := SizeOf(while 1 = 1 do begin end);
end;


// Saludos
Responder Con Cita
  #2  
Antiguo 02-10-2003
Avatar de hecjona
hecjona hecjona is offline
Miembro
 
Registrado: may 2003
Ubicación: Guadalajara, Jal. Mexico
Posts: 84
Poder: 22
hecjona Va por buen camino
No soy guru pero, tengo una opinion al respecto

si vez la ayuda veras:

function SizeOf(X): Integer;


X no tiene tipo nisiquiera variant;

Si buscas la declaracion o el cuerpo de la funcion no la vaz a encontrar aunque la ayuda te diga que esta en system..


Creo que Sizeof es una funcion de tipo interna (tipo macro en c++) que esta diseñada para muchas cosas de las que no se da informacion

Da lo mismo con:

SizeOf(if j=0 then j:=j+1);
sizeof(repeat j:= j+1; until j = 10);

siempre te devuelve 0, creo que es poque puede evaluar una sentencia de control y el resultado en Bytes es 0;
__________________
Saludos desde la tierra del tequila y las mujeres hermosas
Responder Con Cita
  #3  
Antiguo 03-10-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
deacuerdo con lo que dices, pero entre los bucles que tu pones y el que propone el amigo Román hay una sutil diferencia. Los tuyos son finitos y el de Román no
Responder Con Cita
  #4  
Antiguo 03-10-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
No deja de ser curioso. "Funciona" con los ciclos que muestra hecjona y también, por ejemplo con

SizeOf(try except end)

Ciertamente que SizeOf no es realmente una función sino una de esas cosas "mágicas" del compilador que "simplemente" sustituye la instrucción por el tamaño de la variable o tipo de datos que puede determinarse al momento de la compilación por la declaración de la variable o tipo.

Lo curioso es pensar en cómo el compilador efectúa este proceso de manera que en la lista de símbolos que va leyendo conforme pasa sobre el código fuente trata por igual una variable, tipo o sentencia de control.

Aunqué veo muy difícil que algún programa falle por un hecho así (¿quién, por equivocación, escribiría algo así?) se trata de un error, o por lo menos una omisión en el compilador.

En fin, siempre hay algo nuevo bajo el sol

// 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


La franja horaria es GMT +2. Ahora son las 06:59:47.


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