# Konvertierung von SAFEARRAY



## ctac (27. Januar 2003)

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


----------



## ctac (28. Januar 2003)

*Alles klar!! hat sich erledigt.*

Alles klar hat sich erlädigt..

hier ein Beispiel:



```
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;
}
```


----------



## Terrance & Philipp (28. Januar 2003)

Was ist ein SafeArray?


----------



## ctac (3. Februar 2003)

> _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.


----------



## ActiveO2 (21. August 2009)

ctac hat gesagt.:


> Alles klar hat sich erlädigt..
> 
> hier ein Beispiel:
> 
> ...



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

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


----------



## devDevil (21. August 2009)

Nja zu deinem Code: 
	
	
	



```
VT_R8Variable type is 8-byte real.
```
! Man beachte den Datentyp real, nix integer http://msdn.microsoft.com/en-us/library/ms893380.aspx
http://msdn.microsoft.com/en-us/library/ms897140.aspx


----------

