Editfeld funzt net!



  • Moin Leute!

    Habe hier ein Problem mit einen Editfeld. Es anlegen macht keine Sorgen. Aber dann möchte ich die Variable CString m_strResults zuweisen. Compiliert wird das Prog auch aber beim Ausführen schmiert es ab.

    Als Fehlermeldung wird eine Zugriffsverletzung festgestellt.

    Wer kann mir sagen, woran das liegt und wie man abhilfe schaffen kann?

    THX Markus



  • mstank schrieb:

    Habe hier ein Problem mit einen Editfeld. Es anlegen macht keine Sorgen. Aber dann möchte ich die Variable CString m_strResults zuweisen. Compiliert wird das Prog auch aber beim Ausführen schmiert es ab.

    hast du ein objekt des edit feldes?
    wenn ja dann geht's so

    CString m_strResults;
    mein_edit_control.GetWindowText (m_strResults);
    

    oder als pointer

    CString m_strResults;
    mein_edit_control->GetWindowText (m_strResults);
    


  • Tach net!

    Das GetWindowText liest sich für mich (Anfänger) so, als wenn ich das Editfeld auslese. Aber eigendlich möchte ich da was reinschreiben und zwar den Namen einer Datei, in die geschrieben werden soll.

    In einem anderen Prog klapt das auch.

    CFileDialog m_ldFile(FALSE);
    
    	//open Dialogbox and catch event
    	if (m_ldFile.DoModal() == IDOK)
    	{
    		//get selected Filename
    		m_sResults = m_ldFile.GetFileName();
    		//update Dialogbox
    		UpdateData (FALSE);
    	}
    
    	//open or create file and write string per string include <cr> and <lf>
    	CStdioFile datei(m_sResults, CFile::modeCreate | CFile::modeWrite);
    
    	for (int i=0; i<m_txt_Array.GetSize(); i++)
    	{
    		datei.WriteString(m_txt_Array[i] +"\r" +"\n");
    	}
    
    	datei.Close();
    

    Nun habe ich ein Beispielprog. vom MSDN zum Empfang von UDP-Packeten und da tut es das nicht!

    Gruß Markus



  • mstank schrieb:

    Aber eigendlich möchte ich da was reinschreiben und zwar den Namen einer Datei, in die geschrieben werden soll.

    ach so, umgekehrt. geht so:

    mein_edit_control.SetWindowText(m_strResults);
    

    mstank schrieb:

    In einem anderen Prog klapt das auch.

    das beispiel macht's aber mit 'nem CFileDialog-objekt. das ist was ganz anderes als ein einfaches edit control



  • Hi net!

    Ich habe nun folgenden Code:

    void CStarDustUDPDlg::OnSave() 
    {
    	CFileDialog m_ldFile(FALSE);
    
    	CString strResults;
    
    	//open Dialogbox and catch event
    	if (m_ldFile.DoModal() == IDOK)
    	{
    		strResults = m_ldFile.GetFileName();
    
    		//get selected Filename
    		m_ctrlResults.SetWindowText(m_ldFile.GetFileName());
    
    		//Update Dialogbox
    		UpdateData(TRUE);
    	}
    
    	//m_strTeceive = _TC("");	//Anzeige aktualsieren...
    	UpdateData(FALSE);	//...und Anzeigen
    
    	GetDlgItem(IDC_SAVE)->EnableWindow(FALSE);
    	GetDlgItem(IDC_SAVE)->EnableWindow( FALSE );
    
    	//now save file like Star.DustRS232
    
    	//open or create file and write string per string include <cr> and <lf>
    	CStdioFile datei(strResults, CFile::modeCreate | CFile::modeWrite);
    
    	for (int i=0; i<m_txt_Array.GetSize(); i++)
    	{
    		datei.WriteString(m_txt_Array[i] +"\r" +"\n");
    	}
    
    	datei.Close();
    
    }
    

    Da wird nun auch eine Datei angelegt. Soweit sogut. In die Datei kann ich noch nicht reinschreiben, kommt hoffendlich heute. Aber wenn ich das Prog beende, dann tut sich wieder ein Fehlermeldung auf. Ansonsten läuft alles. Liegt es daran, daß ich ein Objekt erst löschen muß?

    Es passiert auch erst dann, wenn ich

    m_ctrlResults.SetWindowText(m_ldFile.GetFileName());
    

    einfüge.
    Gruß Markus


Anmelden zum Antworten