Problem mit ReadString in einem neuen Dialog



  • Hallo,

    ich habe mir ein Dialog basiertes Programm geschrieben, in dem ich mir in einen RichEditor eine Datei lade. Die Dateiauswahl realisiere ich über den Datei Dialog.
    Nun wird bei betätigen eines anderen Buttons wiederum ein Dialog aufgerufen, in dem ich eine andere Datei auslesen will.
    Unabhängig funktionieren dies beiden Sachen auch. Nur wenn ich dann in meinen RichEditor die Datei geladen hab und dann denn zweiten Dialog aufrufe und dort eine Datei auslesen will, bekomm ich eine "Assertion faild" Meldung und zwar:
    File: fgets.C
    Expression str!=NULL
    Über den Debugger bin ich dann zu:
    BOOL CStdioFile:ReadString gelangt in der die fgetts-Funktion NULL zurückliefert, nur weiß ich nicht warum und was mir das sagen soll?
    Kann mir da jemand weiterhelfen oder einen Tipp geben, was ich besser machen kann?
    Der Code sieht wie folgt aus:

    void CBiDlg::OnButton1(){
    
    CString strDateiInhalt, strDateipfad;
    DateiFunktionen datei;  //ist abgeleitete Klasse von CStdioFile
    DateiDialog dlg(TRUE);  //DateiDialog ist abgeleitet von CFileDialog
    dlg.Modal();
    strDateipfad=dlg.m_ofn.lpstrFile;
    if(datei.Open(strDateipfad,CFile::modeRead)){
    int iLaen=datei.GetLength();
    strDateiInhalt.ReleaseBuffer(Read(strDateiInhalt.GetBuffer(iLaen),iLaen));
    datei.Close();
    }
    else
    strDateiInhalt="Nix passiert";
    SetDlgItemText(IDC_RichEdit_Datei, strDateiInhalt);
    }
    
    void CBiDlg::OnButton2(){
    
    ArchivlistenDialog archDlg; //ist abgeleitet von CDialog
    archDlg.DoModal();
    }
    
    void ArchivlistenDialog::OnButtonOK(){
    
    CString strDateiEintrag;
    CString strDateipfad="Test.txt";
    CStdioFile datei;
    if(datei.Open(strDateipfad,CFile::modeRead){
    while(datei.ReadString(strDateiEintrag)||(!strDateiEintrag.IsEmpty())){ //diese Zeile führt zum Assertion failed
    
    MessageBox(strDateiEintrag);
    }
    }
    


  • Sorry, der Beitrag ist schon da, hab ihn nur über sehen, mein Rechner spinnt gerade etwas.


Anmelden zum Antworten