String-Wert eines Varianten auslesen.

  • Themenstarter Themenstarter ChristophLange
  • Beginndatum Beginndatum
C

ChristophLange

Hallo,
ich bin Neuling in C++ und habe folgendes Problem:
Ein Programm übergibt an eine DLL einen String-Wert als Variable (VARIANT),
genauer gesagt ein Datum: 2007-04-21

Diesen Varianten muss ich in der DLL jetzt wieder als String auslesen, damit ich den Wert
in der DLL weiterverarbeiten kann.
Bisher habe ich das so gemacht, bei Zahlen:
Code:
VARIANT Datum;   
VariantInit(&Datum);    
variables[2]->GetValue(&Datum);

Aber mit String bekomme ich es nicht hin. Wäre froh über einen Hinweis. Danke.

Wenn ich jetzt mache:
Code:
strLine.substr(0,10).compare(&Datum) == 0

kommt

Konvertierung von 'VARIANT *__w64 ' in 'const std::basic_string<_Elem,_Traits,_Ax>' nicht möglich

___________________________________________________________________________

zum Test habe ich einmal folgendes gemacht:
Code:
HRESULT hResult;
VARIANT vDatum;   
vDatum.intVal = 2002-06-18; 
hResult = VariantChangeType(&vDatum, &vDatum, 0, VT_BSTR);
...
weiter unten dann

Code:
if( strLine.substr(0,10).compare(V_BSTR(&vDatum)) == 0 )
in dieser Zeile kommt dann der Fehler:

Ursache: Konvertierung von 'BSTR' in 'const std::basic_string<_Elem,_Traits,_Ax>' nicht möglich
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
Quelltyp konnte von keinem Konstruktor angenommen werden, oder die Überladungsauflösung des Konstruktors ist mehrdeutig
 
Zuletzt bearbeitet von einem Moderator:
Ok ich muss offensichtlich den VARIANT erst einmal in einen BSTR umwandeln,
string direkt geht nicht.
Aber nichtmal das gelingt..

"Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- "
 
Zurück