Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-02-2009
poyo poyo is offline
Miembro
 
Registrado: ene 2009
Posts: 47
Poder: 0
poyo Va por buen camino
constantes de classes demasiado estáticas :P

Ayer estaba haciendo unas pruebas con las constantes de classes y la verdad, deja mucho que desear...
Me encontré con un "Internal Error" en el debugger... parece que no le sienta bien el tema bajo ciertas circunstancias.

Como conclusión llegué a que lo que quería hacer no era la manera usando constantes de Classes:

Hice una prueba con las siguientes 3 classes:

Código Delphi [-]
type
  TClass0 = class(TObject)
  public
    const A = '';
  end;

  TClass0CLass = Class of TClass0;

  TClass1 = class(TClass0)
  public
    const A = '111';
  end;

  TClass2 = class(TClass0)
  public
    const A = '222';
  end;

Luego creé un procedure que me devuelva el valor de la constante, dependiendo de la clase:

Código Delphi [-]
function GetaA(AClass: TClass0Class): string;
begin
  with AClass.Create do
  try
    result := a;
  finally
    free;
  end;
end;
y lo siguiente:

ShowMessage(GetAA(TClass0));
ShowMessage(GetAA(TClass1));
ShowMessage(GetAA(TClass2));


el "with AClass.Create do" no es necesario ya que la constante es de Clase y no necesita referencia a instancia alguna. lo hice sólo para probar.

Como verán, a mi entender, debería devolver la constante correspondiente a la Clase que se le pasa... pero no, siempre devuelve '' (vacío) Se ve que hace un cast implícito al tipo que resalté en la declaración de la función.

Les cuento la idea del uso:

Tener una clase con una seria de constantes:
TMyClass = class(TMyClassBase)
public
const Version = '1.0';
const ID = 'ID_CLASE';
const Name = 'Nombre';
const Desc = 'Descripción';
const Author = 'Author name';
...
end;

Entonces, cada vez que heredo una nueva clase, simplemente reemplazo los valores de estas constantes y listo (sólo los que necesito). Muy sencillo, pero no funcionó.
La idea era evitar escribir código, es decir, una función de clase de tipo string para cada uno de esos valores.
Estas constantes se deben ver antes de instanciar los objetos, por eso deben ser de Clase.
Otra opción a las funciones de clases serían las variables de clase, pero requieren inicialización... y estoy escribiendo código otra vez!
parece que no voy a salvarme!

alguna sugerencia o idea?
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
ayuda con variables estáticas !!!!!! david_uh Varios 4 25-07-2007 00:49:14
Classes -Galadriel- Varios 3 06-06-2007 02:06:43
Ayudaaa Pilas estaticas alekandro OOP 6 26-04-2006 14:04:11
Classes o no classes? tramjauer OOP 3 19-08-2005 21:36:17
Direcciones estáticas o dinámicas Aprendiendo Firebird e Interbase 1 02-04-2004 01:07:08


La franja horaria es GMT +2. Ahora son las 11:09:02.


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