Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi OleVariant-Unterstützung in Delphi? (https://www.delphipraxis.net/88542-olevariant-unterstuetzung-delphi.html)

DGL-luke 16. Mär 2007 22:18


OleVariant-Unterstützung in Delphi?
 
Hallo,

welche Unit muss ich einbinden, um volle Unterastützung für OleVariants zu haben? Mir fehlen zum Beispiel "VariantInit" oder auch nur die OleVariant-Members, z.B. OleVariant.vt.

omata 16. Mär 2007 22:20

Re: OleVariant-Unterstützung in Delphi?
 
War das nicht in der Unit Variants?

Gruss
Thorsten

DGL-luke 16. Mär 2007 23:05

Re: OleVariant-Unterstützung in Delphi?
 
Ich glaube, in der gehts nur um die Delphi-Variants.

ste_ett 16. Mär 2007 23:29

Re: OleVariant-Unterstützung in Delphi?
 
Unit ActiveX :)

DGL-luke 17. Mär 2007 10:27

Re: OleVariant-Unterstützung in Delphi?
 
Dankesehr. Aber der Compiler zeigt mir die Member einer OleVariant-Variable immer noch nicht an...

mkinzler 17. Mär 2007 10:30

Re: OleVariant-Unterstützung in Delphi?
 
Zitat:

Dankesehr. Aber der Compiler zeigt mir die Member einer OleVariant-Variable immer noch nicht an...
Das macht er auch nicht. Die Auswertung geschiet erst zur Laufzeit durch das (COM-)Objekt.

DGL-luke 17. Mär 2007 10:31

Re: OleVariant-Unterstützung in Delphi?
 
OK, danke.

DGL-luke 21. Mär 2007 15:34

Re: OleVariant-Unterstützung in Delphi?
 
So... kann es sein, dass man gewisse Member eines OleVariants heraus-boolesch-operieren muss? Hab einen flüchtigen Blick auf google codesearch geworfen, und dabei unter anderem das gefunden:

Code:
if (VT_DISPATCH==V_VT(&vDocID))
Wie mach ich das in Delphi? Es geht um IAccessible.accNavigate und den OleVariant, der mir da rausgeliefert wird.

DGL-luke 23. Mär 2007 14:48

Re: OleVariant-Unterstützung in Delphi?
 
Hallo,

ich habe inzwischen auch die C-Makros gefunden, die "V_VT(X)" definieren. abhängig von bestimmten Compiler-charakteristika (?) ist das entweder einfach

Code:
((X)->vt)
was natürlich zu einem spontanten "Häääää? Warum funktioniert mein Code nicht?!" führt, oder

Code:
((X)->__VARIANT_NAME_1.__VARIANT_NAME_2.vt)
Was zu einem noch größeren "Häääääää?" führt.

Kann mir denn niemand helfen?

Hier nochmal das komplette:

Code:
#define V_UNION(X,Y) ((X)->__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.Y)
        #define V_VT(X) ((X)->__VARIANT_NAME_1.__VARIANT_NAME_2.vt)
        #else
        #define V_UNION(X,Y) ((X)->Y)
        #define V_VT(X) ((X)->vt)
(Google Codesearch nach "V_VT", erste ergebnisse)

alzaimar 23. Mär 2007 15:31

Re: OleVariant-Unterstützung in Delphi?
 
Die Funktion 'VarType' ist dein Freund. Ein Variant ist eigentlich ein 'Variant Record', aber Delphi kapselt das sehr schön.

Du kannst auch direkt auf die Member zugreifen, dazu musst du das Variant (glaube ich) nach TVarRec typecasten...


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:25 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz