Wie kann ich eine Textdatei bzw. Inhalt der Textdatei als CString Variable speichern ?
-
Hallo,
danke, doch es hat leider nicht geklappt !
Ich habe das jetzt so gemacht :CString m_pass; CFile file; if (file.Open("C:\\pass.txt", CFile::modeRead)) { file.Read(m_pass.GetBuffer(file.GetLength()), file.GetLength()); file.Close(); } if(m_pass != m_passeingabe) { AfxMessageBox("Falsch"); } else { AfxMessageBox("richtig"); }Doch irgendetwas stimmt damit nicht ! Er gibt mir immer die Antowrt falsch aus !
-
setzt mal n breackpoint und schau ob dasselbe drin steht
vielleicht gross/kleinschreibung?if(m_pass.CompareNoCase(m_passeingabe)) MessageBox("Falsch")
-
Servus,
MSDN schrieb:
Remarks
The returned LPWSTR is not const and therefore allows direct modification of CHString contents.If you use the pointer returned by GetBuffer to change the string contents, you must call ReleaseBuffer before using any other CHString methods.
Das sagt MSDN zu GetBuffer(). Ich glaube du solltest aufjedenfall noch ein ReleaseBuffer() machen damit du danach die Methoden etc. von CString wieder nutzten kannst:
m_pass.ReleaseBuffer(file.GetLength());Ich würde dir auch raten CStdioFile zu nutzen. Es ist einfach konfortabeler:
CString strInput; CStdioFile stdFile("C:\\pass.txt", CStdioFile::modeRead); while (stdFile.GetPosition() < stdFile.GetLength()-1) { stdFile.ReadString(strInput); } stdFile.Close(); if(strInput != m_passeingabe) { AfxMessageBox("Falsch"); } else { AfxMessageBox("richtig"); }Schittebön

*winke*
HellsgoreEDIT: Stimmt Groß- und Kleinschreibung kann es auch sein.
-
Hallo,
danke für die Mühe,doch leider hat alles nichts geholfen !
Dass funtzt einfach nicht ! egal wie mann es schreibt !Oder gibt es noch eine andere Methode eine Textdatei als eine Variable zu deklarieren ?
-
CStringList m_lines; CString sLine, temp; CStdioFile txtFile(lpszPathName, CFile::modeRead | CFile::typeText); while(txtFile.ReadString(sLine) !=NULL) m_lines.AddTail(sLine); //oder ohne CStringList temp=temp+sLine;
-
Das hat leider auch nicht gefuntzt ...!!!?
-
was hat denn nicht funktioniert? Vielleicht kannste ja mal nen bisschen genauer werden? Habe bisher öfter so ein Textfile ausgelesen und nie Probleme gehabt...
-
Höchstwahrscheinlich stimmt etwas mit dem Pfad bzw. der Datei selber nicht...
-
Der Code ansich funtzt. Nur wenn ich vergleichen möchte, ob das eingegebene Passwort stimmt oder nicht, gibt er mir immer richitig aus ...!!?
Hier der Code:
CStringList m_lines;
CString sLine, temp;CStdioFile txtFile("C:\\pass.txt", CFile::modeRead | CFile::typeText);
while(txtFile.ReadString(sLine) !=NULL) m_lines.AddTail(sLine);
if(m_passeingabe == sLine)
{
AfxMessageBox("Richtig");
}
else
{
AfxMessageBox("Falsch");
}Oder muss ich das anders schreiben ?
Danke
-
Nein.
Das Passwort steht in dem Array CStringList!!!
Vergiss auch nicht UpdateData aufzurufen.Grüße Rapha
-
Versuchs besser mit filestreams!
CString kann mit LPSTRING gecastet werden
-
CString strLine, strComplete; CStdioFile txtFile("C:\\pass.txt", CFile::modeRead | CFile::typeText); /* hier noch Fehlerabfrage: ist die Datei wirklich geöffnet */ while(txtFile.ReadString(strLine) !=NULL) strComplete += strLine if(m_passeingabe == strComplete) { AfxMessageBox("Richtig"); } else { AfxMessageBox("Falsch"); }Wobei ReadString einen Bug hat, also aufpassen
Grüße Rapha
-
Hallo,
Rapha schrieb:
Wobei ReadString einen Bug hat
was für einen Bug
?Das sollte ich wissen (wenn nicht, dann will ich es wissen
)MfG
-
CompareNoCase gibt 0 zurück, wenn sie gleich sind!!!
-
Danke Leute, hat funktioniert !!!
-
Bug von ReadString:
ReadString hat allerdings einen Bug. Dazu müssen folgende Bedingungen alle erfüllt sein:
1. die letzte Zeile enthält kein '\n' Zeichen
2. die Länge der letzten Zeile ist ein Vielfaches von 128
In diesem Fall gibt ReadString fälschlicherweise FALSE zurück. Dieser Bug kann allerdings leicht umgangen werden, wenn zusätzlich geprüft wird, ob die gelesene Zeile leer ist oder nicht, also z. B.:CString sZeile; CStdioFile fDatei; ... while( fDatei.ReadString(sZeile) || (! sZeile.IsEmpty())) { ... }http://www.mpdvc.de/html.htm#Q71
Grüße Rapha