FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
¿BCB6 Como Cambiar valor Variable que esta en otra unit?
Tengo este problema que no entiendo.
tengo un form principal desde el cual llamo una funcion void Código:
void __fastcall inicializa() { DirUserDoc = "super mira nada mas"; } este header tiene una variable strign DirUserDoc pero no se muestra el cambio. al llamarla desde el form principal no se muestra el texto Obvio en delphi si puedo hacer esto de llamar procedures funciones que modifican variables y obtener su valor desde cualquier unit pogo el code de las units y sus headers. Header principal que llama a la funcion en otro archivos unit Código:
//--------------------------------------------------------------------------- #ifndef Unit1H #define Unit1H //--------------------------------------------------------------------------- #include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> //--------------------------------------------------------------------------- class TForm1 : public TForm { __published: // IDE-managed Components TButton *Button1; TButton *Button2; TButton *Button3; void __fastcall Button1Click(TObject *Sender); void __fastcall Button2Click(TObject *Sender); private: // User declarations public: // User declarations __fastcall TForm1(TComponent* Owner); }; //--------------------------------------------------------------------------- extern PACKAGE TForm1 *Form1; //--------------------------------------------------------------------------- #endif Código:
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include <String> #include "Unit1.h" #include "Unit2.h" #include "Unit3.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- /* Form2 = new TForm2(Application); Form2->ShowModal(); delete Form2; } */ void __fastcall TForm1::Button1Click(TObject *Sender) { TForm2 *Form2; Form2 = new TForm2( Application ); try { Form2->Label1->Caption = "dasdsads"; Form2->mivar = "mnega"; Form2->ShowModal(); ShowMessage(Form2->mivar); } __finally { Form2->Free(); } } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { inicializa; // desde la funcion se debe de cambir el valor de un string pero no lo cambia sale en blanco ShowMessage(DirUserDoc); // esto si funciona pero son numeros ShowMessage( IntToStr( sum(5,5)) ); resultadosuma = sum(40,50); ShowMessage(IntToStr(resultadosuma)); } //--------------------------------------------------------------------------- Código:
//--------------------------------------------------------------------------- #ifndef Unit3H #define Unit3H //--------------------------------------------------------------------------- #include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <String> bool inicializado; String DirUserDoc; int resultadosuma; void __fastcall inicializa(); void __fastcall desinicializa(); int sum(int a, int b); //--------------------------------------------------------------------------- #endif Código:
//--------------------------------------------------------------------------- #pragma hdrstop #include "Unit3.h" #include <String> #include "Unit1.h" #include "Unit2.h" #include <vcl.h> //--------------------------------------------------------------------------- #pragma package(smart_init) //--------------------------------------------------------------------------- void __fastcall inicializa() { DirUserDoc = "super mira nada mas"; } void __fastcall desinicializa() { DirUserDoc = "na nanay"; } int sum(int a, int b) { return(a+b); } |
#2
|
|||
|
|||
ya vi cual es el problema.
como quiero modificar la variable DirUserDoc dede la funcion no se puede no se si con algun operador se logra por que si la modifico desde donde la quiero usar entonces si cambia su valor. ¿como modifico variables dentro de la misma unit con una funcion/procedure en la misma unit que es llamada desde otra unit? probe con this-> pero no. |
#3
|
||||
|
||||
Hola JXJ.
Unit1.cpp : Código:
#include <vcl.h> #pragma hdrstop #include "Unit1.h" #include "Unit3.h" #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } void __fastcall TForm1::Button1Click(TObject *Sender) { inicializa(); ShowMessage(DirUserDoc); } Código:
#ifndef Unit3H #define Unit3H #include <vcl> #include <string> extern String DirUserDoc; void __fastcall inicializa(); #endif Código:
#pragma hdrstop #include "Unit3.h" #include <string> String DirUserDoc; void __fastcall inicializa() { DirUserDoc = "super mira nada mas"; } #pragma package(smart_init)
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#4
|
|||
|
|||
wow. gracias eficsa
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Cómo hacer para retornar valores de una Unit a otra | karo | Varios | 6 | 14-03-2009 20:57:28 |
Como averiguar si una unit o datamodule ya está abierto | jjoliveras | OOP | 2 | 20-06-2007 11:28:56 |
como usar el valor de una variable | jesusomarsanche | OOP | 4 | 17-08-2006 19:17:55 |
Ayuda!!Cambiar valor de una variable en biblioteca | pepecharlie67 | Varios | 8 | 13-11-2005 19:17:14 |
¿Como puedo llamar un Procedure desde otra unit? | athal | Lazarus, FreePascal, Kylix, etc. | 11 | 17-05-2004 01:05:20 |
|