In Datei schreiben



  • Schalt mal den Debugger an und schau nach, ob das Programm in den if()-Zweig springt. Wenn ja, fällt mir nur noch eine Lösung ein: Woran machst du fest, daß das Programm nichts schreibt?



  • ich kann die Datei öffnen, in der er theoretisch reinschreiben soll...und da steht immer nur der erste eintrag und alle weiteren fehlen



  • Hast du die Datei eöffnet, NACHDEM das Programm mit eintragen fertig war?

    ansonsten bleibt noch mein zweiter (ähm, erster) Tip von oben: verwende lieber fstream's oder CFile's anstelle der FILE* (letztere waren zwar für C gut genug, aber inzwischen gibt es sicherere Alternativen).



  • Gast0000 schrieb:

    ich kann die Datei öffnen, in der er theoretisch reinschreiben soll...und da steht immer nur der erste eintrag und alle weiteren fehlen

    Was erwartest Du? Dein Code schreibt genau einen String und ein Int, woher sollen da weitere "Einträge" kommen? 😉

    EDIT: Sorry, "a" übersehen.

    Nochmal EDIT: Da Du die Zahlen binär in die Datei schreibst würde ich nicht erwarten im Editor etwas sinnvolles zu sehen, will heissen evtl. steht in der Datei was ganz anderes als der Editor dir weissmacht.



  • 1.also, das codestück ist in einem Event drin..., dass heißt, je nach Situation, wird es aufgerufen....

    2. klar schau ich NACH programmende nach, was passiert ist 😉

    3. es ist mir auch klar, dass ich nicht alles im editor lesen kann(Zahlen) aber ich speicere ja Strings ab und die muss ich lesen können (ist beim ersten aufruf des Events ja der Fall 😉 )



  • Gast0000 schrieb:

    3. es ist mir auch klar, dass ich nicht alles im editor lesen kann(Zahlen) aber ich speicere ja Strings ab und die muss ich lesen können (ist beim ersten aufruf des Events ja der Fall 😉 )

    m_strName ist ein String, app->dlg->versuche ist ein Integer (und wird auch binär geschrieben). Eventuell solltest du (wenn du schon mit FILE's arbeiten mußt) fprintf() verwenden - das speichert Zahlen in Text-Format ab.



  • also, nochmal:

    es ist ganz bewußt gewollt, dass man die Interger-Zahlen in der Datei nur in Binär-schreibweise sieht.....das ist aber nicht das problem....
    sondern, warum schreibt er es pro programmstart nur ein einziges mal in die datei und alle weiteren einträge erscheinen nicht...und auch diese muss man sehen... 😉



  • wieso "muß"? Die Binärdarstellung deiner Highscore-Werte enthält möglicherweise ein Byte, das vom Editor als Textende gedeutet wird ('\0' ist ein guter Kandidat dafür und bei int-Werten unter 16 Mio. ziemlich sicher anzutreffen (bei 4-Byte-int's)).

    Wenn du wirklich alles sehen willst, was in der Datei ist, solltest du sie mal per Hand durchlaufen und ausgeben:

    ifstream fin("Highsore.dat");
    char ch;
    while(fin.get(ch))
      cout<<ch;
    


  • Ganz einfach:::::::::

    for(size_t i = 0; i < fin.size(); ++i)
    {
        cout << fin[i] << endl;
    }
    

    so einfach ist des 😉



  • Seit wann haben streams eine Mthode "size()"?


Anmelden zum Antworten