Ask a Question

Calling Functions From .NET Assemblies - Array

balinta01
Occasional Contributor

Calling Functions From .NET Assemblies - Array

Hi all!



I have a C# method looking like this:

public string[] Foo(int a, int b, int c)



I would like to call it in TestComplete like this:

var t = testCompleteHelper.Foo(0, 0, 0); 

Log.Message("foo: "+t[0]);  



For some reason TestComplete says the value is undefied.



string, int as return values work perfectly fine for me, but somehow string array doesnt seem to do in TestComplete. I've tried to use it via OleValue, but it did not work either: t[0].OleValue or t.OleValue[0]



I would really appreciate any help.



Best Regards,

Attila
3 REPLIES 3
AlexeyK
SmartBear Alumni (Retired)

Hi Attila,


Try using the following code --




var arr = testCompleteHelper.Foo(0, 0, 0); 

Log.Message("foo: " + arr.GetValue(0).OleValue);  


When you call your .NET method, TestComplete gets the array object as it is specified in .NET. To reach array items, you have to use this object's methods.


I guess, managed applications actually work with the same objects too. However, the C# compiler adds all the needed helper calls behind the scenes, so you use a simpler notation (e.g. arr[0]) in C# source code.

I’m not a member of the SmartBear Support Team, I’m just helping users in this community.
Any views or opinions expressed do not necessarily represent those of SmartBear Software.

-----

Hi,

 

I am facing a similar problem with String Array in JavaScript.

I am trying to pass a String array to a parameter but it always falis with Type Mismatch error.

 

Below is the JavaSript code that I am using.

 

dotNET.<dll>.<class1>.GetInstance.<field> = ["/INI=C:\\Temp\\Text.txt"];

 

the <field> above is expecting a DotNet String array but it is not accepting JavaScript array. is there a way to cast JS array to dotNet array.

 

 

Thanks,

Yusuf

Hi Yusuf,

 

Try the advice by @HKosova from here: https://community.smartbear.com/t5/TestComplete-Functional-Web/Working-with-array-in-dotNET/m-p/8915...

 

> dotNET.<dll>.<class1>.GetInstance.<field> = ["/INI=C:\\Temp\\Text.txt"];

Also, I am not sure about .GetInstance() call - maybe you first must create an instance of the object by calling its constructor (one of .zctor() methods) and work with the property of the created instance.

 

Regards,
  /Alex [Community Champion]
____
[Community Champions] are not employed by SmartBear Software but
are just volunteers who have some experience with the tools by SmartBear Software
and a desire to help others. Posts made by [Community Champions]
may differ from the official policies of SmartBear Software and should be treated
as the own private opinion of their authors and under no circumstances as an
official answer from SmartBear Software.
The [Community Champion] signature is assigned on quarterly basis and is used with permission by SmartBear Software.
https://community.smartbear.com/t5/Community-Champions/About-the-Community-Champions-Program/gpm-p/252662
================================
cancel
Showing results for 
Search instead for 
Did you mean: