01-23-2013 08:52 AM
Hello,
I want to modify a globalvariable in a function, at first I did it this way:
class Global_output_class GlobalDim("Correlation_Status,fail_part,End_Exp") dim pouet Correlation_Status = 12 Call Correlation() pouet = Correlation_Status Function Correlation() Dim Global_output_class_sub Set Global_output_class_sub = new Global_output_class Correlation_Status = 1 fail_part = 2 End_Exp = 3 Global_output_class_sub.CorrelationStatus = Correlation_Status Global_output_class_sub.failpart = fail_part Global_output_class_sub.EndExp = End_Exp set Correlation = Global_output_class_sub End function
In this case: correlation_status receive the value 12, then I go to my function correlationn() where it became 1
Then it goes out of the subfunction and takes the previous value from the program(12) ( I dont want that)
To solve the problem I made it this way:
class Global_output_class public CorrelationStatus public failpart public EndExp end class GlobalDim("Correlation_Status,fail_part,End_Exp") Correlation_Status = 12 Set Global_Output = Correlation() Correlation_Status = Global_Output.CorrelationStatus fail_part = Global_Output.failpart End_Exp = Global_Output.EndExp pouet = Correlation_Status Function Correlation() Dim Global_output_class_sub Set Global_output_class_sub = new Global_output_class Correlation_Status = 1 fail_part = 2 End_Exp = 3 Global_output_class_sub.CorrelationStatus = Correlation_Status Global_output_class_sub.failpart = fail_part Global_output_class_sub.EndExp = End_Exp set Correlation = Global_output_class_sub End function
This way my global value are recopied in themselves after leaving the subprogram
I got a lot of variables, is there any easier way so the global variable modified in a function keep the value after leaving the function?
Thanks for help,
Fred
Solved! Go to Solution.
01-24-2013 01:18 AM
Hi Fred,
it is possible to use a global defined variable but the better way is to use to use a funtion call (or procedure call) with parameters. Please find first the good solution for a funcion call with parameter and the sub-optimal way with an global valiable:
dim oParameter set oParameter = new cGlobal_output_class oParameter.Correlation_Status = 12 msgbox "Correlation_Status before Call Correlation: " & oParameter.Correlation_Status Call Correlation(oParameter) msgbox "Correlation_Status after Call Correlation: " & oParameter.Correlation_Status '------------------------------------------------------------------------------- Function Correlation(oPara) msgbox "Correlation_Status in the FUNCTION before change: " & oPara.Correlation_Status oPara.Correlation_Status = 1 oPara.fail_part = 2 oPara.End_Exp = 3 msgbox "Correlation_Status in the FUNCTION after change: " & oPara.Correlation_Status End function '------------------------------------------------------------------------------- class cGlobal_output_class dim Correlation_Status,fail_part,End_Exp end class
call GlobalDim("oPouet") dim oPouet set oPouet = new cGlobal_output_class oPouet.Correlation_Status = 12 msgbox "Correlation_Status before Call Correlation: " & oPouet.Correlation_Status Call Correlation() msgbox "Correlation_Status before Call Correlation: " & oPouet.Correlation_Status '------------------------------------------------------------------------------- Function Correlation() msgbox "Correlation_Status in the FUNCTION before change: " & oPouet.Correlation_Status oPouet.Correlation_Status = 1 oPouet.fail_part = 2 oPouet.End_Exp = 3 msgbox "Correlation_Status in the FUNCTION after change: " & oPouet.Correlation_Status End function '------------------------------------------------------------------------------- class cGlobal_output_class dim Correlation_Status,fail_part,End_Exp end class
Greetings
Walter
01-24-2013 02:55 AM
Thanks, the secund seems much better for me 🙂
I just wonder, what means the little "o" in "oPouet" and the little "c" in "cGlobal_output_class"?
01-24-2013 03:09 AM
I put always the type of a variable in front of the name (c is a class, o is an object, i is integer, ...)
Greetings
Walter