Главная страница | назад





Article #26730: Some examples of how to use the TSafeArrayT SAFEARRAY wrappers.

Question

How do I use the SAFEARRAY wrappers provided in C++Builder?

Answer

Below are several examples of how to use the SAFEARRAY wrappers. These are made with both client- and server-side in mind.


#include <safearry.h>
ITestServerDisp thesrv; //sample server object.
thesrv.BindDefault();
//send an array to the server:
TSafeArrayDim1 dim(10); //create a 1-dimensional array with 10 elements
TSafeArrayBSTR1 bstr_array(dim); //of BSTRs
for (int i=0; i<10; i++) //fill it in
bstr_array[i] = WideString("message " + i);
thesrv.SafeArrayPutMethod(bstr_array.Detach()); //send it to the server!
//receive a BSTR array from the server:
//NOTE: only call the below function if you never called Detach()
bstr_array.Destroy(); //clear our current array
thesrv.SafeArrayGetMethod(&bstr_array); //get it from the server!
//BoundsLength is a 0 based array of dimensions
//(BoundsLength[0] is the length of the array at the first dimension)
for (int i=0; i<bstr_array.BoundsLength[0]; i++)
Memo1->Lines->Add(WideString(bstr_array[i]));l
//free our funky array (done automatically in destructor)
bstr_array.Destroy();

Last Modified: 29-JAN-01