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