Serialize - laden klappt nicht



  • Hallöchen,
    ich bin an einem Projekt am arbeiten und komme im Moment nicht so recht weiter.
    Ich habe ein SDI Projekt und im meiner Doc sollen Sliderwerte aus der View gespeichert werden. Das übergeben und speichern( mittels der Serialize) klappt auch.
    Nur wenn ich mein Programm debugge, kann ich zwar speichern aber beim laden der selben Datei, wird die Funktion Serialize zwar aufgerufen aber die Abfrage : if (ar.IsLoading()) ist nicht True. Daher kann ich die Daten nicht laden.

    Wenn ich jedoch beim Neustart des Programms erst eine bestehende Datei laden will, wird die funktion aufgrufen aber der Debugger spuckt dann eine Fehlermeldung aus!!!

    Hier ist meine Serialize aus der Doc:

    void CAirControlSoftDoc::Serialize(CArchive& ar) 
    {
    	if (ar.IsLoading())
    	{	
    	    ar>>l_slide1>>l_slide2;
    
    	}
    	else
    	{	
    		ar<<s_slide1<<s_slide2;
    	}
    }
    

    die variablen sind vom Typ CString

    Ich wäre euch dankbar, wenn ihr mir weiterhelfen könntet.

    MfG


  • Mod

    Zeig mal Dein ganzes Handling für das Dokument! Hast Du mehr überschrieben als Serialize? Legst Du die Datei in irgendeiner Form selber an?



  • Wie schon gesagt ich habe ein SDI Projekt, dadrin habe ich dann auch die Möglichkeit ein Menü zu nutzen. Wenn ich dann auf Datei-> speichern /spechern unter oder laden gehe wird die Funktion Serialize aufgerufen...
    Den Dateinamen kann ich dort im üblichen fenster angeben.

    Hier ist mein Code für die Doc:

    #include "stdafx.h"
    #include "Air Control Soft.h"
    
    #include "Air Control SoftDoc.h"
    #include "Air Control SoftView.h"
    
    #ifdef _DEBUG
    #define new DEBUG_NEW
    #undef THIS_FILE
    static char THIS_FILE[] = __FILE__;
    #endif
    
    /////////////////////////////////////////////////////////////////////////////
    // CAirControlSoftDoc
    
    IMPLEMENT_DYNCREATE(CAirControlSoftDoc, CDocument)
    
    BEGIN_MESSAGE_MAP(CAirControlSoftDoc, CDocument)
    	//{{AFX_MSG_MAP(CAirControlSoftDoc)
    		// HINWEIS - Hier werden Mapping-Makros vom Klassen-Assistenten eingefügt und entfernt.
    		//    Innerhalb dieser generierten Quelltextabschnitte NICHTS VERÄNDERN!
    	//}}AFX_MSG_MAP
    END_MESSAGE_MAP()
    
    /////////////////////////////////////////////////////////////////////////////
    // CAirControlSoftDoc Konstruktion/Destruktion
    
    CAirControlSoftDoc::CAirControlSoftDoc()
    {
    	// ZU ERLEDIGEN: Hier Code für One-Time-Konstruktion einfügen
    
    }
    
    CAirControlSoftDoc::~CAirControlSoftDoc()
    {
    }
    
    BOOL CAirControlSoftDoc::OnNewDocument()
    {
    	if (!CDocument::OnNewDocument())
    		return FALSE;
    
    	// ZU ERLEDIGEN: Hier Code zur Reinitialisierung einfügen
    	// (SDI-Dokumente verwenden dieses Dokument)
    
    	return TRUE;
    }
    
    /////////////////////////////////////////////////////////////////////////////
    // CAirControlSoftDoc Serialisierung
    
    void CAirControlSoftDoc::Serialize(CArchive& ar)
    {
        if (ar.IsLoading())
        {   
            ar>>l_slide1>>l_slide2;
    
        }
        else
        {   
            ar<<s_slide1<<s_slide2;
        }
    }
    
    /////////////////////////////////////////////////////////////////////////////
    // CAirControlSoftDoc Diagnose
    
    #ifdef _DEBUG
    void CAirControlSoftDoc::AssertValid() const
    {
    	CDocument::AssertValid();
    }
    
    void CAirControlSoftDoc::Dump(CDumpContext& dc) const
    {
    	CDocument::Dump(dc);
    }
    #endif //_DEBUG
    

    /////////////////////////////////////////////////////////////////////////////
    // CAirControlSoftDoc Befehle

    MIt einem Haltepunkte habe ich überprüft, dass nachdem ich gespeichert habe, nach "öffnen" nicht in die if abfrage reinkomme.


Anmelden zum Antworten