Wie du die übergibst hängt ganz von der Dokumentation des jeweiligen Objektes zusammen. Das kann man nicht allgemein formulieren.
Aber vielleicht ist folgendes gemeint:
Delphi-Quellcode:
function SafeArray(
const Structure; StructureSize:Integer):PSafeArray;
var Data:Pointer;
PSA:PSafeArray;
begin
PSA:=SafeArrayCreateVector(VT_I1,0,StructureSize);
//SafeArray erstellen (Elementgröße ist Byte =VT_I1 und Länge StructureSize)
if not assigned(PSA)
then
raise Exception.create('
SafeArrayCreateVector')
else
try
if SafeArrayAccessData(PSA,Data)<>s_ok
then //Zeiger auf den zusammenhängenden Speicherblock des Array bekommen
raise Exception.create('
SafeArrayAccessData')
else
try
move(Structure,Data^,StructureSize);
//Daten (Struktur) in Array kopieren
finally
if SafeArrayUnaccessData(psa)<>s_ok
then
raise Exception.create('
SafeArrayUnAccessData');
//Zugriff auf Array wieder freigeben
end;
except
SafeArrayDestroy(PSA);
//bei Fehler Array löschen
Raise;
end;
result:=PSA;
end;
Damit kann man bspw folgende
zusammenhängende Daten speichern:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
type TX=record
i:Integer;
s:string[5];
end;
var x:TX;
psa:PSafeArray;
begin
x.i:=5;
x.s:='Hallo';
psa:=getSafeArray(x,sizeof(x));
//hier psa an Obejkt übergeben
safearraydestroy(psa); //und je nach Dokumentation selber wieder freigeben
end;
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.