Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #16  
Antiguo 01-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
Cita:
Posteado originalmente por Ruben_Cu
¿Como es posible que en ocasiones el compilador lo ve bien y en otras no?
Supongo que depende del segmento de memoria en donde se coloque la variable.

Voy a especular porque yo de esto no sé nada:

[especular]
Dependiendo de donde se declare la variable ésta se colocará en distintos segmentos de memoria. Algunas se colocan en el segmento de código (CODE segment) de manera que al escribir en una dirección que no nos corresponde se genera el "Access Violation" al intentar escribir sobre la parte de memoria donde se pone el código cuando el programa se carga en memoria.

En otras ocasiones se colocara en un segmento especial para datos (DATA segment) y, si no hay nada contiguo y se trata de un área que el manejador de memoria de Delphi ya reservó pues no pasará nada grave.
[/especular]

Aquí te pongo una prueba rápida que hice:

Inmediatamente después de la declaración del formulario declara lo siguiente:

Código:
var
  Form1: TForm1;
  Fichas: array[1..5] of Integer;
  Prueba: Integer;
En algún lugar ejecuta la instrucción:

Código:
I := 6;
Fichas[i] := 84;
Caption := IntToStr(Prueba);
¿Qué crees que apareció en la barra de título del formulario?

84

Suena lógico ¿no?

Ficha[6] accedió a la parte de la memoria inmediatamente después del arreglo Fichas. Y ahí estaba la variable Prueba.

No causa error pues es sólo el valor de una variable que se afecta pero desde luego ¡está mal!

No es que el compilador a veces marque errores y a veces no. Es que depende de muchas circunstancias, de qué código tengamos.

El ejemplo anterior muestra que no veremos ningún error pero cuando nuestro programa muestre cosas raras por la alteración del valor de la variable Prueba, pasaremos ratos difícilies (¿estimulantes?) intentando encontrar la falla.

Por eso, repito, debemos ajustarnos a la programación correcta pues no tiene caso intentar averiguar de qué manera está funcionando el compilador.

// Saludos
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 23:06:23.


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
Copyright 1996-2007 Club Delphi