VARIANT und VARIANTARG
Dieser Dokumentation für die Vorschau nur ist und in späteren Versionen geändert. Leere Themen wurden als Platzhalter eingefügt.]
Verwenden Sie VARIANTARG, um in DISPPARAMS und VARIANT Variante-Daten an, die als Verweis übergeben werden kann nicht übergebenen Argumente zu beschreiben. Wenn eine Variante verweist auf eine andere Variante mithilfe der VT_VARIANT | VT_BYREF Variablentyp die Variante, verwiesen wird kann nicht vom Typ VT_VARIANT auch sein | VT_BYREF. Varianten können als Wert übergeben werden, selbst wenn VARIANTARGs nicht. Die folgende Definition VARIANT ist in OAIDL.H Automatisierung Headerdatei beschrieben:
struct tagVARIANT
{
union
{
struct __tagVARIANT
{
VARTYPE vt;
WORD wReserved1;
WORD wReserved2;
WORD wReserved3;
union
{
LONGLONG llval; // VT_I8
LONG lVal; // VT_I4
BYTE bVal; // VT_UI1
SHORT iVal; // VT_I2
FLOAT fltVal; // VT_R4
DOUBLE dblVal; // VT_R8
VARIANT_BOOL boolVal; // VT_BOOL
_VARIANT_BOOL bool;
SCODE scode; // VT_ERROR
CY cyVal; // VT_CY
DATE date; // VT_DATE
BSTR bstrVal; // VT_BSTR
IUnknown * punkVal; // VT_UNKNOWN
IDispatch * pdispVal; // VT_DISPATCH
SAFEARRAY * parray; // VT_ARRAY|*
BYTE * pbVal; // VT_BYREF|VT_UI1
SHORT * piVal; // VT_BYREF|VT_I2
LONG * plVal; // VT_BYREF|VT_I4
LONGLONG * pllVal; // VT_BYREF|VT_I8
FLOAT * pfltVal; // VT_BYREF|VT_R4
DOUBLE * pdblVal; // VT_BYREF|VT_R8
VARIANT_BOOL * pboolVal; // VT_BYREF|VT_BOOL
_VARIANT_BOOL * pbool;
SCODE * pscode; // VT_BYREF|VT_ERROR
CY * pcyVal; // VT_BYREF|VT_CY
DATE * pdate; // VT_BYREF|VT_DATE
BSTR * pbstrVal; // VT_BYREF|VT_BSTR
IUnknown ** ppunkVal; // VT_BYREF|VT_UNKNOWN
IDispatch ** ppdispVal; // VT_BYREF|VT_DISPATCH
SAFEARRAY ** pparray; // VT_BYREF|VT_ARRAY
VARIANT * pvarVal; // VT_BYREF|VT_VARIANT
PVOID * byref; // Generic ByRef
CHAR cVal; // VT_I1
USHORT uiVal; // VT_UI2
ULONG ulVal; // VT_UI4
ULONGLONG ullVal; // VT_UI8
INT intVal; // VT_INT
UINT uintVal; // VT_UINT
DECIMAL * pdecVal; // VT_BYREF|VT_DECIMAL
CHAR * pcVal; // VT_BYREF|VT_I1
USHORT * puiVal; // VT_BYREF|VT_UI2
ULONG * pulVal; // VT_BYREF|VT_UI4
ULONGLONG * pullVal; // VT_BYREF|VT_UI8
INT * pintVal; // VT_BYREF|VT_INT
UINT * puintVal; // VT_BYREF|VT_UINT
struct __tagBRECORD
{
PVOID pvRecord;
IRecordInfo *pRecInfo;
} __VARIANT_NAME_4;
} __VARIANT_NAME_3;
} __VARIANT_NAME_2;
DECIMAL decVal;
} __VARIANT_NAME_1;
};
Extrahieren von Werten aus der VARIANTARGs vereinfachen, bietet Automatisierung eine Reihe von Funktionen zum Bearbeiten dieses Typs (siehe Konvertierung und Bearbeitung Funktionen (Component-Automatisierung) und Formatierung Routinen (Component-Automatisierung)). Verwendung dieser Funktionen wird dringend empfohlen, um sicherzustellen, dass Anwendungen konsistent Umwandlung Regeln angewendet werden.
vt Wert steuert die Interpretation der Union wie folgt:
Wert |
Beschreibung |
---|---|
VT_EMPTY |
Kein Wert es wurde angegeben. Wenn optionales Argument für eine Automatisierungsmethode leer ist, übergeben Sie ein VARIANT vom Typ VT_EMPTY an. Übergeben Sie stattdessen ein VARIANT vom Typ VT_ERROR mit dem Wert DISP_E_PARAMNOTFOUND. |
VT_EMPTY | VT_BYREF |
Nicht gültig. |
VT_UI1 |
Ein nicht signierter 1-Byte-Zeichen wird in bVal gespeichert. |
VT_UI1 | VT_BYREF |
Ein Verweis auf ein nicht signierter 1-Byte-Zeichen wurde übergeben. Ein Zeiger auf den Wert ist im PbVal. |
VT_UI2 |
Ein 2-Byte-Ganzzahl ohne Vorzeichen-Wert wird im UiVal gespeichert. |
VT_UI2 | VT_BYREF |
Ein Verweis auf vorzeichenlose 2-Byte-Ganzzahl wurde übergeben. Ein Zeiger auf den Wert ist im PuiVal. |
VT_UI4 |
Eine 4-Byte-Ganzzahl ohne Vorzeichen-Wert wird im UlVal gespeichert. |
VT_UI4 | VT_BYREF |
Ein Verweis auf vorzeichenlose 4-Byte-Ganzzahl wurde übergeben. Ein Zeiger auf den Wert ist im PulVal. |
VT_UI8 |
Eine 8-Byte-Ganzzahl ohne Vorzeichen-Wert wird im UllVal gespeichert. VT_UI8 ist nicht verfügbar in Windows Millennium Edition und früheren Versionen oder Windows 2000 und früheren Versionen. |
VT_UI8 | VT_BYREF |
Ein Verweis auf vorzeichenlose 8-Byte-Ganzzahl wurde übergeben. Ein Zeiger auf den Wert ist im PullVal. |
VT_UINT |
Ein Ganzzahlwert ohne Vorzeichen wird im UintVal gespeichert. |
VT_UINT | VT_BYREF |
Ein Verweis auf ein Ganzzahlwert ohne Vorzeichen wurde übergeben. Ein Zeiger auf den Wert ist im PuintVal. |
VT_INT |
Ein ganzzahliger Wert wird in IntVal gespeichert. |
VT_INT | VT_BYREF |
Ein Verweis auf einen ganzzahligen Wert wurde übergeben. Ein Zeiger auf den Wert ist im PintVal. |
VT_I1 |
1-Byte-Zeichensatz der Wert wird im cVal gespeichert. |
VT_I1 | VT_BYREF |
Ein Verweis auf ein 1-Byte-Zeichen wurde übergeben. Ein Zeiger der Wert ist im PcVal. |
VT_I2 |
Ein 2-Byte-Ganzzahl-Wert wird im iVal gespeichert. |
VT_I2 | VT_BYREF |
Ein Verweis auf eine 2-Byte-Ganzzahl wurde übergeben. Ein Zeiger auf den Wert ist im PiVal. |
VT_I4 |
Ein 4-Byte-Ganzzahl-Wert wird im lVal gespeichert. |
VT_I4 | VT_BYREF |
Ein Verweis auf eine 4-Byte-Ganzzahl wurde übergeben. Ein Zeiger auf den Wert ist im PlVal. |
VT_I8 |
Ein 8-Byte-Ganzzahl-Wert wird im LlVal gespeichert. VT_I8 ist nicht verfügbar in Windows Millennium Edition und früheren Versionen oder Windows 2000 und früheren Versionen. |
VT_I8 | VT_BYREF |
Ein Verweis auf eine 8-Byte-Ganzzahl wurde übergeben. Ein Zeiger auf den Wert ist im PllVal. |
VT_R4 |
Ein realer IEEE 4-Byte-Wert wird in FltVal gespeichert. |
VT_R4 | VT_BYREF |
Ein Verweis auf einen echten IEEE 4-Byte-Wert übergeben wurde. Ein Zeiger auf den Wert ist im PfltVal. |
VT_R8 |
Ein 8-Byte IEEE realer-Wert wird in DblVal gespeichert. |
VT_R8 | VT_BYREF |
Ein Verweis auf eine 8-Byte IEEE realen Wert wurde übergeben. Ein Zeiger auf den Wert ist im PdblVal. |
VT_CY |
Ein Währungswert wurde angegeben. Eine Währung Zahl wird als 64-Bit (8 Byte) der zwei Ergänzung Ganzzahl, multipliziert mit 10.000, um eine Festkommazahl mit 15 Stellen links vom Dezimalzeichen und 4 Stellen rechts geben gespeichert. Der Wert ist im CyVal. |
VT_CY | VT_BYREF |
Ein Verweis auf einen Währungswert wurde übergeben. Ein Zeiger auf den Wert ist im PcyVal. |
VT_BSTR |
Eine Zeichenfolge wurde übergeben;Es wird im BstrVal gespeichert. Dieser Zeiger muss abgerufen und freigegeben, indem die BSTR-Funktionen, die in konvertieren und Bearbeiten von Funktionen https://msdn.microsoft.com/de-de/library/ms221236(v=vs.100) beschrieben werden. |
VT_BSTR | VT_BYREF |
Ein Verweis auf eine Zeichenfolge wurde übergeben. Ein BSTR 1, die auf ein BSTR verweist ist in PbstrVal. Der Zeiger auf die verwiesen wird muss abgerufen oder von den Funktionen BSTR freigegeben. |
VT_DECIMAL |
Decimal-Variablen werden als 96-Bit-(12 Byte) Ganzzahlen ohne Vorzeichen mit einer Variablen Potenz zur Basis 10 skaliert gespeichert. VT_DECIMAL verwendet der gesamte 16 Bytes der Variante. |
VT_DECIMAL | VT_BYREF |
Ein Verweis auf einen decimal-Wert wurde übergeben. Ein Zeiger auf den Wert ist in PdecVal. |
VT_NULL |
Verteilung gestartet null Wert wurde angegeben. (Dies sollte nicht mit null-Zeiger verwechselt werden.) Der null-Wert wird als mit SQL für Zuständen Logik verwendet. |
VT_NULL | VT_BYREF |
Nicht gültig. |
VT_ERROR |
Ein SCODE wurde angegeben. Der Fehlertyp wird in Scodee angegeben. Operationen auf Fehlerwerte sollten im Allgemeinen eine Ausnahme auslösen oder den Fehler der Rückgabewert entsprechend weitergegeben. |
VT_ERROR | VT_BYREF |
Ein Verweis auf ein SCODE wurde übergeben. Ein Zeiger auf den Wert ist in Pscode. |
VT_BOOL |
Eine 16-Bit Boolean (True/False) Wert wurde angegeben. Der Wert 0xFFFF (alle Bits 1) gibt True; an.der Wert von 0 (alle Bits 0) gibt False an. Es sind keine anderen Werte gültig. |
VT_BOOL | VT_BYREF |
Ein Verweis auf einen booleschen Wert. Ein Zeiger auf den booleschen Wert ist im Pbool. |
VT_DATE |
Ein Wert ein Datum und Zeit wurde angegeben. Datumsangaben dargestellt werden als mit doppelter Genauigkeit Zahlen, wobei Mitternacht, 01.01.1900 2.0 ist 2 Januar 1900 ist, 3.0, usw.. Der Wert wird im Datum übergeben. Dies ist das gleiche Nummerierungssystem von den meisten Kalkulationstabelle Programmen verwendet wird, obwohl einige, Februar 29 1900 vorhanden waren und daher 1.0 festlegen, 01.01.1900 falsch angeben. Das Datum kann in und aus einer MS-DOS-Darstellung mit VariantTimeToDosDateTime, konvertiert werden die in konvertieren und Bearbeiten von Funktionen https://msdn.microsoft.com/de-de/library/ms221236(v=vs.100) erläutert wird. |
VT_DATE | VT_BYREF |
Ein Verweis auf ein Datum wurde übergeben. Ein Zeiger auf den Wert ist im ktualisieren. |
VT_DISPATCH |
Ein Zeiger auf ein Objekt wurde angegeben. Der Zeiger ist im PdispVal. Dieses Objekt wird nur zum Implementieren von IDispatch bezeichnet. Das Objekt kann, ob es andere gewünschte Schnittstelle, unterstützt durch Aufrufen von QueryInterface für das Objekt abgefragt werden. Objekte, die nicht implementieren, IDispatch sollten mit VT_UNKNOWN übergeben werden. |
VT_DISPATCH | VT_BYREF |
Ein Zeiger auf einen Zeiger auf ein Objekt wurde angegeben. Der Zeiger auf das Objekt wird in den Speicherort verweist PpdispVal gespeichert. |
VT_VARIANT |
Ist ungültig. VARIANTARGs muss nach Verweis übergeben werden. |
VT_VARIANT | VT_BYREF |
PvarVal wird ein Zeiger auf einen anderen VARIANTARG übergeben. Diese referenzierten VARIANTARG PvarVal, sein nicht anderen VT_VARIANT|VT_BYREF. Dieser Wert kann verwendet werden, Sprachen unterstützen, die Funktionen, um die Typen als Verweis übergebenen Variablen ändern können. |
VT_UNKNOWN |
Ein Zeiger auf ein Objekt, das IUnknown die Schnittstelle implementiert, ist im PunkVal übergeben. |
VT_UNKNOWN | VT_BYREF |
Ein Zeiger auf die IUnknown -Schnittstelle ist im PpunkVal übergeben. Zeiger auf die Schnittstelle wird in den Speicherort verweist PpunkVal gespeichert. |
VT_ARRAY | < alles > |
Ein Array des Datentyps < alles >wurde übergeben. (VT_EMPTY und VT_NULL sind ungültige Typen kombinieren mit VT_ARRAY.) Der Zeiger in Parray zeigt auf ein Arraydeskriptor, die die Dimensionen, Größe und Speicherort des Arrays beschreibt. Der Arraydeskriptor erfolgt nie direkt, aber stattdessen wird gelesen und mithilfe von in konvertieren und Bearbeiten von Funktionen beschriebenen Funktionen geändert. |
Siehe auch
Konzepte
IDispatch-Datentypen und Strukturen
Datentypen, Strukturen und Enumerationen (Component-Automatisierung)