Grösse eines Safearrays
-
Hallo,
kurz und knapp:
Wie kann ich die Grösse eines SafeArrays ermitteln?Besten Dank für eure Antworten!
-
Hallo,
was ist ein SafeArray?
mfg
v R
-
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.
Das Ding kann man selbstverständlich auch in C++ verwenden.
-
Was meinst du mit Größe ? Die Anzahl der Elemente ? Die Bytes im Speicher ?
Auf beides kannst du dir selbst eine Antwort geben durch deine eigenen Links. Da ist beschrieben wie so ein SAFEARRAY aufegbaut ist.
Zusätzlich evtl. noch folgendes : SAFEARRAY
-
Achso. Na, schau dir doch mal den ersten Link deiner google-Suche an. Besonders
die Struktur + den Erklaerungen der msdn.mfg
v R
-
Jupp, auf meinen eignen Link war ich natürlich scho drauf, bin aber irgendwie nicht schlau draus geworden. Es müsste doch irgend einen Befehl à la "SafeArrayGetSize()" geben.
Gemeint ist übrigens die Anzahl der Elemente!
-
Wenn du ne fertige Funktion suchst frag mal im WinAPI-Forum.
Hier kann ich nur soviel dazu sagen:typedef struct tagSAFEARRAY { USHORT cDims; // Number of dimensions USHORT fFeatures; // Misc flags inc element type ULONG cbElements; // Element size ULONG cLocks; // Lock count PVOID pvData; // Pointer to data SAFEARRAYBOUND rgsabound[ cDims]; // Array of dimension structures } SAFEARRAY; // SAFEARRAY Dimension structure typedef struct tagSAFEARRAYBOUND { ULONG cElements; // Number of elements in dimension LONG lLbound; // Lower bound of dimension (usually 0) } SAFEARRAYBOUND; //Das ist eigentlich alles was du wissen musst um an die Anzahl der Elemente zu kommen //Addier einfach die Anzahl der Elemente in jeder Dimension //Wenn jede Dimension gleichviele Elemente hat dann multipliziere die Dimensionen mit den Elementen //---- snip --------- SAFEARRAY array; array.cDims; //<--- Das ist die Anzahl der Dimensionen array.rgsabound[0].cElements; //<--- Anzahl der Elemente in Dimension 0 //------ snap ------
-
Ok, ich versuch das mal zu verwerten!
Besten Dank schon mal!