AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

OleVariant PSafeArray

Ein Thema von Berni68 · begonnen am 5. Jan 2022 · letzter Beitrag vom 10. Jan 2022
Antwort Antwort
Berni68

Registriert seit: 9. Jan 2006
Ort: Villingen
162 Beiträge
 
Delphi XE5 Professional
 
#1

AW: OleVariant PSafeArray

  Alt 9. Jan 2022, 13:03
Hallo himitsu,

danke für den Hinweis.
Hilft mir aber nicht weiter.

Ich interpretiere
Delphi-Quellcode:
    procedure GetReferenceKey(var ReferenceKey: {NOT_OLEAUTO(PSafeArray)}OleVariant;
                              KeyContext: Integer); dispid 2130706454;
analog dazu liefert Free Pascal
// Warning: 'PSafeArray' not automatable in ModelStatedisp.GetReferenceKey nun so, daß das mit Pascal nicht geht und gebe auf.
Bernhard
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
715 Beiträge
 
Delphi 12 Athens
 
#2

AW: OleVariant PSafeArray

  Alt 10. Jan 2022, 14:35
Hallo himitsu,

danke für den Hinweis.
Hilft mir aber nicht weiter.

Ich interpretiere
Delphi-Quellcode:
    procedure GetReferenceKey(var ReferenceKey: {NOT_OLEAUTO(PSafeArray)}OleVariant;
                              KeyContext: Integer); dispid 2130706454;
analog dazu liefert Free Pascal
// Warning: 'PSafeArray' not automatable in ModelStatedisp.GetReferenceKey nun so, daß das mit Pascal nicht geht und gebe auf.
Liefert der type library import auch ein dual interface neben dem dispinterface? Wenn ja solltest Du lieber das verwenden, da kann man notfalls die generierte Deklaration der Methode anpassen wenn der type library importer das nicht richtig gemacht hat.

Ich hatte mal ein dispinterface, das nicht wirklich automation-kompatible Methoden enthielt. Da half dann sowas:

Delphi-Quellcode:
   {PB 2005-10-07 The VoidPtrToBufID function does not work as declared by the
    type library importer. Removing the Var for the buffer parameter makes it
     work, though. }

    function VoidPtrToBufID({var} buffer: {??Pointer} OleVariant; bufflen: Integer): Integer; dispid 20007;
Verwendung:
Delphi-Quellcode:
{!
<summary>
  CreateSketchFromBuffer is a helper routine, it reads a sketch from
  a memory buffer.</summary>
<returns>
an ISIS sketch handle, or INVALID_ID, if the read failed. The caller
    has to eventually release this handle via the DeleteSketch method of
    the ISIS automation server.</returns>
<param name="pData">
is the buffer's address.</param>
<param name="len">is the length of the data, in bytes.</param>
}

function TIsisMolinfoHelper.CreateSketchFromBuffer(pData: Pointer; Len:
    integer): Integer;
var
  hSketch: Integer;
  V: TVarData;
  BufID: Integer;
begin
  {$IFDEF LOGDETAIL}
  Logmanager.Log('Start - TIsisMolinfoHelper.CreateSketchFromBuffer');
  {$ENDIF}

  Result := INVALID_ID;
  V.VType := VT_PTR;
  V.VPointer := pData;
  {$IFDEF LOGDETAIL}
  Logmanager.Log('TIsisMolinfoHelper.CreateSketchFromBuffer - calling VoidPtrToBufID');
  {$ENDIF}
  BufID := Isis.VoidPtrToBufID(Olevariant(V), Len);
  if BufID > 0 then
    try
      {$IFDEF LOGDETAIL}
      Logmanager.Log('TIsisMolinfoHelper.CreateSketchFromBuffer - calling ReadSketchFromBuffer');
      {$ENDIF}
      hSketch := Isis.ReadSketchFromBuffer(BufID);
      {$IFDEF LOGDETAIL}
      Logmanager.Log('TIsisMolinfoHelper.CreateSketchFromBuffer - ReadSketchFromBuffer returned');
      {$ENDIF}
      if hSketch <> INVALID_ID then
        Result := hSketch
      else begin
        {$IFDEF DEBUG}
        Logmanager.Log('CreateSketchFromBuffer: ReadSketchFromBuffer failed.');
        {$ENDIF}
      end; { Else }
    finally
      isis.DeleteBuffer(BufID);
    end { finally }
  else begin
    {$IFDEF DEBUG}
    Logmanager.Log('CreateSketchFromBuffer: VoidPtrToBufID failed.');
    {$ENDIF}
  end; { Else }
end;
Peter Below
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:15 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