Fragen zur Serialisierung



  • Hallo
    ich möchte in meinem Programm meinen Datensatz in der Dokumentklasse per Serialisierung abspeichern und laden. Dazu habe ich ein paar Fragen:
    1. Wie kann man die Dateiendung der Datei in die abgespeichert wird festlegen?
    2. Wie kann ich festlegen das beim Starten des programms die Daten automatisch aus einer Datei geladen werden, ohne das der Öffnen-Dialog angezeigt wird?
    3. Wie kann man Strings abspeichern und laden? bei meinem Versuch bekam ich die Fehlermeldung Unexceptet file format



  • zu 1.) Beispiel fürs Schreiben:

    try
    	{
    		CFile Datei;
    		Datei.Open("MeineDatei.cfg", CFile::modeRead);
    		CArchive ar(&Datei, CArchive::load);
    		CMeinDialog::Serialize(ar);
    		ar.Close();
    		Datei.Close();
    	}
    	catch (CFileException *e)
    	{
    		e->ReportError();
    		e->Delete();
    		return;
    	}
    

    Lesen geht analog.

    zu 2.) geht wie unter 1.) beschrieben, musst das nur in eine entsprechende Methode deiner Klasse setzen. Also CFile-Objekt erstellen, dananch den Stream ar mit der Datei verbinden und dann die Serialisierungsmethode deiner Klasse aufrufen.

    zu 3.) keine Ahnung, hab ich noch nie gemacht. Du kannst dir aber auch eigene Serialisierungsmechanismen schreiben.

    Edit: Schau Dir mal zu 3. noch das hier an. Da haben die auch was mit CStrings gemacht. Diese lassen sich eventuell direkt serialisieren.


  • Mod

    Alle diese Basics lassen sich erlesen...

    maRKus23 schrieb:

    1. Wie kann man die Dateiendung der Datei in die abgespeichert wird festlegen?

    Im Dokument Template!
    Du hast selbst im Wizard die Extension angegeben! Siehe Ressourcen-Editor!

    maRKus23 schrieb:

    2. Wie kann ich festlegen das beim Starten des programms die Daten automatisch aus einer Datei geladen werden, ohne das der Öffnen-Dialog angezeigt wird?

    Indem Du selbst CSingleDocTenplate::OpenDocumentFile aufrufst!

    maRKus23 schrieb:

    3. Wie kann man Strings abspeichern und laden? bei meinem Versuch bekam ich die Fehlermeldung Unexceptet file format

    Indem Du sie einfach serialisierst:

    CString str(_T("TEXT"));
    ar << str;
    


  • Hmm ich habe das Dokument template nicht gefunden. Wo finde ich das in MS Visual Studio 2003.NET?



  • maRKus23 schrieb:

    Hmm ich habe das Dokument template nicht gefunden. Wo finde ich das in MS Visual Studio 2003.NET?

    Das findest Du in der InitInstance deines Anwednungsobjektes.



  • Ahja und wie lässt sich nun die dateiendung der abzuspeichernden dateien festlegen?


  • Mod

    Das habe ich doch schon geschrieben!
    Schau Dir doch bitte den String in den Ressourcen, den Du für Dein Dokument-Template verwendest!



  • Ich kann in der Ressourcenansicht nichts der gleichen finden.
    Kann ich dort auch den Pfad festlegen, in dem die Datei abgespeichert wird?


  • Mod

    In Deinen String Ressourcen!
    Wie sieht denn das anlegen Deines Document Templates aus?

    Und nein! Wenn Du den kompletten Namen selbst festlegen möchtest, dann musst Du die Standardroutinen des Dokumentes überschreiben. Denn dort wird automatisch nach einem Dateinamen gefragt.



  • In meiner String table kann ich nichts finden was mit DocTemplate zu tun hat.
    Was ich finden kann ist in der Applikationsklasse folgendes

    CSingleDocTemplate* pDocTemplate;
    	pDocTemplate = new CSingleDocTemplate(
    		IDR_MAINFRAME,
    		RUNTIME_CLASS(CSipromTDoc),
    		RUNTIME_CLASS(CMainFrame),      
    		RUNTIME_CLASS(CLeftView));
    	if (!pDocTemplate)
    		return FALSE;
    	AddDocTemplate(pDocTemplate);
    

  • Mod

    Schau Dir bitte die String-Ressource IDR_MAINFRAME an!
    Und lies die Doku zu CDocTemplate!


Anmelden zum Antworten