FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
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·.:*:.· |
#2
|
|||
|
|||
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 |
#3
|
||||
|
||||
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·.:*:.· |
#4
|
||||
|
||||
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. |
#5
|
|||
|
|||
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 |
#6
|
||||
|
||||
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:
Espero que ayude y aclare Suerte Crandel
__________________
[Crandel] |
#7
|
||||
|
||||
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... |
#8
|
||||
|
||||
Cita:
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] |
#9
|
||||
|
||||
Cita:
Gracias Crandel por tu respuesta.... Saludos...
__________________
No todo es como parece ser... |
#10
|
||||
|
||||
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] |
#11
|
||||
|
||||
Hola:
Muy agradecido de ti Crandel. Gracias..
__________________
No todo es como parece ser... |
|
|
|