Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

Named array

Posted on 2006-07-03
5
Medium Priority
?
324 Views
Last Modified: 2012-05-05
Hi,

Is there a posibility to return a named array from C++ COM dll to ASP?
I have a function that returns VARIANT value.
Can i set it up some how that it vould represent key and value mapping in ASP?

example:
varRetValue("Key1") = "Value1"
varRetValue("Key2") = "Value2"
varRetValue("Key3") = "Value3"

Thanks,
Giedrius
0
Comment
Question by:GiedriusS
  • 2
  • 2
5 Comments
 
LVL 18

Assisted Solution

by:Jose Parrot
Jose Parrot earned 150 total points
ID: 17030770
Hi,

You may pass and return classes, arrays and structs values.

Ex.:

in the program:
{
int A[4];

A[1] = 0;
MyFunction(A); // call the function
// A[1] now is 10
:
:
}


at function code
void MyFunction(int B[])
{
  B[1] = 10;
}

Jose
0
 

Author Comment

by:GiedriusS
ID: 17030932
remote function call is the only way?
0
 
LVL 18

Expert Comment

by:Jose Parrot
ID: 17033588
No.
Classic (non .net) ASP passes a variant containing an array.
To better understand differences of passing parameters by value or by reference to/from ASP, take a look at
http://support.microsoft.com/kb/q197956/

Jose
0
 
LVL 25

Accepted Solution

by:
clockwatcher earned 225 total points
ID: 17035105
First off, in order to call anything from classic ASP, you're going to need to use an ActiveX DLL.  Assuming you know that and are doing that already, probably the easiest way to deal with returning a name/value collection to ASP is to use and return a scripting dictionary.  ASP programmers will be familiar with its use and you don't have to do any of the implementation yourself.  You just need to fill it with key/value pairs in your C++.

I posted an ATL sample (Visual C++ 6 project) at:  https://filedb.experts-exchange.com/incoming/ee-stuff/328-Q_21906708.zip

Here's the gist of it:

#import "C:\WINDOWS\system32\scrrun.dll" no_namespace rename("FreeSpace","FSpace") rename("Unknown", "Unk")

IDictionaryPtr m_Dictionary;

STDMETHODIMP CDictionarySample::GetDictionary(LPDISPATCH* retval)
{


     if (m_Dictionary.GetInterfacePtr() == NULL)
     {
         
          _variant_t key("mykey");
          _variant_t val("myval");

          m_Dictionary.CreateInstance("Scripting.Dictionary");
          m_Dictionary->Add((VARIANT*) &key, (VARIANT*) &val);


     }
     else
     {
          _variant_t key("addedanotherref");
          _variant_t value("again");
         
          m_Dictionary->Add((VARIANT*) &key, (VARIANT*) &value);

     }

     m_Dictionary.AddRef();

     m_Dictionary->QueryInterface(IID_IDispatch, reinterpret_cast<void**>(retval));

     return S_OK;
}


Calling it from vbscript:

set collection = createobject("Q_21906708.DictionarySample.1")

set map = collection.GetDictionary()
wscript.echo map("mykey")
map.add "hello","there"

set anotherref= collection.GetDictionary()
wscript.echo anotherref("hello")

wscript.echo map("addedanotherref")

for each key in anotherref.keys
  wscript.echo key & " = " & anotherref(key)
next
0
 

Author Comment

by:GiedriusS
ID: 17035968
thanks.
0

Featured Post

Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

C++ Properties One feature missing from standard C++ that you will find in many other Object Oriented Programming languages is something called a Property (http://www.experts-exchange.com/Programming/Languages/CPP/A_3912-Object-Properties-in-C.ht…
Article by: evilrix
Looking for a way to avoid searching through large data sets for data that doesn't exist? A Bloom Filter might be what you need. This data structure is a probabilistic filter that allows you to avoid unnecessary searches when you know the data defin…
The goal of the tutorial is to teach the user how to use functions in C++. The video will cover how to define functions, how to call functions and how to create functions prototypes. Microsoft Visual C++ 2010 Express will be used as a text editor an…
The viewer will learn additional member functions of the vector class. Specifically, the capacity and swap member functions will be introduced.
Suggested Courses

916 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question