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
  #3  
Antiguo 09-01-2017
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
Básicamente, es lo que dice ecfisa.

Y es que en Delphi existen dos grandes clases de constantes: las constantes verdaderas (true constants) y las contantes con tipo o tipificadas (typed constants). La declaración de una constante verdadera sirve para indicarle al compilador que asimile un nombre como "alias" de un valor literal. Así que en todos los lugares donde aparezca el alias utilizado, el compilador estará realmente copiando el valor literal. En cambio una constante tipificada es, en esencia, una variable global con un valor que no puede cambiar.
Código Delphi [-]
Const
  S1 = 'Foo';  // Constante verdadera
  S2 :String = 'Bar';  // Constante tipificada (con tipo explícito)
Para indicar el valor de otra constante (verdadera o no) o el valor predeterminado de un parámetro, el compilador de Delphi sólo admite valores literales o constantes verdaderas. Pero existe una salvedad: para indicar el valor de una constante con tipo explícito puntero, también se puede utilizar la dirección de memoria de algo que Delphi pueda ubicar en tiempo de compilación.

Lo anterior supone que si geolife desea evitar duplicidad de código (no tener que escribir más de una vez la conformación de los ocho vectores), podría declarar sus tipos y constantes así:
Código Delphi [-]
Type
  TYao = (Yin, Yang, YinMutable, YangMutable);
  PAlmacenTrigrama = ^TAlmacenTrigrama;  // Tipo puntero a TAlmacenTrigrama
  TAlmacenTrigrama = Array [1..3] Of TYao;

Const
  Kan :TAlmacenTrigrama = (Yin, Yang, Yin);
  Kun :TAlmacenTrigrama = (Yin, Yin, Yin);
  Zhen :TAlmacenTrigrama = (Yang, Yin, Yin);
  Xun :TAlmacenTrigrama = (Yin, Yang, Yang);
  Qian :TAlmacenTrigrama = (Yang, Yang, Yang);
  Dui :TAlmacenTrigrama = (Yang, Yang, Yin);
  Gen :TAlmacenTrigrama = (Yin, Yin, Yang);
  Li :TAlmacenTrigrama = (Yang, Yang, Yang);
  Trigramas :Array [1..8] Of PAlmacenTrigrama =
    (@Kan, @Kun, @Zhen, @Xun, @Qian, @Dui, @Gen, @Li);

Y obtendrá el mismo funcionamiento cuando pida algo como
Código Delphi [-]
Trigramas [1] [2]

(Recordar que la arroba, en Delphi, sirve para obtener la dirección de memoria —o puntero— de lo que esté expresado detrás de ese símbolo).

Saludos cordiales y feliz año 2017 a todos.

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
Error en Array Jere_84 Varios 5 26-04-2013 00:21:59
Error con Array of String orlando9427 Varios 1 25-01-2011 04:26:20
Declarando un Array dinámicamente dec Trucos 1 25-11-2006 23:25:20
Declarando un array dinámicamente Neftali [Germán.Estévez] Trucos 0 30-06-2006 11:23:51
Error en Array Trecord. alfredosg19 Varios 1 20-03-2005 16:55:04


La franja horaria es GMT +2. Ahora son las 13:46:23.


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