CArchive

Reticent

Erfahrenes Mitglied
Sehr geehrte All, können Sie mir helfen?
ich mache das hier
CFile file;
if (file.Open("settings.set",CFile::modeCreate| CFile::modeWrite))
{
CArchive ar(&file,CArchive::store);

hier commt fehler --> ar.WriteObject(&m_Vortext);
m_Vortext ist eine Membervar. von CEdit

//- alles schlissen ------------------
file.Close();
ar.Close();
}
was mache ich falsch
 
Sehr geehrter Einer,
zum Einen benutzt du nicht die Code-Tags. Dann ist der Code nämlich besser lesbar. ('#'-Button beim Editieren)
Code:
CFile file;
if (file.Open("settings.set",CFile::modeCreate| CFile::modeWrite))
{
  CArchive ar(&file,CArchive::store);

  //hier commt fehler --> 
  ar.WriteObject(&m_Vortext);
  //m_Vortext ist eine Membervar. von CEdit

  //- alles schlissen ------------------
  file.Close();
  ar.Close();
}

Zum Anderen: Du sagst nicht, um was für einen Fehler es sich handelt. Kannst du uns die Fehlermeldung posten? Ist es ein Compilerfehler oder ein Runtimefehler?
Ist das CArchive vielleicht nicht richtig geöffnet?
Hast du daran gdacht: "You must use the IMPLEMENT_SERIAL macro to enable archiving. "?
 
Zuletzt bearbeitet:
Danke, werde Code-Tags benutzen. :-(

also. das Problem habe ich gelöst. Aber es gibt was anderes:

Code:
CFile file;

if (file.Open("settings.set",CFile::modeCreate | CFile::modeReadWrite ))
{
	//- Archive zuordnen -----------------
	CArchive ar(&file,CArchive::store);

	//- Objecte speichern ----------------
	m_Vortext.Serialize(ar);
		
	//- alles schlissen ------------------
	ar.Close();
	file.Close();
}else
	MessageBox("Can't create file");
wenn ich dann in mein Datei reinschaue, ist nix zu sehen :( d.h. es wird nichts geschrieben. Obwohl mit file.Write(..) gehts.
Wo habe ich mich "vertippt"
 
ich habe herausgefunden, dass in "afx.inl"
Code:
_AFX_INLINE void CObject::Serialize(CArchive&)
	{ /* CObject does not serialize anything by default */ }
steht. was soll ich tun?! ok... ich lass es erstmal.

dann hab ich auf diese Weise versuch :
anstatt EditText.Serialize(ar);
das CMyDlg::Serialize(ar); zu nehmen.
Code:
void CMyDlg::Serialize(CArchive& ar) 
{
	if (ar.IsStoring())
	{	
		ar.WriteObject(&m_Vortext);
	}
	else
	{	// Code wird geladen
	}
}
jetzt wirft es immer
AfxThrowNotSupportedException()
 
ich hab's

Habe einfach die Serialize() für Mein Hauptdialog gemacht und nicht für jedes Element einzeln.

In Der Methode habe ich dann alles Nötige realisiert.

Danke an Alle!
 

Neue Beiträge

Zurück