Passing Variables between classes in modules

okibi okibi at ratedo.com
Thu Apr 26 10:39:10 PDT 2007


Johan Granberg Wrote:

> okibi wrote:
> 
> > Johan Granberg Wrote:
> > 
> >> okibi wrote:
> >> 
> >> > okibi Wrote:
> >> > 
> >> >> Johan Granberg Wrote:
> >> >> 
> >> >> > okibi wrote:
> >> >> > 
> >> >> > > I was wondering how I would go about passing a variable between
> >> >> > > two classes that are within different modules in a program. Here
> >> >> > > is an example of what I mean:
> >> >> > > 
> >> >> > > Let this be modMain:
> >> >> > > 
> >> >> > > //begin modMain
> >> >> > > 
> >> >> > > module modMain;
> >> >> > > 
> >> >> > > //imports go here
> >> >> > > 
> >> >> > > import modPopUp;
> >> >> > > 
> >> >> > > class modMain : MainWindow //this is for gtkD
> >> >> > > {
> >> >> > >   //this() would build the MainWindow
> >> >> > >   
> >> >> > >   modPopOp popWindow = new modPopUp();
> >> >> > > }
> >> >> > > 
> >> >> > > void main(char[][] args)
> >> >> > > {
> >> >> > >   GtkD.init(args);
> >> >> > >   modMain mMain = new modMain();
> >> >> > >   GtkD.main();
> >> >> > > }
> >> >> > > 
> >> >> > > //end modMain
> >> >> > > 
> >> >> > > Now let this be modPopUp:
> >> >> > > 
> >> >> > > //begin modPopUp
> >> >> > > 
> >> >> > > module modPopUp:
> >> >> > > 
> >> >> > > //imports go here
> >> >> > > 
> >> >> > > class modPopUp : MainWindow
> >> >> > > {
> >> >> > >   //this() would build the MainWindow
> >> >> > >   
> >> >> > >   char[] myStr;
> >> >> > >   //function runs to generate myStr
> >> >> > > }
> >> >> > > 
> >> >> > > //end modPopUp
> >> >> > > 
> >> >> > > What I'm asking is how do I pass myStr from modPopUp back to
> >> >> > > modMain?
> >> >> > > 
> >> >> > > Thanks!
> >> >> > 
> >> >> > Would popWindow.myStr work or have I misunderstood your question?
> >> >> 
> >> >> It doesn't throw an error, however it grabs a null value instead of
> >> >> what the function sets the variable to.
> >> > 
> >> > Now if I reference the variable right after creating the instance of
> >> > modPopUp, it will go ahead and try to grab the value without waiting to
> >> > the instance to run the function to set it. I bet that's why it's
> >> > grabbing a null value. Is there another method to pass the variable, or
> >> > is there a way to lock modMain until modPopUp returns?
> >> 
> >> I can't determin that from the code above, it would be useful to know
> >> what calls the function that sets myStr. If it is called from the
> >> constructor my earlier suggestion would work, but if it is called by some
> >> other thread something more is required. If as I suspect from your
> >> comments myStr is set from another thread you should be able to acquire a
> >> lock in the constructor and then release it in the function that sets
> >> myStr.
> >> 
> >> hope this helps you.
> > 
> > Well, I know the value is coming up null as it doesn't wait for the
> > instance of modPopUp to finish, and is there not getting the data. How
> > would I go about locking modMain until modPopUp is finished?
> 
> I can't really tell without seeing more code, the most important information
> is where the function that creates myStr is called from followed by the
> functions that creates myStr itself.

It really is that simple of code though. The "function" is as follows, however:

void setmyStr(Button Button)
{
  myStr = test text";
}

This function responds to a button press on the window created in this().


More information about the Digitalmars-d-learn mailing list