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: 21
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: 21
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: 28
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: 22
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
  #7  
Antiguo 13-09-2005
Avatar de lucasarts_18
lucasarts_18 lucasarts_18 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Villa Alemana,Chile
Posts: 1.087
Poder: 21
lucasarts_18 Va por buen camino
Hola a todos:

Topé con este hilo ya que tengo una duda sobre las declaraciones globales, ví el último mensaje de crandel y el las declara en la directiva var.

Mi duda es..cuando uno tiene un form, existe la parte public y private y acaso no se puede declarar las variables en la sección public para que puedan acceder desde otras UNIT..

Gracias al que pueda despejar mis dudas..

Saludos..
__________________
No todo es como parece ser...
Responder Con Cita
  #8  
Antiguo 14-09-2005
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 22
Crandel Va por buen camino
Cita:
Empezado por lucasarts_18
Mi duda es..cuando uno tiene un form, existe la parte public y private y acaso no se puede declarar las variables en la sección public para que puedan acceder desde otras UNIT..
Si se declaran las variables en la parte pública de la clase estas pueden ser accedidas a traves de la instancia de la clase, desde la misma Unit y desde otras., esto es cierto.

Pero recuerda ... que se pueda ... no quiere decir que este bien. Todo depende del problema que estemos queriendo resolver.

En este caso lo que yo quise desarrollar es una Unit que sea pública a todas y guarde información común pero que a su vez no dependa de ninguna otra.

Esta es una solución, pero no es la unica. Aunque es muy comun para guardar varibales de configuración y estructuras comunes.

Hay otros programadores que usan clases para almacenar y guardar la configuración del programa, también es válido.
__________________
[Crandel]
Responder Con Cita
  #9  
Antiguo 14-09-2005
Avatar de lucasarts_18
lucasarts_18 lucasarts_18 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Villa Alemana,Chile
Posts: 1.087
Poder: 21
lucasarts_18 Va por buen camino
Cita:
Empezado por Crandel
Si se declaran las variables en la parte pública de la clase estas pueden ser accedidas a traves de la instancia de la clase, desde la misma Unit y desde otras., esto es cierto.
esto vendría siendo así Form2.Mivariable....(Para accederlas desde las otras Unit).

Gracias Crandel por tu respuesta....

Saludos...
__________________
No todo es como parece ser...
Responder Con Cita
  #10  
Antiguo 14-09-2005
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 22
Crandel Va por buen camino
No confundas el consepto de Unit con Clase.

Cuando accedes a una variable de tu clase con la forma Form2.Mivariable, lo puedes hacer desde otra unit o desde la misma unit.

Si accedes a la variable desde algun método de la misma Clase accedes de forma directa con Mivariable.

si accedes desde tu Form1 que esta en la Unit1, accedes con Form2.Mivariable.

Pero tambien podes definir una función externa a la clase pero dentro de tu Unit2, y para acceder a tu varibale del Form2 tambien lo haces con Form2.Mivariable.
__________________
[Crandel]
Responder Con Cita
  #11  
Antiguo 14-09-2005
Avatar de lucasarts_18
lucasarts_18 lucasarts_18 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Villa Alemana,Chile
Posts: 1.087
Poder: 21
lucasarts_18 Va por buen camino
Hola:

Muy agradecido de ti Crandel.

Gracias..
__________________
No todo es como parece ser...
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 19:35:55.


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