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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-04-2005
Avatar de hgiacobone
hgiacobone hgiacobone is offline
Miembro
 
Registrado: may 2003
Ubicación: La Plata, Bs. As., Argentina
Posts: 165
Poder: 22
hgiacobone Va por buen camino
Talking Mas que Globales... Universales !

Hola amigos,
Si, si... ya lo sé. Es una cosa sencilla, pero no me sale.

Necesito declarar una variable (al estilo Global o Public) que almacene un String. Ese string contiene el nombre de la tarea que actualemnte se está llevando a cabo dentro de un determinado módulo. Cuando se cambia el módulo (archivo .PAS por decirlo más burdamente) la tarea cabmbia y la variable se actualiza.

La declaración típica...
var
cTarea: string;

...a nivel público en el TForm principal, es public SOLO dentro de ese ámbito. Desde otros módulos (sin agregar a la instruccion USE de cada módulo el nombre del modulo principal) esa variable no se puede acceder.

Pensé entonces en declarar esa variable en el múdulo de la Aplicación, antes del BEGIN que contiene el famoso Application.Run;, suponiendo que este se encontraba en la punta de la pirámide de módulo y todos verían esa variable global, pero no.

Para proceso multicapa se puede definir las variables como: thread var pirulo:string; pero no sirve en mi entorno.

Hay forma de declarar una variable que sea Universal, o sea accesible desde todos los módulos?
Tal vez se pueda por algíun método "heredar" esa variable y de esa forma ir trasportándola entre los diferentes módulos.

Se aceptan sugerencias,
__________________
Gracias de antemano por vuestra ayuda.
·.:*:.·Yako·.:*:.·
Responder Con Cita
  #2  
Antiguo 29-04-2005
Elfoscuro Elfoscuro is offline
Miembro
 
Registrado: mar 2005
Posts: 59
Poder: 20
Elfoscuro Va por buen camino
No se si será lo mismo, pero yo declaro la variable en una form y luego accedo a ella con el formato form1.variable, aunque normalmente tengo la costumbre de tener una unit (sin form ni nada, es decir, al estilo pascal, no delphi), donde pongo las variables globales, funciones comunes, constantes, etc. Esta unidad la añado al uses.

Pero creo que en tu caso, casi mejor que uses lo de form1.variable



Un saludo
Responder Con Cita
  #3  
Antiguo 29-04-2005
Avatar de hgiacobone
hgiacobone hgiacobone is offline
Miembro
 
Registrado: may 2003
Ubicación: La Plata, Bs. As., Argentina
Posts: 165
Poder: 22
hgiacobone Va por buen camino
Gracias Elfo,
Yo tambien (y creo somos varios) utilizo una unit como RUTINAS.PAS y ahí pongo todas las cosas de posible acceso para diferentes módulos.

Aca la cosa era no seguir sumando módulos en la cláusula USES de cada unidad que acceda a esa variable, para no sobrecargar el entorno.

Voy a probar accediendo con la instarucción Form1.cTarea y despues les cuento.
__________________
Gracias de antemano por vuestra ayuda.
·.:*:.·Yako·.:*:.·
Responder Con Cita
  #4  
Antiguo 29-04-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Una unidad, es precisamente una unidad.

Con esto quiero expresar el concepto como " unidad = uno solo". Cada Unit es independiente de las demás, y no queda más remedio que añadirlo al uses.


Un saludo
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 30-04-2005
fly fly is offline
Miembro
 
Registrado: abr 2005
Posts: 65
Poder: 20
fly Va por buen camino
En cuanto pongas Form1.cTarea Delphi ya te pedira añadir Form1 a la clausula USES, no creo que el hecho de añadir una unidad más "sobrecargue el entorno", y si no crea una unit SÓLO con esa variable, más libiana no podria quedar.

De todas formas casi seguro que hay alguna unit común (Windows,Classes, SysUtils...) a todos tus forms, pon ahí tu variable y listo.

Saludos
Responder Con Cita
  #6  
Antiguo 30-04-2005
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 23
Crandel Va por buen camino
Post

Personalmente no recomiendo que almacenen variables de configuración y demás en un archivo asociado a un formulario.

No se que sentido tienen usar el formulario, dado que solamente necesitan las variables.

Personalmente uso una unit, llamada normalmente uCommon, en la cuyal estan definidos todas las variables globales y tipos que son compartidos en toda la aplicación.

Si se debe agregar en el uses de cada unit para poder tener acceso a estas definiciones, y no produce una sobrecarga ni nada, dado que las variables ya estan definidas y ocupan la misma cantidad de memoria para tu programa independiente de la cantidad de unit en la que la incluyas.

Un ejemplo tipico seria:
Código Delphi [-]
unit CommonBioChat;

interface

uses
  Classes; // todas las unit que necesites incluir, puede no ir ninguna

// algunas constantes
const
  SizeLargeText = 200;


type
  // Estructura de algo que necesiten
  TCommBlock = Packed Record
    a:            Longword;
    b:            Integer;
  end;


// Variables globales que necesiten
var
  // Por ejemplo una lista de algo
  Lista:  TList;

  // variables del estado del entorno para guardarlo en un archivo ini o en el registro
  AnchoFormularioMain: integer;
  AltoFormularioMain: integer;
  TopFormularioMain: integer;
  LeftFormularioMain: integer;

// pueden definir procedimientos como cargar la configuracion
procedure LeerConfig;

implementation

// implementan los prcediminetos o funciones definidas
procedure LeerConfig
begin

end;

end.

Espero que ayude y aclare

Suerte

Crandel
__________________
[Crandel]
Responder Con Cita
Respuesta



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 13:16:12.


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