![]() |
zugriff auf array einer function in Typelibrary
Hallo,
in einer Typelibrary, die ich importiert habe findet sich folgende function kann mir jemand sagen wie ich in meinem programm das array definieren muß um es auslesen zu können ? function Get_adOpen(out pVal: PSafeArray): HResult; stdcall; aber irgendwie sitze ich heute auf dem Schlauch wie definere ich den dieses Array damit es mit der function kompatibel und von mir auslesbar ist ? die function anzusprechen ist kein problem nur krieg ich das mit dem array nicht gebacken Danke für eure hilfe Ralf |
Re: zugriff auf array einer function in Typelibrary
Moin,
habe folgendes gefunden...
Delphi-Quellcode:
Vielleicht hilft dir das
tSAFEARRAYBOUND = record
cElements:LongInt; lLbound:LongInt; end; PSafeArray = ^TSafeArray; {$EXTERNALSYM tagSAFEARRAY} tagSAFEARRAY = record cDims: Word; fFeatures: Word; cbElements: Longint; cLocks: Longint; pvData: Pointer; rgsabound: array[0..0] of TSafeArrayBound; end; TSafeArray = tagSAFEARRAY; {$EXTERNALSYM SAFEARRAY} SAFEARRAY = TSafeArray; MfG Thorsten |
Re: zugriff auf array einer function in Typelibrary
Hallo,
zur Hilfe für andere, die dieses Problem haben hier die funktionierende Lösung die ich unter tatkräfiger mithilfe von Andreas Kosch (Autor - DCOM/Com mit Delphi) gefunden habe: Das Hauptproblem für mich war, dass das psavearray kein array sondern nur einen Zeiger auf das eigentliche Array enthält
Delphi-Quellcode:
procedure TForm1.Button4Click(Sender: TObject);
var pSA : PSafeArray; i : Integer; swValue : single; iDim : Integer; iLBound : Integer; iUBound : Integer; begin pSA := nil; // Verbindung zur Typbibliothek iquotes:= coMLquotes.Create; // 2. coclasse definieren iquotes.DownloadQuotes('SUNW',20041013,20050114,d); // PSaveArray Zeiger holen iquotes.Get_adOpen(pSa); iDim := SafeArrayGetDim(pSA); if iDim = 1 then begin SafeArrayGetLBound(pSA, 1, iLBound); SafeArrayGetUBound(pSA, 1, iUBound); for i := iLBound to iUBound do begin SafeArrayGetElement(pSA, i, swValue); ListBox1.Items.Add(floattostrf(swValue,fffixed,4,2)); end; ListBox1.Items.Add('------------'); end; SafeArrayDestroy(pSA); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:59 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