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
  #1  
Antiguo 20-04-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Extraer nombre de unidad en tiempo de ejecución.

Buenas foristas,

Llevo desde hace tiempo intentando obtener información sobre la unidad, u objeto en ejecución.
Viendo en CodeGear he encontrado un ejemplo sencillo de como extraer el nombre de la unidad donde está declarado la clase de un objeto. La función es sencilla:

Código Delphi [-]
function GetUnitName(argObject: TObject): string;
var
  ptrTypeData: PTypeData;
begin
  if (argObject.ClassInfo <> nil) then
  begin
    ptrTypeData := GetTypeData(argObject.ClassInfo);
    Result := ptrTypeData.UnitName;
  end;
end;

Lo que tengo pensando es determinar ciertos "permisos" para acceder a un dato. Veran... yo estoy declarando un form genérico el cual contiene un array de tamaño fijo (por el momento) del tipo variant. Mi idea es emplear ese array y estar evitando declarar variables. Entonces se me ocurrió la idea de darle la posibilidad de definir algo como "permisos" para acceder al contenido de las variables. Algo como public y private.

Tengo pensado hacer algo como:

// En algún momento anterior...
ElArray[4].Permiso = pPrivate;

Con esto estoy indicando que quiero que el contenido de la posición 4 sea privado para el form.

De tal modo que cuando haga esto:

ExtractValue(Index: integer, ToCopy: ¿?);

Siendo ExtractValue un procedimiento con el que cuenta la clase, Index es la posición del array a examinar y ToCopy alguna variable o propiedad de algún objeto.

Pueda determinar si ToCopy puede o no acceder al dato almacenado en la posición Index del array. De modo tal que si ToCopy está declarado en una unidad (si es una variable) o es una propiedad de algún objeto (instancia... claro está) declarado dentro de la unidad se le permita pasar dicho valor.
Pero claro... si ToCopy está en otra unidad... no se le permita acceder a este dato, arroyando una excepción.

Un planteo que se me estaba ocurriendo es tener dos arrays: uno para privado y otro para público...

Se que no es muy elegante hacer lo que pretendo.... sobre todo si es más sencillo hacer cosas como:

Código Delphi [-]
TForm1 = class(Tform)
....

public
  variable1: tipo;
  variable2: tipo;
private
  variable3: tipo;

....
end;

De modo que con un simple:

Código Delphi [-]
algo := form1.variable1;

Mi intención es evitarme estar declarando estas variable. Y Al mismo tiempo que las herencias de dicho Form puedan implementar mayores funciones, procedimientos... de acuerdo a la necesidad del momento.

Escucho alternativas.
Espero que se me haya entendido algo...

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
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
Saber nombre de la unidad de CD rex Varios 2 18-08-2005 23:16:08
Obtener el Nombre de un Campo en Tiempo Ejecucion Jvilomar Conexión con bases de datos 2 02-08-2004 23:05:22
Extraer el nombre de una imagen acrophet Gráficos 5 08-07-2004 16:12:27
Cambiar el nombre de la unidad de DD? danytorres Varios 1 05-02-2004 07:07:58
saber el nombre de un control creado en tiempo de ejecucion xxxlincexxx Varios 10 10-08-2003 23:45:54


La franja horaria es GMT +2. Ahora son las 12:51:33.


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