Möchte den Wert eines Eingabefeldes abspeichern
-
Hallo,
ich würde gerne den Wert von einem Eingabefeld abspeichern, aber irgendwie schaffe ich es nicht :-(. Der betreffende Ausschnitt meines Codes ist folgender:
void CDialogeDlg::OnYesnocancel() { // TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen // Eigener Code Anfang int iResults; // Variable für Schaltflächenauswahl // Benutzer fragen iResults = MessageBox("Ja, Nein oder Abbrechen drücken", "Dialogfeld Ja, Nein, Abbrechen", MB_YESNOCANCEL | MB_ICONINFORMATION); // angeklickte Schaltfläche ermitteln // Benutzer die angeklickte Schaltfläche melden switch (iResults) { case IDYES: // Schaltfläche Ja? m_sResults= "Ja! Ja! Ja!"; break; case IDNO: // Schaltfläche Nein? m_sResults = "Nein, nein, nein"; break; case IDCANCEL: // Schaltfläche Abbrechen? m_sResults = "Sorry, abgebrochen."; break; } // Dialogfeld aktualisieren UpdateData(FALSE); char Text; Text = m_sResults; }und jetzt müßte ich noch CreateFile oder so einbauen, aber es geht so schon irgendwie nicht, kann mir jemand ein paar Denkanstöße liefern, was ich falsch gemacht habe und wo ich Infos finden kann, wie ich es besser machen kann? Ich vermutlich noch etwas zu schwierig für mich, ich bin noch ziemlicher Anfänger, wenn es um grafische C++ Programmierung geht, aber ich bräuchte es einfach.
Im voraus vielen Dank!
Viele Grüße,
Arwen
-
Arwen schrieb:
es geht so schon irgendwie nicht
was meinst du damit?
-
Bis auf diese zwei Zeilen geht alles:
char Text; Text = m_sResults;Sobald ich diese allerdings einfüge, bekomme ich die Fehlermeldung
C:\Programme\Microsoft Visual Studio\MyProjects\Dialoge\DialogeDlg.cpp(212) : error C2679: Binaerer Operator '=' : Kein Operator definiert, der einen rechtsseitigen Operator vom Typ 'class CString' akzeptiert (oder keine geeignete Konvertierung moegdabei habe ich damit nur mal versucht den Wert in eine Variable zu speichern, vom Abspeichern in einer Datei ganz zu schweigen
.
-
Das ist ja auch Quark. char ist ein einzelnes Zeichen, CString eine nullterminierte Zeichenkette.
-
Ändere char auf CString und es geht.
Ein Grundlagenbuch wäre aber nicht schlecht bevor du mit GUI weitermachst.
-
Habe ich eigentlich, aber vielleicht kannst Du mir ja eines empfehlen, daß die Grundlagen besser erlärt.
Ich weiß, sollte wohl eigentlich überall drinstehen, aber es ist sicher überall anders und in manchen vielleicht besser erklärt.
-
Jetzt möchte ich gerne noch mal auf meine ursprüngliche Frage zurückkommen, hatte ich aber vermutlich etwas undeutlich formuliert
. Wie kann ich den Wert, der jetzt in der Variablen ist, am Besten in einem File abspeichern, so daß ich den Wert auch nach einem Neustart zur Verfügung habe? Kann ich hier jetzt "einfach" ein CreateFile anhängen, oder gibt es hier bessere Lösungen?Im voraus vielen Dank!
-
Die Variablen in einer Datei speichern kannst du mit CStdioFile:
CStdioFile file; file.Open("C:\\Test.txt", CFile::modeCreate | CFile::modeWrite); file.WriteString(Variable); file.Close();Die Datei öffnen kannst du dann mit CFile !
Gruß
:: NoName ::
-
Danke, funktioniert sehr gut
!Ich habe nur noch eine Frage, wie kann ich denn verhindern, daß der Inhalt des Textfeldes jedes mal überschrieben wird, wenn ein neuer Wert reingeschrieben wird? Angeblich geht das ja mit CFile::modeNoTruncate, aber das geht so wie ich es gemacht habe irgendwie nicht. Wo liegt denn hier der Fehler? Kann man nicht drei Werte miteinander kombinieren?
CStdioFile file; file.Open("C:\\Test.txt", CFile::modeCreate | CFile::modeNoTruncate |CFile::modeWrite); file.WriteString(m_sResults); file.Close();
-
Du must noch file.SeekToEnd(); einbauen :
CStdioFile file; file.Open("C:\\Test.txt", CFile::modeCreate | CFile::modeNoTruncate |CFile::modeWrite); file.SeekToEnd(); file.WriteString(m_sResults); file.Close();Gruß
:: NoName ::
-
Hi!
Warum speicherst du den Wert nicht einfach in die Registry?
Speichern:
AfxGetApp()->WriteProfileString("Optionen", "JaNein", m_sResults);Laden:
CString Antwort = AfxGetApp()->GetProfileString("Optionen", "JaNein", "<defaultwert");