Ich muss Daten aus einem PSafeArray
in Delphi lesen.
Dieses PSafeArray
wird von einer Methode zurückgegeben, die in einer DLL entwickelt wurde in C#. Diese Methode gibt ein zweidimensionales String-Array string[,]
zurück. Wie liest man ein solches PSafeArray
Ergebnis in Delphi?
Antwort
Zu viele Anzeigen?
RRUZ
Punkte
132753
Sie müssen die Funktionen SafeArrayGetLBound
, SafeArrayGetUBound
, SafeArrayGetElement
verwenden.
Versuchen Sie dieses Beispiel
var
LSafeArray: PSafeArray;
LBound, UBound, I: LongInt;
LYBound, UYBound, J: LongInt;
Index: array [0..1] of Integer;
LData: OleVariant;
begin
//holen Sie das PSafeArray
LSafeArray := GetArray;// GetArray ist Ihre eigene Funktion
//holen Sie die Grenzen der ersten Dimension
SafeArrayGetLBound(LSafeArray, 1, LBound);
SafeArrayGetUBound(LSafeArray, 1, UBound);
//holen Sie die Grenzen der zweiten Dimension
SafeArrayGetLBound(LSafeArray, 2, LYBound);
SafeArrayGetUBound(LSafeArray, 2, UYBound);
//über das Array iterieren
for I := LBound to UBound do
for J := LYBound to UYBound do
begin
//setzen Sie den Index des zu holenden Elements
Index[0]:=I;
Index[1]:=J;
SafeArrayGetElement(LSafeArray, Index, LData);
//etwas mit den Daten machen
Memo1.Lines.Add(LData);
end;
SafeArrayDestroy(LSafeArray);
end;