Datei einlesen und ausgeben



  • Hi,
    ich erstelle eine Oberfläche, die ganz einfach aussieht. Die habe ich dialogbasierend erstellt. Ein Benutzer soll ein Paar Werte auf der Oberfläche (in Editfelder) ändern können, mit dem drücken des Buttons "OK" wird alles aus der Oberfläche in eine Datei gechrieben und die Öberfläche geschlossen. Das habe ich gemacht, funktioniert gut.
    Beim Öffnen der Oberfläche sollen die vorher gespeicherte Werte aus der Datei ausgelesen und auf der Oberfläche angezeigt werden. Und hier stoße ich auf unklares Problem. Alles zum Einlesen der Datei habe ich im Konstruktor 'MeineKlasseDlg' geschrieben. Aber bei der Ausführung bekomme ich eine Meldung "Debug Assertion Failed!". Was mache ich falsch? Brauche Hilfe... 😞



  • Wie wärs mit ein wenig Quelltext, um helfen zu können 😕

    Hast du im Konstruktor vielleicht UpdateData() verwendet? Verlagere die Arbeiten mal in InitDialog.



  • Ja, ich habe UpdateData() verwendet.

    Code:
    Meine_Klasse_Dlg::Meine_Klasse_Dlg(CWnd* pParent /=NULL/)
    : CDialog(Meine_Klasse_Dlg::IDD, pParent) {
    CFile Datei;
    Datei.Open("Text_Datei.txt", CFile::modeRead);
    CArchive ar(&Datei, CArchive::load);
    ar >> Daten_1;
    ar >> Daten_2;
    ar >> Daten_3;
    m_Daten_1 = Daten_1;
    m_Daten_2 = Daten_2;
    m_Daten_3 = Daten_3;
    ar.Close();
    Datei.Close();
    UpdateData(FALSE);
    }

    Kannst du erklären, warum ich das verschiben soll? 😕



  • Es funktioniert wirklich!
    Danke! Danke! Danke! 😃



  • Noch_Student schrieb:

    Kannst du erklären, warum ich das verschiben soll? 😕

    Weil im Konstruktor nur das Dialogobjekt angelegt wird. m_Daten_x sind sicher Membervariablen auf Dialogfeldelemente wie z.B. Editfelder. Diese existieren aber zu diesem Zeitpunkt noch nicht. Deshalb ist OnInitDialog, wie schon bemerkt, die richtige Wahl.


Anmelden zum Antworten