![]() |
Zugriff auf PSafeArray über Late Binding
Hallo,
ich binde ein COM-Objekt über Late Binding (also über CreateOleObject()) ein. Dieses COM-Objekt enthält eine Funktion die ein PSafeArray zurückgibt. Wenn ich dieses Array zwischenspeichern möchte um darauf zuzugreifen, erhalte ich den Fehler "Inkompatible Typen: PSafeArray und Variant". Mein Code sieht folgendermaßen aus:
Delphi-Quellcode:
wobei FComObj vom Typ OleVariant ist und das COM-Objekt darstellt.
var
f: PSafeArray; begin f := FComObj.GetToolList; end; Hat jemand eine Idee wie ich an die Inhalte vom SafeArray komme? Grüße Dawn |
AW: Zugriff auf PSafeArray über Late Binding
Delphi-Quellcode:
var
f: OleVariant; begin f := FComObj.GetToolList; end; |
AW: Zugriff auf PSafeArray über Late Binding
Hallo,
erst einmal vielen Dank für deine Antwort. Was ich vielleicht noch erwähnen sollte: Ich möchte u. A. mit SafeArrayGetElement() auf die Inhalte des Arrays zugreifen. Diese Funktion erwartet eine Variable vom Typ PSafeArray. Wenn ich nun das Array in einem OleVariant unterbringe, fehlt noch eine Typenkonvertierung. Daran scheiter ich gerade. Hast Du vielleicht noch einen Tipp? Grüße Dawn |
AW: Zugriff auf PSafeArray über Late Binding
Funktioniert ein Cast
Delphi-Quellcode:
?
f := PSafeArray(FComObj.GetToolList);
|
AW: Zugriff auf PSafeArray über Late Binding
ich habe keine Ahnung von Deinem Comobj, etwas in der Art
FComObj.GetToolList.SafeArrayGetElement() oder SafeArrayGetElement(FComObj.GetToolList,xxx) geht nicht ? PSafeArray klingt nach Pointer ... |
AW: Zugriff auf PSafeArray über Late Binding
Lösung:
Folgende Funktion schafft Abhilfe:
Delphi-Quellcode:
Gefunden auf:
function VariantToSafeArray(const Arr: OleVariant): PSafeArray;
begin Assert(TVarData(Arr).VType=varArray); Result:=PSafeArray(TVarData(Arr).VArray); end; ![]() |
AW: Zugriff auf PSafeArray über Late Binding
Besser noch
![]() Oder ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz