List Control -Datei auslesen und Schreiben
-
wie kann ich mir den Inhalt der variable strpfad anzeigen lassen??
der debugger geht in die Open rein aber mehr passiert nicht... in der
text datei ist aber was drin daher meine vermutung das er die datei
nicht findet....
-
gut habe den fehler nun gefunden!!!!!
der Fehler ist das strpfad zu dem debug ordner springt...
wie bekomme ich den pfad geändern im debugger modus sehe ich
zwar den pfad kann ihn aber nicht ändern....oder gibt es einen code mit dem ich ihm den pfad sofort vorgebe???????????
PS. es ist wichtig für mein programm das ich den pfad auf einen anderen
Ordner verlege.... aufgrund verschiedenster unterdialoge
-
// Holt Pfad und Name mit .exe strPfad = GetCommandLine();
sagt doch schon das der Pfad der gleiche ist wie der wo die exe liegt. Dann mach doch einfach einen Pfad den du haben willst fest auf strPfad oder benutz CFileDialog
strPfad = _T("C:\\deinPfad\\Text.txt"); //und lässt die zeilen // Holt Pfad und Name mit .exe strPfad = GetCommandLine(); // Dateierweiterung abschneiden int nPos = strPfad.ReverseFind( '\\'); strPfad = strPfad.Mid(1, nPos-1); // Ermittelten Pfad + Dateiname in strDateiName schreiben strDateiName = strPfad +"//text.txt"; //weg
-
ich habe den pfad nun angegeben aber wieder nichts wenn ich beim debuggen mit der maus auf den strPfad gehe kommt die Meldung schlechtes ptr
so sieht mein code jetzt aus
void CLElement_BerichtDlg::OnLaden() { CString strLesePuffer, strDateiName, strPfad = _T("C:\\Dokumente und Einstellungen\Workstation\Desktop\Rechenprogramm\\text.txt"); CStdioFile DateiLesen; int i=0; // Holt Pfad und Name mit .exe strPfad = GetCommandLine(); // Dateierweiterung abschneiden int nPos = strPfad.ReverseFind( '\\'); strPfad = strPfad.Mid(1, nPos-1); // Ermittelten Pfad + Dateiname in strDateiName schreiben strDateiName = strPfad +"//text.txt"; // Kompletten Inhalt des Listenelements löschen m_List1.DeleteAllItems(); // Datei auslesen if (DateiLesen.Open(strDateiName, CFile::modeRead)) { while(DateiLesen.ReadString(strLesePuffer)) { // Datei zeilenweise auslesen m_List1.InsertItem(i, strLesePuffer); DateiLesen.ReadString(strLesePuffer); m_List1.SetItemText(i, 1, strLesePuffer); DateiLesen.ReadString(strLesePuffer); m_List1.SetItemText(i, 2, strLesePuffer); DateiLesen.ReadString(strLesePuffer); m_List1.SetItemText(i, 3, strLesePuffer); i++; } }
-
ja ne is klar, du setzt den am Anfang in der variablen strPfad und dann wird der mit dem ganzen GetCommandLine() und so weiter überschrieben und bei open benutzt du dann plötzlich strDateiName, die dann mit strPfad +"//text.txt" überschrieben wird.
Schaust du hier, so sollte es gehen:
void CLElement_BerichtDlg::OnLaden() { CString strLesePuffer, strDateiName = _T("C:\\Dokumente und Einstellungen\Workstation\Desktop\Rechenprogramm\\text.txt"); CStdioFile DateiLesen; int i=0; // Kompletten Inhalt des Listenelements löschen m_List1.DeleteAllItems(); // Datei auslesen if (DateiLesen.Open(strDateiName, CFile::modeRead)) { while(DateiLesen.ReadString(strLesePuffer)) { // Datei zeilenweise auslesen m_List1.InsertItem(i, strLesePuffer); DateiLesen.ReadString(strLesePuffer); m_List1.SetItemText(i, 1, strLesePuffer); DateiLesen.ReadString(strLesePuffer); m_List1.SetItemText(i, 2, strLesePuffer); DateiLesen.ReadString(strLesePuffer); m_List1.SetItemText(i, 3, strLesePuffer); i++; } }
-
ich habe es so gemacht funktioniert aber immer noch nicht...
es kommt der hinweis schlechtes ptr was bedeutet das?
-
irgend etwas scheint mit dem pfad nicht zu stimmen...
der pfad ist aber richtig 100 %vielleicht eine idee wie man es anders machen kann....
-
änder den Pfad in
C:\\Dokumente und Einstellungen\\Workstation\\Desktop\\Rechenprogramm\\text.txt
also schau das du doppelte Backslash anstatt den einfachen im Pfad hast, dann muß das gehen. Ansonsten werden einfache backslash als Optionen interpretiert.
-
jimmy0385 schrieb:
es kommt der hinweis schlechtes ptr was bedeutet das?
Sag uns den genauen Text oder benutze einen Debugger.
Ansonsten ist Deine Umschalt-Taste kaputt. Kauf Dir eine neue Tastatur.
-
vielen dank hat geklappt....
und zum Kommentar von Martin Richter der Debugger sagt genau das schlechtes ptr
nicht mehr nicht weniger steht auch weiter unten....und der genaue code ist
auch gepostet mehr habe ich auch nicht im programm bei mir....
und meine Tastatur läuft Prima.....für solche attacken habe ich nichts
übrig habe hier keinen schlecht behandelt und möchte auch nicht so
behandelt werden!!!!!!!!!!!
Nur schade das sich solche Leute Moderatoren nennen dürfen!!!!!!!nochmals danke an CTecS für die Hilfe...