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] |
|
|
|