CFileDialog Textdatei öffnen und auslesen
-
Der Dateiname wird mit dem Befehl GetPathName auch ausgelesen. Die datei hat er. Ich weis auch nicht, ob er die Datei nicht öffnet oder nicht liest.
mfG
-
Hi!
Prüfen, ob die Datei geöffnet werden konnte, kannst du so:CFile datei; if(datei.Open(m_pathname, CFile::modeRead) { datei.Read(str, sizeof(str)); datei.Close(); m_strOutput = str; } UpdateData(FALSE);
-
ohhh ja, sorry hatte mich verschaut...
Sehe gerade das Laie mir meine Antwort vorweg genommen hat
-
Prima funktioniert jetzt super. Ich hatte ein Problem mit der Ausgabe Variable.
mfG
-
Wie kann ich jetzt aber in eine Textdatei speichern. Ich habe nur Rechtecke in der Textdatei.
CFileDialog m_ldFile(FALSE,"txt","*.txt",OFN_ALLOWMULTISELECT|OFN_HIDEREADONLY,"Text-Dateien *.txt",this);
if (m_ldFile.DoModal() == IDOK)
{
TCHAR str[1000];
CString m_sFilePath ="";
m_sFilePath = m_ldFile.GetPathName();_tcscpy(str,m_strOutput);
CFile datei(m_sFilePath, CFile::modeCreate | CFile::modeWrite);
datei.Write(str, sizeof(str));
datei.Close();
}mfG Dominik
-
War Quatch
[ Dieser Beitrag wurde am 14.01.2003 um 13:15 Uhr von Laie editiert. ]
-
Die Variable m_strOutput ist eine Membervariable. Ich vermute mal das sie nach dem String den Rest mit Leerzeichen auffüllt. Wie bekomme ich es hin das Sie nach dem String keine Leerzeichen mehr auffüllt.
-
m_strOutput.TrimRight();
m_strOutput.TrimLeft();
-
häng doch mal an die variable ein "\n\r" dran...
sollte dem abhilfe verschaffen!
-
TCHAR str[2000];
_tcscpy(str,m_strOutput);Daran lag es nicht. Das Problem scheint er mit der Variable str zu haben da diese ja 2000 Zeichen haben soll. kennt einer noch eine Möglichkeit.
mfG
-
CStdioFile datei(m_pathname,[Open-Parameter]); datei.WriteString(m_strOutput + "\n");
So schonmal probiert??
-
Ne bringt mir nix. Mein Problem ist die feste Größe von TChAR str[2000]. Die müsste ich irgendwie Variable bekommen.
-
Also damit kriegst du garantiert keine leere Zeichen in dei Array:
char str[2000];
strcpy(str,m_strOutput);Du kannst es in Debugmodus auch prüfen
-
Das funktioniert auch nicht, Da die Größe der Variablen str auf 2000 steht. Den rest füllt er immer noch auf. Anbei nochmal den ganzen Code.
CFileDialog m_ldFile(FALSE,"txt","*.txt",OFN_ALLOWMULTISELECT|OFN_HIDEREADONLY,"Text-Dateien *.txt",this); m_strOutput.TrimLeft(); m_strOutput.TrimRight(); CString m_sFilePath =""; char str[2000]; strcpy(str,m_strOutput); if (m_ldFile.DoModal() == IDOK) { m_sFilePath = m_ldFile.GetPathName(); CFile datei(m_sFilePath, CFile::modeCreate | CFile::modeWrite); datei.Write(str, sizeof(str)); datei.Close(); MessageBox("Die Startdatei wurde erfolgreich angelegt!", "Datei gespeichert"); }
-
Versuch mal so:
..... if (m_ldFile.DoModal() == IDOK) { m_sFilePath = m_ldFile.GetPathName(); CFile datei(m_sFilePath, CFile::modeCreate | CFile::modeWrite); datei.Write(str, m_strOutput.GetLength()); datei.Close(); } .....
[ Dieser Beitrag wurde am 14.01.2003 um 15:44 Uhr von Laie editiert. ]
-
Hi,
warum das Theater mit dem Umwandeln?
Schreibe
datei.Write(m_strOutput.GetBuffer(), sizeof(m_strOutput));
doch gleich deinen CString rein.
Grüße, Volle.
-
Stimmt nicht ganz:
sizeof(m_strOutput) gibt immer 4.Also:
datei.Write(m_strOutput.GetBuffer(m_strOutput.GetLength()), m_strOutput.GetLength());
und nicht vergessen:
m_strOutput.ReleaseBuffer();
-
Danke Super. Das ist genau das was ich gesucht habe. Kann ich das gleiche auch beim Lesen machen.
CFileDialog m_ldFile(TRUE,"txt","*.txt",OFN_ALLOWMULTISELECT|OFN_HIDEREADONLY,"Text-Dateien *.txt",this); char str[2000] ="\0"; CString m_pathname; if (m_ldFile.DoModal() == IDOK) { m_sFilePath = m_ldFile.GetPathName(); CFile datei(m_sFilePath, CFile::modeRead); datei.Read(str, sizeof(str)); datei.Close(); m_strOutputDatei = str; UpdateData(FALSE);
-
Hi,
ja, klar. Das war ein Schreibfehler. Tut mir Leid.
Gruß, Volle.
-
Ich habe jetzt einiges ausprobiert. Ich komme nicht darauf wie das gehen soll. Irgendwie stehe ich auf dem Schlauch.