Für eine Schulaufgabe muss ich ein Spiel beenden. Ich habe es fast fertig, aber die letzte Aufgabe macht mir eine harte Zeit.C++, Lesen von Text aus TXT-Datei und Anhängen an Textfeld oder Anhängen von Text aus Bearbeitungsfeld zu Textfeld
Im Moment habe ich herausgefunden, wie man den Text (Name) aus dem Bearbeitungsfeld erhält, wenn der Benutzer eine hohe Punktzahl hat.
Das mit getan wird:
GetDlgItemText(hDlg, IDC_EDIT1, &Tsaved, 20);//Get text from edit box
bin ich auch mit diesem, es zu einem Meldungsfeld anhängen können:
:MessageBox(hDlg, &Tsaved, buff, IDOK == nId);//write text from edit box to message box
Code Mein Denkprozess und Verfahren dies
Im Moment schreibe ich meinen erhaltenen Text in eine Textdatei, weil ich den erhaltenen Text nicht direkt an die Textbox anhängen konnte. Damit kann ich etwas in die Datei schreiben.
Ich weiß, dass Tsaved
ist ein TCHAR
und nur 2 Bytes, aber um es in eine Datei schreiben, die eine Zeichenfolge verwendet, muss ich es in Zeichenfolge konvertieren/konvertieren. Damit schreibe ich nur den ersten Brief, um Text in die Datei zu bekommen.
Beispiel: Editbox-Eingang: "Don"
Meldungsfeld Ausgabe: "Don"
Textdatei ausgegeben: "D"
Dies ist, wie ich das Casting gemacht/Umwandlung:
TCHAR Ts = Tsaved;
stringstream ss;
string s;
char c = Ts;
ss << c;
ss >> s;
Und das ist, wie ich es in die Datei schreiben:
std::ofstream inputfile("filename.txt");
if (!inputfile)
{
std::cerr << "Error writing to ..." << std::endl;
}
else
{
for (int x = 0; x < sizeof(Tsaved)-1; x++)
{
int a = sizeof(Ts);
//inputfile << sizeof(Tsaved)/sizeof(TCHAR) << endl;
inputfile << s << endl;
//inputfile << a << endl;
}
}
Wie bin ich Kann ich den gesamten Inhalt der erhaltenen Editbox in die Textdatei schreiben?
Danke dir sehr, viel werde ich es in einer Sekunde versuchen. ich benutze visual studio 2015 ... noch eine frage, du sagtest es hat nur platz für einen charakter, und das ist korrekt, weil ich das bemerkt habe. aber wie ist es möglich, dass das Meldungsfeld in der Lage ist, den vollständig erhaltenen Text zu erhalten? –
@ D-Antonio Da Sie gesagt haben, Sie haben Platz für 20 Zeichen beim Aufruf von 'GetDlgItemText()', hat es alle 20 Zeichen für Sie kopiert. Die zusätzlichen 19 Zeichen wurden in das geschrieben, was sich im Speicher nach dem 1 Zeichen befand, für das Sie Platz hatten, so dass der Speicher beschädigt wurde. Grundsätzlich hattest du Glück, dass nichts Wichtiges überschrieben wurde. – Andy