Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Variables entre distintas forms

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Variables entre distintas forms Responder citando

Tengo 3 forms, y deseo utilizar dos variables globalmente en las 3, ya he mirado las soluciones que se proponen en el foro y ninguna me ha funcionado.
Las variables son: int NumUser y short NumFichero
He probado a ponerlas con extern:
Código:
class TForm1 : public TForm
{
__published:   // IDE-managed Components
        TLabel *Label1;
        TLabel *Label2;
        TEdit *Edit1;
        TComboBox *ComboBox1;
        TButton *Button1;
        void __fastcall ComboBox1Change(TObject *Sender);
        void __fastcall Button1Click(TObject *Sender);
     //   void __fastcall CargarForm1(TObject *Sender);
private:   // User declarations
public:      // User declarations
        __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
extern PACKAGE int NumUser;
extern PACKAGE short NumFichero;
void __fastcall CargarForm1(TObject *Sender);
TForm1 *Form1;

y se produce el siguiente error, al utilizar la variable en Unit1:
[Linker Error] Unresolved external '_NumUser' referenced from D:\COPIA DE PROYECTO\UNIT1.OBJ
Quitandole la palabra PACKAGE tampoco funciona.

Tambien he probado declarandolas en el public de la form1:
class TForm1 : public TForm
Código:
{
__published:   // IDE-managed Components
        TLabel *Label1;
...
...
private:   // User declarations
public:      // User declarations
        __fastcall TForm1(TComponent* Owner);
        int NumUser;
        short NumFichero;
};

Pero a la hora de acceder en la unit3, mediante el codigo:
Código:
ShowMessage(Form1->NumUser);

se produce una violacion de memoria en timepo de ejecuccion.

Por si ayuda, en Unit3.cpp tengo:
Código:
#include "Unit3.h"
#include "Unit1.h"

Y en Unit1.cpp:
Código:
#include "Unit1.h"
#include "Unit2.h"
#include "Unit3.h"

Alguna idea, ya no se que intentar. Gracias
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

SAludos...

En cuanto al error que te marca como acceso prohibido de memoria, seguramente es porque cuando intentas accesar a la variable publica, la forma que la contiene todavia no esta creada....

En mi caso, lo que yo trato de casi no hacer o hacer lo menos posible es declarar variables globales, casi siempre las declaro como miembros de mis clases y si las necesito en alguna otra, las paso como parametros, pero si forzosamente necesito que mis variables sean globales, entonces lo que hago es hacer una unidad independiente y ahi declarar mis variables y ya nada mas incluir la unidad en todas las demas donde las necesite... creo que asi se te va a facilkitar mucho mas...

Espero te sirva un poco mi consejo
saludos
_________________
Dirección Municipal de Informática
H. Ayuntamiento de Tijuana
Arriba Lopez Obrador !!!
Los Mexicanos Merecemos Respeto !!!
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.