Komischer Fehler beim Schreiben in Datei!



  • Jeah und schon wieder ein Problem ^^ Los, erfüllt mir meinen Weihnachtswunsch und löst mir alle meine Probleme 😛

    Nee Quatsch beiseite. Ich wollte ein Array von Eidts in eine Datei schreiben. Habe mir dazu die FAQ angeschaut und gegooglet und mich für diese Variante entschieden, weil mir das am verständlichsten vorkam:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-39351.html

    So bisher klappt das ja auch zum Teil und ich bekomme auch keinen Fehler, aber manchmal schreibt er mir falsche Zeichen rein, die eigentlich Zahlen seien sollten. Z.b. anstatt "1" schreibt er "" (das ist so ein umgedrehtes P, was ein Zeilenende darstellt), manchmal schreibt er mir auch einen Pfeil nach oben, anstatt einer 2. Aber manchmal ist es auch wieder richtig, was er in die Datei schreibt, deshalb verstehe ich nicht, was der Fehler sein könnte ...

    Das ist mein Code zum Schreiben in die Datei:

    savedlg->FileName = "test.txt";
    	savedlg->Execute();
    	// Datei öffnen
    	FILE* datei;
    	String str = savedlg->InitialDir + savedlg->FileName;
    	char* path = str.c_str();
    	datei = fopen(path, "w");
        // Zum Dateianfang setzen
    	fseek(datei, 0, SEEK_SET);
    
        // Speichern der Paletten in eine Datei
    	for (int i = 0; i < count; i++) {
    		String ed = edit_palLength[i]->Text;
    		fprintf(datei, ed.c_str());
    		fprintf(datei, "\n");
    	}
    
    	// Wieder Datei Schließen
    	fclose(datei);
    


  • Hallo

    Du hast dir da genau das älteste und fehleranfällige Verfahren ausgesucht das es gibt : altes C.

    Da ich nun weiß das du mit UnicodeString arbeitest, ist der Fehler klar : Das alte C beherscht kein Unicode, deshalb erzeugt dein Speichern komische Zeichen.

    Verwende lieber das Verfahren aus der FAQ (mit dem TStringList), dann hast du immer das korrekte Verfahren.

    bis bald
    akari



  • Na Super, und ich dachte, das ist sooo schön einfach, da nehm ich das ^^. Sag mal, wo steht denn das in der FAQ? Ich find das irgendwie nicht ...

    Außerdem hab ich grad gesehen, dass das TStringList für Sortieren nutze ist. Meinst du da das richtige? Ich wollte ja einfach nur Strings in eine Datei reinschreiben 😉



  • Schau einfach mal in der Hilfe nach TStringList. Dort sind mit Beispielen die Eigenschaften und Methoden erklärt.
    Was für Dich noch interessant sein könnte, wäre TIniFile.



  • ich dachte immer anstelle

    fprintf(datei, ed.c_str());
    fprintf(datei, "\n");

    sollte

    fprintf(datei,"%s\n",ed.c_str());

    genommen werden.

    So kann man sich täuschen.



  • DerAltenburger schrieb:

    So kann man sich täuschen.

    Das ist im Grunde schon richtig - in C. Wir benutzen aber C++ und wollen doch all die schönen Möglichkeiten wie Typsicherheit und Exceptions nicht ungenutzt lassen 😉



  • audacia schrieb:

    DerAltenburger schrieb:

    So kann man sich täuschen.

    Das ist im Grunde schon richtig - in C. Wir benutzen aber C++ und wollen doch all die schönen Möglichkeiten wie Typsicherheit und Exceptions nicht ungenutzt lassen 😉

    Ist ja auch besser so. Wollte nur den eigentlichen Fehler direkt zeigen.


Anmelden zum Antworten