Schreib- und Leseproblem

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Schreib- und Leseproblem

    Hallo! Ich habe mal wieder ein problem beim schreiben und lesen.

    Ich habe im press S event (speichern) folgenden code:

    GML-Quellcode

    1. zaehler = 0;
    2. listengroese = ds_list_size(replayid);
    3. dataid = file_text_open_write('groesse'+'test');
    4. file_text_write_real(dataid,listengroese);
    5. file_text_close(dataid);
    6. if (file_exists('test') == true)
    7. {
    8. file_delete('test');
    9. }
    10. dataid = file_text_open_append('test');
    11. while (zaehler <= listengroese)
    12. {
    13. file_text_write_real(dataid,ds_list_find_value(replayid,zaehler));
    14. zaehler += 1;
    15. }
    16. file_text_close(dataid);
    Alles anzeigen


    und im press L event (laden) folgenden code:

    GML-Quellcode

    1. dataid = file_text_open_read('groesse'+'test');
    2. laenge = file_text_read_real(dataid);
    3. file_text_close(dataid);
    4. replayid = ds_list_create();
    5. dataid = file_text_open_read('test');
    6. zahl = 0;
    7. while (zahl <= laenge)
    8. {
    9. ds_list_add(replayid,file_text_read_real(dataid));
    10. zahl += 1;
    11. }
    12. file_text_close(dataid);
    Alles anzeigen


    Dann kommt, wenn ich im Spiel erst auf S und dann L drücke folgende Fehlermeldung:

    ___________________________________________
    ERROR in
    action number 1
    of Keyboard Event for L-key Key
    for object object0:

    Error reading real.


    Was mache ich falsch?
    Dies ist eine kreative Signatur: Stell dir genau JETZT etwas lustigs vor, das hier stehen könnte...

    Meine Homepage
  • Also, zu allererst schreibst und liest du immer eine Zahl zuviel. Die Datenstruktur hat z.B. eine Länge von 3. Die Einträge beginnen bei 0 und du liest bis Zahl=Länge ist, d.h. du liest 0,1,2 und 3. Also 4 Einträge. Der letzte wird dadurch immer 0.

    Game Maker speichert die Zahlen mit dem in Windows eingestellten Zahlentrenner, liest sie aber nur mit Punkt. Das führt unter deutschem Windows dazu, dass mit Komma gespeichert wird, er es aber deswegen nicht mehr lesen kann.
    Mark hatte den Fehler mal behoben, allerdings nur für Ini Dateien, nicht für normale Dateien (k.a. wo der da seinen Kopf hat, aber der hätte doch ruhig mal beides beheben können).
    Deswegen musst du die Zahlen beim Speichern in Strings umwandeln und beim Lesen wieder in Zahlen.

    Dein Quelltext müsste also dann so aussehen:

    GML-Quellcode

    1. zaehler = 0;
    2. listengroese = ds_list_size(replayid);
    3. dataid = file_text_open_write('groesse'+'test');
    4. file_text_write_string(dataid,string(listengroese));
    5. file_text_close(dataid);
    6. if (file_exists('test') == true)
    7. {
    8. file_delete('test');
    9. }
    10. dataid = file_text_open_append('test');
    11. while (zaehler < listengroese)
    12. {
    13. file_text_write_string(dataid,string(ds_list_find_value(replayid,zaehler)));
    14. file_text_writeln(dataid);
    15. zaehler += 1;
    16. }
    17. file_text_close(dataid);
    Alles anzeigen


    GML-Quellcode

    1. dataid = file_text_open_read('groesse'+'test');
    2. laenge = real(file_text_read_string(dataid));
    3. file_text_close(dataid);
    4. replayid = ds_list_create();
    5. dataid = file_text_open_read('test');
    6. zahl = 0;
    7. while (zahl < laenge)
    8. {
    9. ds_list_add(replayid,real(file_text_read_string(dataid)));
    10. file_text_readln(dataid)
    11. zahl += 1;
    12. }
    13. file_text_close(dataid);
    Alles anzeigen
    "Die Erde ist ein Irrenhaus. Dabei könnte das bis heute erreichte Wissen der Menschheit aus ihr ein Paradies machen. Dafür müsste die weltweite Gesellschaft allerdings zur Vernunft kommen."
    - Joseph Weizenbaum
  • RE: Schreib- und Leseproblem

    Stimmt! Jetzt funktionierts. Danke!
    Dies ist eine kreative Signatur: Stell dir genau JETZT etwas lustigs vor, das hier stehen könnte...

    Meine Homepage
  • Benutzer online 1

    1 Besucher