Hi David,
The variable in a macro must be a global variable if you want to access it
inside another macro.
Also make sure that you do not have gROOT->Reset() at the beginning
of your second macro. This will erase all CINT global variables
definitions.
Rene Brun
On Fri, 8 Jun 2001, David Faden wrote:
> Hi,
> A click on a TButton drawn in compiled code seems to be erasing the
> definitions of variables in the interpreted code that is calling the
> compiled code. The TButton executes a command inspired by dialogs.C:
>
> Char_t command[256];
> sprintf(command,
> "{TH1 *h__ptr = (TH1*)0x%x; h__ptr->GetXaxis()->UnZoom();
> h__ptr->GetYaxis()->UnZoom(); ((TPad*)0x%x)->Modified();}", histo,
> displayPad);
> TButton *resetButton = new TButton("Reset view",
> command, 0.025, 0.025, 0.5, 0.15);
>
> A macro calls a method of our compiled class, which brings up a
> TCanvas with a TButton in it. If the TButton is clicked and its method
> executed, ROOT bombs out of the macro complaining of "No symbol xxxx in
> current scope", where xxxx is the name of a variable defined in the macro.
> I haven't been able to reproduce this problem in simpler, purely
> interpreted code.
> If a macro calls compiled code, which in turn executes some
> interpreted code (via gROOT->ProcessLine() as TButton seems to), will
> all variable declarations in the original macro be lost?
> I have a couple of workarounds (probably more couth for compiled code
> anyway), but I'm curious what's going on.
> This code was run under ROOT 3.01/02 14 May 2001 under Red Hat Linux
> 6.1 on an i386.
> Thank you.
>
> David
>
This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:49 MET