visual c++ hängt sich bei serialize auf



  • also: einfaches Zeichenprogramm unter mfc. Wenn ich jetzt die Figur abspeichern will hängt sich zuerst das Fenster auf und in kürzester Zeit das ganze Windows.
    Da erscheint nicht einmal der Dialog für speichern.

    Und deshalb vermute ich, dass das mit der Serialize Funktion zu tun hat.
    Aber mehr als das da hab ich da net drinnen stehen:

    void CCTriangleDoc::Serialize(CArchive& ar)
    {
    	int i;
    
    	if (ar.IsStoring())
    	{
    		if(dCheck==true)
    		{
    			help=0;
    		}else
    		{
    			help=1;
    		}
    		if(transparent==true)
    		{
    			thelp=0;
    		}else
    		{
    			thelp=1;
    		}
    		ar << help;
    		ar << dRadius;
    		ar << dStrich;
    		ar << nIndex;
    		ar << fillcolor[0];
    		ar << fillcolor[1];
    		ar << fillcolor[2];
    		ar << Punkt;
    		ar << thelp;
    		for(i=0;i<3;i++)
    		{
    			ar << array[i].x;
    			ar << array[i].y;
    		}
    	}
    	else
    	{
    		if(help=0)
    		{
    			dCheck=true;
    		}else{
    			dCheck=false;
    		}
    		if(thelp=0)
    		{
    			transparent=true;
    		}else{
    			transparent=false;
    		}
    		ar >> help;
    		ar >> dRadius;
    		ar >> dStrich;
    		ar >> nIndex;
    		ar >> fillcolor[0];
    		ar >> fillcolor[1];
    		ar >> fillcolor[2];
    		ar >> Punkt;
    		ar >> thelp;
    		for(i=0;i<3;i++)
    		{
    			ar >> array[i].x;
    			ar >> array[i].y;
    		}
    	}
    }
    

    Bitte hilfeeeeeeee 😕



  • Mal ein paar Grundsatzfragen:

    Hast du deine Klasse CCTriangleDoc von CObject abgeleitet?
    Hast du die 2 Makros für die Serialisierung in diese Klasse eingebunden? --> IMPLEMENT_SERIAL und DECLARE_SERIAL
    In der Serialize-Funktion würde ich zu Beginn auch die Funktion der Basisklasse aufrufen, also

    // Funktion der Basisklasse aufrufen
    CObject::Serialize(ar);
    


  • also ich hab das folgende problem

    ich habe das serial mal nicht eingebunden

    dann kann ich mode::Write benutzen aber nur wenn das file schon vorhanden ist.

    dann hab ich gedacht

    ok dann macht das mal mit serial

    ok

    Mein problem ist nachdem ich folgenden code reinschreibe mein programm zwar aufgerufen wird, aber sonst nichts macht und wenn ich auf EXIT klicke stuerzt es zwar nciht direkt ab, aber es kommt ne box in der steht ...irgendwas mit muss ein integer wert sein. hmmmm

    wenn ich die sachen wieder rausnehme dann geht alles wieder ausser das ich halt nicht wirklich createn kann

    jetzt hab ich folgendes gemacht

    in der header:

    class CTestSuite: public CDialog  
    {
    
    DECLARE_SERIAL ( CTestSuiteFCNMPDlg )
    
    // ..........
    
    virtual void Serialize( CArchive &ar );
    
    /.....
    
    }
    

    und der der cpp

    //include blablabla
    IMPLEMENT_SERIAL (CTestSuiteFCNMPDlg, CObject, 1)
    
    //dann die funktionen
    
    // dann noch
    
    void CTestSuiteFCNMPDlg::Serialize(CArchive& ar)
    {
    	if (ar.IsStoring())
    	{
    	}
    	else
    	{
    	}
    }
    

    mein save button ist so

    //....
    int max = m_test_list.GetCount();
    
    			if(max != 0 )
    			{
    
    				CFileDialog ldFile(FALSE);
    
    				if(ldFile.DoModal() )
    				{
    
    					CStdioFile fDatei(ldFile.GetFileName(), CFile::modeWrite);
    
    /......
    

    jetzt ist noch die frage ( als 2tes ) in ldFile ja der pathname steht mit den eingegebenen namen + ext. wie kann ich jetzt das so machen dass ich vorbelegt folgendes habe

    filename ist der name in einer editbox + das heutige datum + .txt

    jetzt soll dies schon vorbelegt sein und ich tue ja mit dem DoModal() ja nur das vorgefertigte speichern dialog auswahlen wo dann filename steht udn ich halt nur den weg dorthin browse.

    filename kann ich ja erzeugen. aber wie kriege ich dies in dem dialog rein??

    kann mir bitte jemand helfen????



  • hi

    tut niemand von euch auf dateien zugreifen???? muessen doch schon einige von euch hinbekommen haben ?!?!?!


Anmelden zum Antworten