Konvertierung von SAFEARRAY

ctac

Mitglied
Hallo Leute.

Wieder ein kleines Problem un wieder bin ich hier.


Ich würde gerne wissen wie man einen SAFEARRAY in ein belibiges C++
array konvertiert und umgekehrt, wie erstellt man einen SAFEARRAY.

Unter SAFEARRAY ist ein DATENTYP gemeint, der von der COM-Schnittstelle zurückgegeben wird. (u.a VB)

Grüsse
ctac
 
Zuletzt bearbeitet:
Alles klar!! hat sich erledigt.

Alles klar hat sich erlädigt..

hier ein Beispiel:


Code:
float f_array[200];
float e_array[200];
for (long int i=0; i<200; i++) {
	f_array[i] = 5.0;
}
SAFEARRAY *test;
long int index;
SAFEARRAYBOUND sub[1];

sub[0].cElements = 200;
sub[0].lLbound = 0;

test = SafeArrayCreate(VT_R8, 1, sub);

for(i=0; i<200; i++) {


SafeArrayPutElement(test, &i, &f_array[i] );


}
int dim = SafeArrayGetDim(test);
//SafeArrayAccessData(test, &e_array);
cout<<"Dimension : "<<dim<<endl;
for(i=0; i<200; i++) {

SafeArrayGetElement(test, &i, &e_array[i] );
cout<<"Element "<<i<<"  "<<e_array[i]<<endl;
}
 
Original geschrieben von Terrance & Philipp
Was ist ein SafeArray?

HALLO Terrance & Philipp,


SAFEARRAY ist ein VisualBasic DATENTYP, der auch bei COM/COM+ - Schnittstellen verwendet wird.

Bzw. wenn man die Rückgabewerte einer COM in ein ARRAY packen möchte, so kriegt man zunächst ein SAFEARRAY zurück (VB-array), den man für C zugänglich machen sollte.

ps: Ich beschäftige mich mit dem COM auch seit kurzem, und kann für 100% Sicherheit nicht garantieren.
 
Alles klar hat sich erlädigt..

hier ein Beispiel:


Code:
float f_array[200];
float e_array[200];
for (long int i=0; i<200; i++) {
	f_array[i] = 5.0;
}
SAFEARRAY *test;

//long + int = größeres int? (sri, Neuling^^)
long int index;
SAFEARRAYBOUND sub[1];

sub[0].cElements = 200;
sub[0].lLbound = 0;

test = SafeArrayCreate(VT_R8, 1, sub);

for(i=0; i<200; i++) {

//Was bewirkt die Funktion + für was stehen die Parameter?
SafeArrayPutElement(test, &i, &f_array[i] );


}

//Hier wird die Größe/Dimension des SAFEARRAYS übergeben?
int dim = SafeArrayGetDim(test);

//SafeArrayAccessData(test, &e_array);
cout<<"Dimension : "<<dim<<endl;

for(i=0; i<200; i++)
 {
SafeArrayGetElement(test, &i, &e_array[i] );
cout<<"Element "<<i<<"  "<<e_array[i]<<endl;
}

Kann das bitte einer mit Kommentar wiedergeben?
Ich bin da ziemlich ratlos :confused:

Allgemein verstehe ich das SAFEARRAY/SAFEARRAYBOUND/.. kaum wenn da jemand fit ist würde ich mich freuen wenn er sich bei mir meldet (PN?!)

Gruß


PS: Ich habe im Code ein paar Kommentare reingekritzelt ;)
 
Zurück