wxOTL
-
Hallo
Kann mir einer von euch helfen?
Versuche die Sample von wxOTL unter Windows XP mit VC++ 9 zum laufen zubekommen.
http://users.skynet.be/fb336405/wxOTL/download.htmlbei dem Sample \wxOTL-0.4\contrib\samples\otl\dbgrid\ora\dbgrid.cpp
erhalte ich folgende
fehlermeldung vom Compiler.
wxotl-0.4\contrib\include\wx\otl\otlv4.h(24720) : error C2679: Binärer Operator '=': Es konnte kein Operator gefunden werden, der einen rechtsseitigen Operanden vom Typ 'char *' akzeptiert (oder keine geeignete Konvertierung möglich)Es sind #defined im spiel und muß ich passen.
Gruß Califax
-
Hallo
kann mir keiner helfen?
In zwischen hab ich weiter versucht das problem zu lösen, aber ohne großen erfolg.
noch ein paar infos.
Code aus der otlv4.h datei.
#if defined(USER_DEFINED_STRING_CLASS) #define OTL_STRING_CONTAINER USER_DEFINED_STRING_CLASS #define STD_NAMESPACE_PREFIX #else #error USER_DEFINED_STRING_CLASS macro needs to be defined before including otlv4.h #endif
hier ein codeausschnitt wo ich die Fehlermeldung(Zeile 22) erhalte.
#if defined(OTL_STL) || defined(USER_DEFINED_STRING_CLASS) OTL_ORA_REFCUR_COMMON_READ_STREAM& operator>>(OTL_STRING_CONTAINER& s) OTL_THROWS_OTL_EXCEPTION { check_if_executed(); if(eof_intern())return *this; get_next(); switch(sl[cur_col].ftype){ case otl_var_char: if(!eof_intern()){ #if defined(OTL_USER_DEFINED_STRING_CLASS_DEFAULT_NULL_TO_VAL) if((*this).is_null()){ OTL_USER_DEFINED_STRING_CLASS_DEFAULT_NULL_TO_VAL(s); }else #elif defined(OTL_DEFAULT_STRING_NULL_TO_VAL) if((*this).is_null()) s=OTL_DEFAULT_STRING_NULL_TO_VAL; else #endif #if defined(OTL_ACE) s.set(OTL_RCAST(char*,sl[cur_col].val(cur_row)),1); #else s=OTL_RCAST(char*,sl[cur_col].val(cur_row)); #endif look_ahead(); }
So wie ich es sehe wird mit Präprozessor-Direktiven gearbeitet.
Code aus der otl_ora.h datei.
#ifndef _OTL_ORA_H_ #define _OTL_ORA_H_ //#define OTL_ORA9I #define OTL_ORA10G_R2 //#define OTL_ANSI_CPP #define OTL_USER_DEFINED_STRING_CLASS_ON #define USER_DEFINED_STRING_CLASS wxString #define OTL_EXPLICIT_NAMESPACES #define OTL_EXCEPTION_DERIVED_FROM wxOTLException #define OTL_EXCEPTION_HAS_MEMBERS wxString GetStatement(){wxString statement = this->stm_text; return statement;}; wxString GetVarInfo() {wxString varinfo = this->var_info ; return varinfo ;} ; wxString GetMessage() {wxString msg = this->msg; return msg;}; #include "wx/string.h" #include "wx/otl/wxOTLException.h" #include "wx/otl/otlv4.h" #endif /* _OTL_ORA_H_ */
So wie ich es verstehe wird die Zeile 22 vom compiler so gelesen.
s=OTL_RCAST(char*,sl[cur_col].val(cur_row));
wxString=OTL_RCAST(char*,sl[cur_col].val(cur_row));
und damit meldet der compiler den oben beschriebenen fehler, weil man "char*" nicht einfach so an wxString übergeben kann. wie kann ich das Problem lösen?
Kann mir einer von euch profis helfen.
Gruß califax
-
Nein, da kann ich dir nicht helfen, hab mit wxOTL keine Erfahrung.
Funktionierts denn mit älteren VS Versionen?Oder du verwendest evtl. eine Andere DB Schnittstelle, z.b. Databaselayer.
-
Hallo
Hab die wxotl Sample unter Visual Studio 2008 zum laufen bekommen.
wenn intresse besteht kann sich ja bei mir melden.
Gruß Califax
-
Immer mit wchar_t kompilieren !