?
Hallo,
JackShepard schrieb:
Hi!
Danke erstmal
So richtig komme mich mit SafeArrayAccessData allerdings nicht weiter, da ich nicht wirklich weiß in welchen Format die Daten abgespeichert sind.
Als Hilfe habe ich nur den VB-Snytax:
[in] BSTR Attribute : attribute name (see below)
[out, retval] VARIANT *pValue : returned value of the attribute
Example
length = link.AttValue(„LENGTH“)
polyline = link.AttValue(„POINTS“)
FOR i = LBOUND(polyline) TO UBOUND(polyline)
x = polyline (i).X
y = polyline (i).Y
NEXT i
Ich habe daher vermutet, dass vielleicht das Safearray direkt zurückgegeben wird:
SAFEARRAY x = link->GetAttValue("POINTS");
Hierbei kommt es allerdings mit zu einer Fehlermeldung, da der Rückgabetyp _variant_t ist und ein Casten in ein Safearray nicht möglich ist ...
Hat jemand eine Idee, wie ich konkret an die Wertepaare im Safearray kommen kann?
Gruß
JackShepard
_variant_t ist nur ein Wrapper für VARIANT, du hast also auch Zugriff auf den Zeiger parray, der auf das SAFEARRAY verweist. Elemente kann man dann direkt mit SafeArrayGetElement holen:
long index = 0;
int x = 0, y = 0; // oder double
_variant_t points = link->GetAttValue("POINTS");
SafeArrayGetElement(points.parray, &index, &x);
++index;
SafeArrayGetElement(points.parray, &index, &y);
MfG,
Probe-Nutzer