Zugriff auf CStdioFile



  • Hallo Zusammen!

    Ich versuche einen recht einfachen Parser zu schreiben. Dafür lese ich die Daten mit

    CString StrLesen = "";
    
    filein.Open(pathName, 
    CFile::modeRead | 
    CFile::typeText); 
    
    filein.ReadString(strLesen);
    

    ein und schreibe sie mit

    fileout.Open(New, 
    CFile::modeCreate | 
    CFile::modeWrite | 
    CFile::typeText);
    
    fileout.WriteString("}\n");
    

    immer wenn ich mit

    strLesen.Find
    

    ein "Schlagwort" finde.

    Ich füge prinzipiell immer den gleichen Text in die neue Datei ein... nur halt mit anderen Variablen. Deswegen wollte ich das einfügen auslagern. Aber wenn ich das in ne separate Funktion schreibe

    void test(CStdioFile fileout, CStdioFile filein)
    {	CString strLesen;
    	double X, Y, w;
    	int i;
    
    					for(int j=0; j <= 10 ; ++j)
    					{
    						filein.ReadString(strLesen);
    						i++;
    
    						if (strLesen.Find("GPinX",0) >= 0)
    							{
    							CString a, b, ausgabe ;
    							AfxExtractSubString(a, strLesen, 1, '>');
    							AfxExtractSubString(b, a, 0, '.');
    							X = atof(b)/10000;
    							}
    
    						if (strLesen.Find("GPinY",0) >= 0)
    							{
    							CString a, b, Translation ;
    							AfxExtractSubString(a, strLesen, 1, '>');
    							AfxExtractSubString(b, a, 0, '.');
    							Y = atof(b)/10000;
    							Translation.Format("translation %f 0 %f\n", X,Y);
    							fileout.WriteString(Translation);
    							}
    						if (strLesen.Find("Angle",0) >= 0)
    							{
    							CString a, b, Rotation ;
    							AfxExtractSubString(a, strLesen, 1, '>');
    							AfxExtractSubString(b, a, 0, '<');
    							w = atof(b)* -1;
    							Rotation.Format("rotation 0 1 0 %f\n", w);
    							fileout.WriteString(Rotation);
    							}
    
    					}
    }
    

    bekomme ich den Fehler C2248. 😞

    Is ja sicherlich weil ich auf die CStdioFiles zugreifen will... oder? Weiß nich was ich machen muss... Stell mich glaub ich einfach bissl dumm an 😞 Wär für jede Hilfe dankbar.



  • In der MSDN lässt sich übrigens wunderschön nachlesen, was dieser Fehler bedeutet: http://msdn.microsoft.com/de-de/library/tsbce2bh.aspx

    In Verbindung mit der vom Compiler angemeckerten Zeile solltest Du der Lösung ziemlich nahe kommen.



  • Wenn du mir sagst, wo ich rausbekomme welche Zeile in meinem selbstgeschriebenen Code betroffen ist...
    Er sagt ja immer nur

    1>c:\programme\microsoft visual studio 9.0\vc\atlmfc\include\afx.h(1116) : error C2248: 'CObject::CObject' : cannot access private member declared in class 'CObject'
    

    Und in der afx.h ist es dann

    protected:
    	BOOL m_bCloseOnDelete;
    	CString m_strFileName;
    };
    

    von dem virtual CFile... Hilft mir also nich so richtig 😞
    Sry wenn ich mich dumm anstelle 🙄



  • Ich würde zumindestens die Argumente als Referenz übergeben:

    void test(CStdioFile& fileout, CStdioFile& filein)
    

    Ansonsten zeigt der Code auf dem ersten Blick nichts ungewöhnliches.



  • 👍
    Das war das Problem 🙂 DANKE 😘


Anmelden zum Antworten