<strstrea.h> und Vc7 - weiss jemand rat?



  • http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs&faq=IntToString#Answ

    Schau mal am ende dieser Seite (das darüber ist aber auch Interesannt!)



  • Probe-Nutzer schrieb:

    kann es sein, daß dein Problem "namespace" lautet? Fehlt also ein

    using namespace std;
    

    nach den #include's?

    zum teil hast du recht, danke! daran habe ich nicht gedacht.
    die anzahl der errors habe ich deutlich reduzieren können. bin jetzt bei 18 errors. folglich immer noch nicht am ziel angekommen.

    dein tipp ist aber schon recht gut.

    leider bin ich immer noch am verzweifeln. und die vermutung wird immer stärker, dass es tatsächlich an der "verbesserten" include's bibliothek von microsoft liegt.

    Knuddlbaer schrieb:

    http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs&faq=IntToString#Answ

    Schau mal am ende dieser Seite (das darüber ist aber auch Interesannt!)

    stimmt, kannte diese seite schon vorher, aber war damals zu faul um mir das auszudrucken. das wurde jetzt nachgeholt.
    es ist schon genau das problem, was ich auch habe. ich brauche die richtige include datei und die richtige klasse.
    ich bin momentan am rumprobieren, weil ich ehrlich gesagt da nicht ganz durchsteige.
    (bei iostream war die sache so einfach!)

    jetzt bekomme ich mit einer include/klasse variante unter anderem folgende fehler:

    .cpp(75) : error C2664: 'std::basic_ostream<_Elem,_Traits>::write': Konvertierung des Parameters 1 von 'unsigned char [16]' in 'const char *' nicht möglich
            with
            [
                _Elem=char,
                _Traits=std::char_traits<char>
            ]
            Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
    

    in der zeile mit:

    strmOut.write( buf, sizeof(buf) );              //mit: stringstream& strmOut
    

    habe mir diese quelle nochmal genauer angeschaut. werde aber immer noch nicht schlauer. hoffe jemand kennt dieses problem mit vc7.



  • jetzt speziell zu dem Fehler, den du angegeben hast:

    das ist die ganz normale Typsicherheit von C++, die es untersagt, daß man einen "unsigned char"-Zeiger einfach einer Funktion übergeben kann, die einen "char-Zeiger" erwartet. Es ist also sicher kein VC7-Problem, der Code ist einfach inkorrekt. Wenn du in diesem Fall diese Funktion aufrufen willst, dann mußt du auf den erwarteten Typ casten:

    strmOut.write( reinterpret_cast<char*>(buf), sizeof(buf) );              //mit: stringstream& strmOut
    

    MfG



  • danke, noch ein paar solcher tipps und es läuft vielleicht sogar!

    jetzt gibt es nur noch 14 errors.

    wenn ich noch ein paar grobe beschreiben darf...

    ...
    	typedef std::vector<_tstring>		StringArray;
    ...
    	StringArray::iterator	m_itArray;                // 2 errors
    ...
    

    compiler schrieb:

    error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'm_itArray'
    error C2501: 'SQLITEDB::TCollection<_Type,_CType>::m_itArray': Fehlende Speicherklasse oder Typspezifizierer

    m_pNewDataset->addRow( strm.str(), strm.pcount() );
                    //stringstream strm;
                    //void addRow( char* pRow, int iLen );
    

    compiler schrieb:

    cpp-file.cpp(293) : error C2039: 'pcount': Ist kein Element von 'std::basic_stringstream<_Elem,_Traits,_Alloc>'
    with
    [
    _Elem=char,
    _Traits=std::char_traits<char>,
    _Alloc=std::allocator<char>
    ]
    cpp-file.cpp.cpp(293) : error C2664: 'Dataset::addRow': Konvertierung des Parameters 1 von 'std::basic_stringstream<_Elem,_Traits,_Alloc>::_Mystr' in 'char *' nicht möglich
    with
    [
    _Elem=char,
    _Traits=std::char_traits<char>,
    _Alloc=std::allocator<char>
    ]
    Kein benutzerdefinierter Konvertierungsoperator verfügbar, der diese Konvertierung durchführen kann, oder der Operator kann nicht aufgerufen werden

    irgendwie bringt das rumprobieren nicht viel.
    auf den ersten blick habe ich auch nicht viel informationen gefunden, die mich in kürze weiterbringen. also heisst es auf lange sicht: string streams studieren. scheint keine einfache geschichte zu sein.

    @probe-nutzer:
    ich kann nur hoffen, dass du noch ein paar solcher tricks findest. ihr habt mir schon sehr viel geholfen. dafür an dieser stelle, ein riesen danke!



  • Geh doch mal auf stringstream mit dem Cursor und drücke F1. Dann findest Du die Member in der Onlinehilfe. Is keine komplizierte Sache. Probiers mal.



  • genau das habe ich jetzt mal getan.
    vielleicht ist mein verständins nicht ausreichend genug, aber stringstream hat ja gar nicht die member, die gebraucht werden.

    dann habe ich weiter gesucht. die ursprünglich angegebene klasse 'strstream' enthält diese member.
    allerdings wurde sie im original code über <strstrea.h> inkludiert. diese header datei führt vc7 nicht mehr mit.
    ich habe etwas geforscht und die klasse 'strstream' in der header datei 'strstream' gefunden.
    also habe ich jetzt wieder die klasse 'strstream' benutzt. diese eingebunden mit '#include <strstream>

    strstream::pcount

    ergebnis:

    compiler schrieb:

    D:\visualcpp\Vc7\include\strstream(120) : fatal error C1001: INTERNER COMPILERFEHLER
    (Compilerdatei 'msc1.cpp', Zeile 2701)
    Wählen Sie im Menü '?' von Visual C++
    den Befehl 'Software Service', oder öffnen Sie die Hilfedatei für den Software Service, um weitere Informationen zu erhalten
    code_datei.cpp

    und das ganze drei mal.

    gefolgt von dem iterator error (siehe oben).

    also, wenn es einfach wäre, dann hätte ich nach 3 tagen tastatur und maus quälerei sicherlichlich schon das ziel gesehen. leider ist es nicht ganz so einfach, zumindest nicht für mich.
    bitte dringend um hilfe! weiss selber nicht mehr weiter.

    vermute immer noch, dass es an dem visual c++.net 2003 liegt.
    kann jemand, der noch visual c++ 6.x hat nachschauen, ob sich die datei 'strstrea.h' im 'include' ordner befindet? das wäre ein guter hinweis für meine theorie.



  • Mach Dir doch mal die Mühe und bau ein minimalbeispiel so das man das was Du da hast nachvollziehen kann!



  • ja natürlich...

    entschuldige, werde sofort die betreffenden dateien und klassen abändern und hier posten.

    ich weiss nicht, ob ich den code so posten kann, deshalb werde ich ihn lieber modifizieren. werde ein wenig zeit dafür brauchen, um sicher zu gehen, dass ich da keine fehler zusätzlich einbaue.

    werde es gleich posten.

    danke für die hilfe!

    [edit]
    habe gesehen, dass du icq hast. wenn du etwas zeit hast, beame ich dich per vnc auf meinen desktop, dann kann ich es dir alles zeigen.
    nur, wenn du zeit hast.



  • ja, ein minimalbeispiel zu erstellen, ist nicht gerade einfach, da das projekt schon recht komplex ist.

    ich habe hier einen auszug, der "iteratorfehler" (s.o.)

    #pragma once
    
    #include <xstring>
    #include <vector>
    #include <map>
    #include <string>
    
    using namespace std;
    
    namespace SOMENAMESPACE
    {
    inline char* ITOT( int iVal, char* pstrVal, int iBase )
    {
    	return _itoa( iVal, pstrVal, iBase );
    }
    
    inline int STRCMP( const char* p1,const char* p2 )
    {
    	return strcmp( p1, p2 );
    }
    
    #ifndef _STR_DEFINED
    #define _STR_DEFINED
    #define _STR(str) ((str).c_str())
    #endif
    
    ///////////////////////////////////////////////////////////////////////////////
    // TXCollection
    //
    // Implements a collection of objects.  A new object is instantiated as it is 
    // added to the collection
    //
    template< typename _Type, typename _CType/*=char*/ >
    class TXYZCollection
    {
    protected:
    	typedef _CType* _PSTR;
    	typedef const _CType* _PCSTR;
    	typedef std::basic_string<_CType> _tstring;
    
    	protected:
    	typedef std::vector<_tstring>		StringArray;
    	typedef std::map<_tstring, _Type>	String2ObjMap;
    
    	StringArray				m_NameArray;
    	String2ObjMap			m_ObjMap;
    	StringArray::iterator	m_itArray;
    

    falls du mal zeit hast, würde ich dir das gerne per vnc zeigen.
    es ist wie verhext, erst stimmt die include datei nicht. und nach langem probieren und suchen (anscheinend bin ich der erste mit so einem problem) finde ich endlich heraus, welche include dateien es sein müssten, weil nur sie die nötigen klassen (samt member) beinhalten. und dann?
    und dann, gibt es interne compilerfehler.

    😞



  • Aus dem Soruce werd ich nich schlau. Einfach per ICQ antippern. Und geduld haben 🤡 Ich bin nich immer am Rechner


Anmelden zum Antworten