We use cookies to give you the best experience on our website. If you continue to browse, then you agree to our privacy policy and cookie policy. Image for the cookie policy date
close icon

Need Help With Custom Function with Variables

Hi. I''m new to the calc engine and have a question about what''s passed to my custom function. Here''s a chunk of the code: --------------------------------- CalcQuick calculator = new CalcQuick(); calculator["1111"] = "test"; calculator.Engine.AddFunction("SUBSTRING", new CalcEngine.LibraryFunction(CustomFunctions.ComputeSubstring)); string result = calculator.ParseAndCompute("SUBSTRING([1111],1,2)"); -------------------------------------- Now, in my SUBSTRING function, I''m passed "A1,1,2" in the args parm. I see the ''1'' of ''A1'' means the 1st entry in the variable table (by adding more and getting A2, A3, etc.). What''s the proper method for me to get value ("test") from this so I can perform the substring operation on it? Thanks! Ross

3 Replies

AD Administrator Syncfusion Team April 13, 2006 10:03 AM UTC

Hi Ross, Please refer this sample. SUBSTRING.zip Also please refer SingleDataGridForm.cs in the following sample to add new formula to the formula library. C:\Program Files\Syncfusion\Essential Studio\4.1.0.x\windows\Calculate.Windows\Samples\GridDataBoundGridCalculator\ Let us know if this helps. Thanks for choosing and using Syncfusion Products. Best Regards, Jeba


RR Ross Russell April 13, 2006 02:25 PM UTC

Jeba, you''re almost there, thanks! I had the custom function running okay, but I''m wondering about the passing of virtual variables. If, in the SUBSTRING project you created, there was CalcQuick calculator = new CalcQuick(); calculator["1111"] = "test"; and then you called string result = calculator.ParseAndCompute("SUBSTRING([1111],1,2)");, what''s the proper way to get "test" from the variable in the custom function? I get "A1" passed to me in the first SUBSTRING() parameter. Thanks! Ross


AD Administrator Syncfusion Team April 17, 2006 07:07 AM UTC

Hi Ross, Sorry for the delay in response. CalcQuick objects do not expose a row, col data access model but, the CalcEngine requires such a model. So, CalcQuick uses a row, col access model internally but, only exposes using formula Key values to access formulas. The Hashtable serves as the data store for the CalcQuick instance. The keys are the strings that are used to identify formulas and the values are FormulaInfo objects that hold information on each formula or value. If you have source code please debug through the source, GetValueRowCol function in CalcQuick.cs returns the string corresponding to the cell A1. //CalcQuick.cs public object GetValueRowCol(int row, int col) { string key = this.RowsToKeyMap[row].ToString(); string s = this[key].ToString(); if(s != null && s.EndsWith("%") && s.Length > 1) { double d; if(double.TryParse(s.Substring(0, s.Length-1), NumberStyles.Any, null, out d)) { s = (d / 100).ToString(); } } return s; } Here is the modified sample: SUBSTRING.zip Best Regards, Jeba.

Loader.
Live Chat Icon For mobile
Up arrow icon