Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Datentyp Variant

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
17.10.2003, 15:16 Uhr
~Michael
Gast


Hallo,
ich bin gerade dabei das Outlook über Wrapper-Klassen etwas aufzubohren und möchte nun diese Funktion nutzen.
Habe hier das Problem mit der Struktur "VARIANT".

LPDISPATCH _Folders::Add(LPCTSTR Name, const VARIANT& Type)

Ich möchte einen neuen Ordner anlegen und weiß nicht was ich als zweiten Parameter angeben soll.


_Folders newFolder;

newFolder.Add("neuerOrdner", ???);

Kann mir bitte jemand helfen,
Danke !
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
20.10.2003, 10:31 Uhr
RHBaum




Zitat:

Outlook Wrapper-Klassen


Schreib mal etwas maehr ueber die Add funktion.
Was erwartet er genau als 2. Parameter, da muss mehr stehen ...

Prinzipiell, VARIANT ist M$ schmutz typ, nen Typ wo alles reinpasst, OLE faehig. Was genau er drin erwartet, sollte in der Doku stehen
der Member vt bestimmt, als was der Variant seinen Wert interpretiert, also der interne Typ sozusagen. der Wert selber ist nen Union, was dir Zugriff auf diesen Wert getyped je nach verwendungszweck ermoeglicht.
Wobei VARIANT nur OLE Datentypen kennt (inklusive ActiveX Interface Schnittstellen etc ... )

1. Beispiel, es soll nen 32 bit Int sein ...
VARIANT var;
var.vt = VT_I4;
var.lVal = 12345;

2. Beispiel es soll nen String (OLE: BSTR) Sein ....
VARIANT var;
var.vt = VT_BSTR;
var.bstrVal = *pBstr; // wobei pBstr nen Zeiger auf deinen BSTR selber ist, muss also schon Existieren

das uebergeben an deine Funktion ist dan recht einfach:
newFolder.Add(_T("neuerOrdner"), &var);

Noch was:
LPTSTR = long pointer TString != LPSTR long pointer String.
TString (TCHAR *) ist die M$ definition auf nen Zwitter String. Das bedeutet der String kann unterschiedliche Formate annehmen. Im einfachsten Fall ist es nen normaler String (char * ), aber bei Unicode anwendungen (_UNICODE gesetzt) mutiert er zu nem wide string (wchar_t * ).
einfach TCHAR * == char * zu setzen und zu hoffen, das niemand auf die Idee kommt, dein Programm als Unicode Prog zu uebersetzen ist nicht so toll. Also pass lieber glich auf. Fuer die Umwandlung von constanten Zeichenketten gibts nen Makro . _T() was dir die Zeichen richtig Mappt. Laso _T("mein Text") verwenden, wenn mit TStrings arbeitest !

Ciao ...

Dieser Post wurde am 20.10.2003 um 10:32 Uhr von RHBaum editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
24.10.2003, 11:49 Uhr
~Michael
Gast


Hier die ganze Add-Funktion:

LPDISPATCH _Folders::Add(LPCTSTR Name, const VARIANT& Type)
{
LPDISPATCH result;
static BYTE parms[] =
VTS_BSTR VTS_VARIANT;
InvokeHelper(0x5f, DISPATCH_METHOD, VT_DISPATCH, (void*)&result, parms,
Name, &Type);
return result;
}


Hier mein Code:


VARIANT *Index;
Index->vt = VT_I4;
Index->lVal = 2;

new_folder.Add("NeuerOrdner",&Index);


Bring bei mir die Fehlermeldung:
Konvertierung des Parameters 2 von 'const int' in 'const struct tagVARIANT &' nicht moeglich...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
24.10.2003, 11:50 Uhr
~Michael
Gast


Anmerkung: Ich finde leider nirgens eine Doku. über diese Funktionen ...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: