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ängerUpdateData(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; } }