Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Más D2010 (https://www.clubdelphi.com/foros/showthread.php?t=67198)

mlara 05-04-2010 03:27:09

Más D2010
 
Por favor observen esta porción de código:

Código:

const
    Palabra: string[20] = '';
begin
  if Key = 32 then
    Palabra := '';
  else
    if Key in LetrasPermitidas then
      Palabra := Palabra+Chr(Key)
    else
      Palabra := '';

  ...

  Key := 0;
end;

En D7 funciona sin problemas. En D2010 me genera este mensaje al compilar:

[DCC Error] Unit5.pas(96): E2064 Left side cannot be assigned to

Casimiro Notevi 05-04-2010 10:29:37

Lo raro es que funcione en delphi 7.
Si lo declaras como constante no debería permitir modificarlo, para hacerlo debería ser una variable.

Ñuño Martínez 05-04-2010 11:15:01

Creo que en las opciones de compilación había una opción que permitía asignar valores a las constantes, esto es, que en realidad no hubiera diferencias entre CONST y VAR. Seguramente lo tienes activado en Delphi 7 y desactivado en Delphi 2010.

De todas formas, nunca he entendido por qué existe esa opción. Si necesitas asignar un valor, ¿por qué usar CONST?:confused:

mlara 05-04-2010 21:33:21

Sí, la verdad es que se me había olvidado marcar la opción. De hecho se debe un poco a que ahora la presentación de las opciones del compilador es diferente en D2010. La opción se llama Assignable Typed Constants.

Por otra parte,

Cita:

Empezado por Ñuño Martínez (Mensaje 359236)
Si necesitas asignar un valor, ¿por qué usar CONST?:confused:

Claro, las cosas existen por algo. En el fragmento de código se puede ver lo que sucede. Es en realidad un constante para el ámbito global, es decir, que cuando el procedimiento o la función termina de ejecutarse de ninguna manera se libera la memoria utilizada por la costante ni se altera su contenido. Cuando vuelves a llamar al procedimiento o a la función la constante ha conservado su valor, pero por alguna razón queremos actualizarlo. Es como si se tuviera una variable global pero de acceso local, es decir de acceso sólo desde la función o el procedimiento que la contiene.

Muchas gracias.

Ñuño Martínez 06-04-2010 09:04:42

Pues en ese caso, mlara, veo más práctico lo siguiente.
Código Delphi [-]
UNIT EjemploVariableConstante;

INTERFACE

   FUNCTION Constante: INTEGER;

IMPLEMENTATION

VAR
   VariableConstante: INTEGER;

   FUNCTION Constante: INTEGER;
   BEGIN
      RESULT := VariableConstante;
   END;

END.
Cuestión de gustos, supogo.

Lepe 06-04-2010 23:17:41

Pero es accesible desde todas las funciones de la parte implementación, y "no hay necesidad de ello", porque sólo se va a usar en una función.

Desde otro punto de vista, mejora la legibilidad del código. Cuando ves una variable de implementación, lo primero que piensas es "a saber donde se utiliza".

mlara 10-04-2010 01:09:35

Si, la verdad yo prefiero usar const ;). No es siempre, es un caso particular, y la constante sólo la necesito en un procedimiento.

JXJ 10-04-2010 02:20:32

a mi luego eso me pasa,,, con delphi 7, 2006, 2007,
cuando estoy modificando un programa
y lo compilo me da ese error

casi siempre se resuelve, borrando las dcu, de los archivos que modifique,
y el compilador no reconstruyo solo trato de enlazar-


La franja horaria es GMT +2. Ahora son las 21:27:27.

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