Text aus Eingabefeld in Variable???



  • Hallo!

    bin absoluter nub in VC++ 😃

    ich hab mir eine kleine anwendung geschrieben, nun hab ich da ein kleines problem.
    und zwar hab ich ein Eingabefeld positioniert. Dem eine variable zugeordnet.

    es sollte so sein, dass der benutzer in diesem eingabefeld einen string eingibt, nämlich das verzeichnis und den namen des files, zB: c:\\temp.txt

    muss ich das als ResourceID: IDC_static nehmen???

    wie kann ich nun diesen string auslesen und in eine andere variable kopieren?

    thx.



  • Wenn du eine Variable erstellt hast (ich gehe mal davon aus das es keine Steuervariable ist) dann mit UpdateData(). Dadurch wird aus dem Steuerelement gelsen oder geschrieben.

    Oder mit

    GetDlgItem(ResourceID)->GetWindowText();

    IDC_static ist was anderes als das was du brauchst. IDC_STATIC können viele Steuerlemente haben. Deine muss aber eindeutig sein.



  • void CFileTestDlg::OnBnClickedButton1()
    {
    	FILE *fp;
    	char stringbuff[81];
    	//m_FileName = "c:\\test.txt";
    
    	if((fp=fopen(m_FName,"r"))==NULL)
    	{
    		m_status = "open file --> failed";
    		UpdateData(FALSE);
    	}
    	else
    	{
    		m_status = "file opened";
    		UpdateData(FALSE);
    		while(!feof(fp))
    		{
    			fgets(stringbuff,81,fp);
    			puts(stringbuff);
    			m_FInhalt = stringbuff;	
    		}
    
    	}
    		fclose(fp);
    }
    
    void CFileTestDlg::OnEnChangeEdit4()
    {
    	UpdateData(TRUE);
    }
    

    Ich habs das mal so gemacht. Glaub da passt was nicht. Kann mir jemand bitte weiterhelfen.

    Die Variable: m_FName ist vom Typ CString und keine Steuervariable.



  • musst du nicht UpdateData(TRUE); nehmen ?



  • aja stimmt, i krieg jetzt diesen assertion fehler beim ausführen:

    Expression: *file!= _T('\0')

    wenn ich ins eingabefeld folgendes eingebe: c:\\text.txt



  • versuch mal c:\text.txt



  • geht auch nicht



  • hi

    also wenn du ds so machst, klappt das doch.
    Bin leider auch nur Anfänger

    UpdateData(TRUE);
    // Meldung erzeugen,falls nichts eingegeben wurde
    if (m_strEingabe!= "") 
    { 
    }       
    else 
    { 
    	MessageBox("Blabla !"); 
    	return; 
    }
    

    und wenn du dann in deim Eingabefeld was eingibts,dann steht auch in der
    Varibalen m_strEingabe auch das Eingegeben drinne
    viel erfolg



  • hmm das hilft leider auch nicht,denn da ruft er nach jedem buchstaben den ich eingeben die MessageBox auf. ich glaube ich schreib das ganze mal neu. aber trotzdem danke für deine hilfe alex....



  • das mit der Messagebox brauchste ja auch gar nicht:
    das war nur ein beispiel, um zu sehen dass ind er VAriablen auch das richtige drin steht, verstehst du?



  • hehe 😃 ja versteh schon, aber es kommt trotzdem immer ein assertion fehler



  • zeig nochmal bitte dein aktueller code
    ich probiers dann mal bei mir, okay?



  • void CFileTestDlg::OnBnClickedButton1()
    {
    	FILE *fp;
    	char stringbuff[81];
    
    	if((fp=fopen(m_FName,"r"))==NULL)
    	{
    		m_status = "open file --> failed";
    		UpdateData(FALSE);
    	}
    	else
    	{
    		m_status = "file opened";
    		UpdateData(FALSE);
    		AfxMessageBox(m_FName);
    		while(!feof(fp))
    		{
    			fgets(stringbuff,81,fp);
    			puts(stringbuff);
    			m_FInhalt = stringbuff;	
    		}
    
    	}
    		fclose(fp);
    }
    
    void CFileTestDlg::OnEnChangeEdit4()
    {
    	UpdateData(TRUE);
    	/*if (m_FName!= "") 
    	{ 
    	}       
    	else 
    	{ 
    		MessageBox("Blabla!"); 
    		return; 
    	} */
    }
    
    void CFileTestDlg::OnEnUpdateEdit4()
    {
    	UpdateData(TRUE);
    	if (m_FName!= "") 
    	{ 
    	}       
    	else 
    	{ 
    		//MessageBox("test!"); 
    		return; 
    	} 
    }
    


  • was willst du nochmal genau machen
    Einfach eine wordpfad in die eingabemaske geben und dann öffnen?



  • genau, i hab da noch ein eingabefeld und da werden dann die ersten paar zeilen angezeigt



  • so..
    also wenn du nur word oder was anderes öffnen willst ,dann würd ich das so machen:

    void CTEXTDlg::OnButton1() 
    {
    
        UpdateData(TRUE);
    
        // Fehlermeldung erzeugen,falls nichts eingegeben wurde
    	if (m_strEingabe!= "") 
    	{ 
    		// Word Datei öffnen
    		ShellExecute(NULL, "open", m_strEingabe, NULL, NULL, SW_SHOWNORMAL);
    	}       
    	else 
    	{ 
    		MessageBox("BLABLA !"); 
    		return; 
    	}
    
    }
    

Anmelden zum Antworten