File-Handling
-
Hi!
Ich hab gleich zum Anfang meines Praktikums eine schöne Aufgabe bekommen.
Da ich mit MFC noch nie etwas gemacht habe hörts nach der Erstellung der Oberfläche auch schon auf!Es sollen über einen Button alle Eingabefelder ausgelesen werden und in eine *.txt
geschrieben werden. Gleichzeitig soll über einen anderen Schalter über das gewohnte Auswahl-Menü ein *.txt File ausgewählt werden der dan die Eingabefelder füllt und notfalls überschreibt.Wie könnte man also dieses Problem(was bestimmt für die meisten von euch nun absolut keins ist)lösen?
Danke
-
mit CFile und MSDN?
-
Ja das ist klar...
Gibts da keine Beispiel-Programme?
Die Zeit drängt etwas bei mir und muss mir das jetzt in kürzester Zeit reinhelfen...Ich versuch schon seit zwei Tagen dem Schalter beizubringen eine Datei zu öffnen und einen Wert bis zum Zeilenumbruch in ein ganz bestimmtes Eingabefeld zu laden und umgekehrt....das kanns doch nicht sein.
Ich bitte also um Hilfe!!! ist wirklich wichtig ...
Wenns euch zu trivial...vielleicht kennt ja jemand ein entsprechendes Tutorial das o.g. Sachverhalt abdeckt(ausser MSDN)!
Wo muss ich welche Variante von cfile einbinden?
Ich hoffe dieses Thema wurde noch nicht in dem Kontext behandelt...
-
Alsoooo.....
Eingabefelder in eine Variable einlesen bzw. auslesen:
Einlesen :
CString strString; GetDlgItemText(ID_DEINES_EINGABEFELDES, strString);
Jetzt steht in strString der Text deines Eingabefeldes.
Auslesen :
CString strString; strString = "Das hier wird in dein Eingabefeld geschrieben!"; SetDlgItemText(ID_DEINES_EINGABEFELDES, strString);
Jetzt wird der Text "Das hier wird in dein Eingabefeld geschrieben!" in dein Eingabefeld geschrieben.
_______________________________________________________________________________Dateien schreiben bzw. auslesen
In eine TXT Schreiben :
CStdioFile OutFile; if (OutFile.Open("C:\\data.txt",CFile::modeCreate | CFile::modeWrite)) { OutFile.WriteString("Hallo, das wird in die TXT geschrieben"); OutFile.Close(); }
Somit wird eine Textdatei erstellt, sofern sie nicht schon existiert und es wird in ihr reingeschrieben.
Auslesen :
CStdioFile File; CString strString; if (File.Open("C:\\data.txt", CFile::modeRead)) { File.ReadString(strString); File.Close(); }
Jetzt steht der Text aus der TXT in der Variable strString.
Hoffe konnte dir weiterhelfen...
Jonnyy
-
Danke
ich werds morgen früh gleich ma testen und mich dann nochmal melden wenns
hoffentlich geklappt hat bzw ich den Computer ausm Fenster geworfen hab
-
Warum übernimmt dat denn nicht den Wert vom Eingabefeld und schreibt ne leere Data.txt?
CStdioFile OutFile; if (OutFile.Open("C:\\Data.txt", CFile::modeCreate | CFile::modeWrite)) { OutFile.WriteString(m_eingabe1); // Variable einer Editbox OutFile.Close(); }
Ich muss den Wert der aus der edit-box kommt doch in eine Variable laden...wo muss denn das passieren? Bisher bewege ich mich nur hier(void CWorb_v1Dlg::OnButton2() )
-
UpdateData(TRUE) vergessen?
Erst hiermit werden die Werte aus dem Edit-Feld in die zugeordnete Variable übernommen.
-
UpdateData() ?
-
mist, zu spät
-
is klar
void CFiliDlg::OnButton1() { TCHAR str[1000]; CFile datei( "C:\\test.txt", CFile::modeRead ); datei.Read( str, sizeof( str ) ); datei.Close(); m_strEdit1 = str; UpdateData( FALSE ); } void CFiliDlg::OnButton2() { TCHAR str[1000]; UpdateData( TRUE ); _tcscpy( str, m_strEdit2 ); CFile datei( "C:\\test.txt", CFile::modeCreate | CFile::modeWrite ); datei.Write( str, sizeof( str ) ); datei.Close(); }
gut ein schritt weiter?
wenn ich nun 2 bis viele edit-felder auslesen möchte und die zusammen in einen File schreiben möchte?...Wie ist das möglich ?
-
Am besten benutzt du eine Schleife, was geht allerdings nur wenn du weisst wie viele edit Felder du hast.
CString strStringDerEdits; CString strAll; for(int i = 0; i < 5; i++) { GetDlgItemText(ID_EDIT + i, strStringDerEdits); strAll += strStringDerEdits; }
also, als erstes gehst du ne Schleife durch, was das bedeutet weisst du doch sicherlich. Danach passiert folgendes. Mit Hilfe von ID_EDIT + i wird jedesmal ein anderes EditFeld ausgelesen, dass bedeutet jedoch auch, dass du deine ganzen EditFelder nach der reihe von 1 - 5 beschriften musst, also ID_EDIT1, ID_EDIT2 .. usw. usw.
Ich glaube das es schwierigkeiten bei der zeile "strAll += strStringDerEdits" geben wird. Hab vergessen wie man das richtig macht..
Jonnyy