Problem mit Dateien
-
Hallo mir gibt mein Programm irgendwie ne Fehlermeldung aus, wenn ich einfach nur ne Datei einlesen will
CFile datei("schreiben.txt", CFile::modeRead ); datei.Read(str, sizeof(str)); datei.Close();
die Variable str ist deklariert.
er gibt mir dann folgenden Fehler aus:CFile::Read': Konvertierung des Parameters 1 von 'CString' in 'void *' nicht möglich
Kein benutzerdefinierter Konvertierungsoperator verfügbar, der diese Konvertierung durchführen kann, oder der Operator kann nicht aufgerufen werdenwas mach ich denn da Falsch???
EIN WEITERES PROBLEM:
wie kann ich denn 2 wörter untereinander in einer Datei schreiben??
ich habe es so versucht:
UpdateData(true); CFile datei("Woerterbuch.txt", CFile::modeCreate | CFile::modeWrite ); datei.Write(wort_o, sizeof(wort_o)); datei.Write(wort_u, sizeof(wort_u)); datei.Close(); wort_o = ""; wort_u = ""; UpdateData(false);
allerdings schreibt er mir hier alles total abgeschnitten in die erste Zeile.
Ich hab schon versucht manuel einfach ne \0 und \n anzuhängen
also sowort_o = wort_o + "\0\n";
hat aber nichts gebracht im Gegenteil.
vielleicht hat ja jemand ne Lösung für mein Problem
viele Grüße Phruaed
-
Versuch mal CStdioFile das hat Funktionen zum Lesen und Schreiben von String eingebaut.
CStdioFile file; file.Open("C:\\schreiben.txt",CFile::modeRead|CFile::modeCreate|CFile::modeNoTruncate); CString zeile,datei; datei = ""; while(file.ReadString(zeile)) { datei += zeile; } file.Close();
UpdateData(true); CStdioFile file; file.Open("C:\\wörterbuch.txt",CFile::modeWrite|CFile::modeCreate); file.WriteString(wort_o); file.WriteString(wort_u); file.Close(); wort_o = ""; wort_u = ""; UpdateData(false);
-
danke - so hat es geklappt...
wenn ich schon dabei bin
wie mach ich es denn, das er nicht alles wieder eu überschreibt.void hinzu::OnBnClickedButton1() { UpdateData(true); CStdioFile file; CString zeile; file.Open("woerterbuch.txt",CFile::modeWrite|CFile::modeCreate); while (file.ReadString(zeile)){ if (zeile == "\0"){ file.WriteString(wort_o+"\n"); file.WriteString(wort_u+"\n"); }} file.Close(); wort_o = ""; wort_u = ""; UpdateData(false); }
so gibt er mir beim debuggen zwar keine Fehlermeldung, doch wenn ichs anklicke bricht er mit einer Fehlermeldung ab
mfg
Phruaed
-
Das es abbricht liegt daran das du das File zum Schreiben geöffnet hast und lesend drauf zugreifts.
Um am Ende was Anzufügen musst du folgendes machen:
void hinzu::OnBnClickedButton1() { UpdateData(true); CStdioFile file; CString zeile; file.Open("woerterbuch.txt",CFile::modeWrite|CFile::modeCreate|CFile::modeNoTruncate); file.SeekToEnd(); file.WriteString(wort_o+"\n"); file.WriteString(wort_u+"\n"); file.Close(); wort_o = ""; wort_u = ""; UpdateData(false); }
-
das \n bei Writestring ist übrigens überflüssig. Writestring schreibt schon zeilenweise in die Datei, so hättest du eine leerzeile, bzw u.u. nichtmal das
irgendwo wird \r\n gebraucht anstatt \n ich weiss aber grad nicht mehr wo was gebraucht wird (try&error)
-
Ne, bei WriteString() musst du schon selbst '\n' hinzufügen.
Benutze ich momentan auch. Sonst wird der Text einfach angefügt.
-
also das mit dem hinzufügen das klappt jetzt soweit. DAANKE
@Taelan
Ich benötige das "\n" schon, denn wenn ich sie weglasse schriebt er das ganze nur in eine Zeile.
-
*hust* stimmt hab grad nochmal naschgeschaut
tjaja klugscheissen will gelernt sein
-
Taelan schrieb:
*hust* stimmt hab grad nochmal naschgeschaut
tjaja klugscheissen will gelernt sein
-
Da muss ich auch mal Smilies setzen:
:p