Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Colevariant / 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 ] [ 2 ] > 3 <
020
30.07.2003, 10:43 Uhr
~Poirez
Gast


@ao ich hätte da nochmals eine frage:

Du hast ja volgendes Beispiel erwähnt:


C++:
int GetName (VARIANT * pvarName)
{

    COleVariant olevarName;
    olevarName.Attach (*pvarName); /* olevarName uebernimmt die Kontrolle. */

    olevarName = "Fritz"; /* Bequemes Arbeiten mit Klassenmethoden */

    *pvarName = olevarName.Detach (); /* hiermit gibt olevarName die Kontrolle wieder ab, ~COleVariant wird den Namen nicht zerstoeren. */
}



Wie würde das denn aussehen, wenn du keinen COleVariant verwendet hättest (sondern nur VARIANT) und als Parameter für diese Funktion hättest du einen String mit dem Namen "Fritz" erhalten und möchtest diesen jetzt dem VARIANT zuordnen, den du in dieser Funktion neu erstellt hast (anstelle des COleVariants) und am schluss möchtest du wieder diesen VARIANT als CString zurückgeben.
(Eigentlich ist dies ja sinlos, aber ich schnall das Händling mit diesen VARTYPE-Konstanten noch nicht so ganz.)

Hab schon ein bisschen angefangen mit der funktion, dass du weisst wie ich das genau meine:


C++:
CString GetName (CString strName)
{
       VARIANT varName;

       ....
       ....
       ....

       return .....
}



Danke für die Hilfe
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
021
30.07.2003, 10:59 Uhr
ao

(Operator)


Warum willst du den nackten VARIANT nehmen? COleVariant ist dafür gemacht, daß du dich damit nicht herumschlagen mußt.

Du mußt den CString zu einem Wide-Character-String machen, mit MultiByteToWideChar.
Dann

C++:
varName.vt = VT_BSTR;
varName.bstrVal = SysAllocString (strNameWideChar);



Ist aber auf jeden Fall umständlich.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
022
30.07.2003, 11:09 Uhr
~Poirez
Gast


Ja isch weiss und genau das muss ich in dieser doffen dokumentation aufzeigen!

und wie bekomme ich dann aus dem Variant wieder einen String?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
023
31.07.2003, 12:02 Uhr
0xdeadbeef
Gott
(Operator)



C++:
#define _UNICODE

VARIANT v;

v.vt = VT_BSTR;
v.bstrVal = _T("Hello, World!");

CString s(v.bstrVal);


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
024
08.11.2004, 13:38 Uhr
~gimli6
Gast


Hallo!

Ich habe ein ähnliches Problem mit COleVariant/Variant und ich erkenne einfach die Lösung nicht!
Also ich bearbeite eine Exceldatei mit meherer Reitern in VC++. Ich kann die Daten einer bestimmten Zelle einlesen und seh sie im Debugger.
Allerdings braeuchte ich zur weitern Verarbeitung einen CString und kann diesen nicht erzeugen.


C++:
...
Variant output;          // Darin steht die ausgelesene Excelzelle
...
// Hier steht viel Code
...
// Rueckgabe aus der Excelzelle z.B.:
// {10.05.2004 00:00:00 VT_DATE} <= steht in output
...
// Jetzt moechte ich den Variant output als Typ CString übergeben
CString stroutput(output.bstrVal);




Leider bekomme ich nichts in stroutput übergeben. Was mache ich falsch?
Der Inhalt der abgerufenen Excelzellen können allerding unterschiedliche Formate haben.
Wie loese ich das?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
025
08.11.2004, 13:49 Uhr
gimli6



Nachtrag:

Also ich mache doch im Prinzip auch nichts anderes als @0xdeadbeef in seinem Posting, oder sehe ich das falsch?

Waere wirklichum jede Hilfe dankbar!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] [ 2 ] > 3 <     [ 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: