text datei öffnen



  • Hi!
    Ich ahbe eine infodatei zu meinem fenster geschrieben und möchte, dass diese angezeigt wird wenn der benutzer im menu auf info drückt.
    Mit welchem befehl geht das?

    Gruß und danke!



  • Servus,

    guck mal in der MSDN unter CStdioFile dort gibt es auch schöne Beispiele.

    Im Prinzip ist es ganz einfach. Du öffnest die Datei, liest die Datei und schließt die Datei.

    Bsp.:

    CString strOutput;
    CStdioFile stdFileInput("C:\\DeinPfad", CStdioFile::modeRead);
    
    while (stdFileInput.GetPosition() < stdFileInput.GetLength()-1)
    {
      stdFileInput.ReadString(strOutput);
      m_ctrEdit.SetWindowText(strOutput);
    }
    
    stdFileInput.Close();
    

    und das wars auch schon...

    Viel Spass
    *winke*
    Hellsgore

    EDIT:

    Ich habe was vergessen. Du möchtest ja bei einem Buttonklick das deine Datei angezeigt wird oder? Du solltest dann dafür auch noch einen Dialog öffnen indem du dann diese gelesenen Werte hineinschreibst.

    1. Du erstellst dir eine neue Klasse vom Typ CDialog.
    2. Du suchst unter deinen Resourcen nach dem Dialog Fenster und öffnest diesen.
    3. Du fügst ein RichfeldControl ein.
    4. Du gibst diesem eine Membervariable Bsp. m_ctrRichText
    5. Du öffnest deine Projekt.cpp Bsp. Dein Programm heisst Test nun hast du 2 .cpp dateien. Einmal TestDlg.cpp und Test.cpp. Du öffnest dann die Test.cpp
    6. Du fügst in der Funktion InitInstance "AfxInitRichEdit2();" ein
    7. Du fragst in deiner MessageMap die ID deines zu drückenden Button ab.
    Bsp.: ID = ID_BUTTON_INFO
    Dann in deiner *Dlg.cpp Datei unter MESSAGE_MAP folgenden eintragen:

    BEGIN_MESSAGE_MAP(CDeinDlg, CDialog)
    	ON_WM_SYSCOMMAND()
    	ON_WM_PAINT()
    	ON_WM_QUERYDRAGICON()
    	//}}AFX_MSG_MAP
    	ON_BN_CLICKED(ID_BUTTON_INFO, OnBnClickedButtonInfo)
    END_MESSAGE_MAP()
    

    8. Eine Funktion "OnBnClickedButtonInfo" erstellen so wie du sie in der MessageMap benannt hast.
    9. In diese Funktion deinen Dialog starten :

    void CDeinDlg::OnBnClickedButtonInfo()
    {
      CDeinNeuerDlg* m_pDlg = new CDeinNeuerDlg();
      m_pDlg->Create(IDD_DEIN_NEUER_DLG);
      m_pDlg->ShowWindow(SW_SHOW);
      m_pDlg->ShowFileInfo();		
    }
    

    10. Du öffnest DeinNeuerDlg.cpp und fügst eine Funktion Namens "ShowFileInfo" ein:

    void CDeinNeuerDlg::ShowFileInfo()
    {
     CString strOutput, strRead;
     CStdioFile stdFileInput("C:\\DeinPfad", CStdioFile::modeRead);
    
     while (stdFileInput.GetPosition() < stdFileInput.GetLength()-1)
     {
       stdFileInput.ReadString(strRead);
       strOutput += strRead;
     }
     stdFileInput.Close();
    
     m_ctrRichText.SetWindowText(strOutput);
    
    }
    

    So und nun hast du sogar noch gelernt wie man ein RichFeld initialisierst und einen "Nicht-Modalen" Dialog erstellst... 😃

    Viel Spass



  • Mein quellcode sieht so aus:

    void CSIM_Test_ToolsV1Dlg::OnInfotext()
    {
    CString strOutput;
    CStdioFile stdFileInput("C:\info.txt", CStdioFile::modeRead);

    while (stdFileInput.GetPosition() < stdFileInput.GetLength()-1)
    {
    stdFileInput.ReadString(strOutput);
    m_iInfotext.SetWindowText(strOutput);
    }
    stdFileInput.Close();
    }

    leider bekomme ich die Fehlermeldung:
    errorcode:C2228
    Der linke Teil von '.SetWindowTextA' muss eine Klasse/Struktur/Union sein 😕



  • Anstatt "C:\info.txt" muss du "C:**\**info.txt" schreiben!



  • Du hast m_iInfotext gar nicht deklariert...


Anmelden zum Antworten