fehler beim dateilesen

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

  • fehler beim dateilesen

    hallo,

    ich hab ein problem bei diesem code:

    GML-Quellcode

    1. file=file_text_open_read(argument0)
    2. do
    3. {
    4. global.x1=file_text_read_real(file)
    5. file_text_readln(file)
    6. global.y1=file_text_read_real(file)
    7. file_text_readln(file)
    8. global.x2=file_text_read_real(file)
    9. file_text_readln(file)
    10. global.y2=file_text_read_real(file)
    11. file_text_readln(file)
    12. draw_line(x+global.x1,y+global.y1,x+global.x2,y+global.y2)
    13. if file_text_read_string(file)="endimage" {break file_text_close(file)}
    14. } until file_text_eof(file)
    Alles anzeigen


    wenn ich das im draw-event ausführe, dann kommt ein fehler "Failed to read real"
    weiß jemand was ich falsch gemacht habe?


  • Das könnte daran liegen, dass in der Datei an dieser Stelle gar keine zahl steht, die er dann natürlich auch nicht lesen kann.
    btw: Was soll das break an dieser Stelle? Wenn es dazu sein soll, die Schleife vorzeitig zu beenden, muss auch das file_text_close davor, denn das danach wird nicht mehr ausgeführt. Ich würde das aber ganz hinter die Schleife setzen.
    “Computers are good at following instructions, but not at reading your mind.” (Donald Knuth)

    Ich schreibe mit Neo.
  • aber das file_text_close steht ja schon nach der schleife
    nein, tut es nicht
    und das es daran liegt dass da kein zahlenwert ist, hab ich schon mehrmals überprüft und das ist es nicht!
    da sagt der Gamemaker aber etwas anderes. Dein Fehler liegt wohl in der Datei.

    Und sowieso ist der ganze Code Quatsch, du verwendest globale Variablen obwohl das nicht nötig wäre und du liest eine Datei im Draw Event aus. Mehr muss ich wohl nicht sagen.
    int (*x(*x(int))[5])(int*);
    Confused? Yes, it's C!
  • des mit den globalen variablen hab ich nur gmacht, um was zu testen, das mach ich wieder weg
    dass es im draw-event ist, hab ich nur am anfang gemacht, um zu testen, ob das mit dem dateilesen überhaupt funktioniert!

    mit dem file_text_close hab ich mich geirrt, aber das stand vorher mal nach der schleife und so ging es auch nicht

    ach ja, die datei sieht so aus:

    GML-Quellcode

    1. 0
    2. 5
    3. 23
    4. 36
    5. 74
    6. 53
    7. 75
    8. 33
    9. endimage


    ähm, noch was:
    wenn bei
    if file_text_read_string(file)="endimage"
    eine zahl steht und kein text, zählt das dann als fehler? dann weiß ich nämlich, wo der fehler ist.


    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von lolliger_joj ()

  • ich habs jetz so gmacht:

    GML-Quellcode

    1. file=file_text_open_read(argument0)
    2. counter=0
    3. repeat(argument1)
    4. {
    5. scr_jump_to_line(file,"startimage")
    6. }
    7. file_text_readln(file)
    8. do
    9. {
    10. x1[counter]=real(file_text_read_string(file))
    11. file_text_readln(file)
    12. y1[counter]=real(file_text_read_string(file))
    13. file_text_readln(file)
    14. x2[counter]=real(file_text_read_string(file))
    15. file_text_readln(file)
    16. y2[counter]=real(file_text_read_string(file))
    17. file_text_readln(file)
    18. draw_line(x+x1[counter],y+y1[counter],x+x2[counter],y+y2[counter])
    19. counter+=1
    20. if file_text_read_string(file)="startimage" {break}
    21. } until file_text_eof(file)
    22. file_text_close(file)
    Alles anzeigen

    und da kommt bei x1[1] immer 0 raus!


  • Und bei x1[0]? Oder vielleicht bei y1[1], steht dann dort wieder was? Es kann sein, dass an dieser Stelle einfach nichts mehr steht, denn die real Funktion wandelt einen leeren String ("") in 0 um.
    “Computers are good at following instructions, but not at reading your mind.” (Donald Knuth)

    Ich schreibe mit Neo.
  • Das letzte "startimage" sollte glaub ich "endimage" heißen, oder?
    (Außerdem ist glaube ich "draw_line()" nicht ganz richtig (oder benutzt du Sufaces?).
    Wenn du das im Draw Event verwenden solltest ist das etwas kompliziert...)

    EDIT: Achja, ich glaube... es fehlt am ende der do-Schleife ein file_text_readln()
  • @copyboy nein, das heißt schons startimage, hab ich geändert
    und dass das im draw-event ist, ändere ich noch

    @Bottleneck bei y1[1] kommt die richtige zahl, und an der datei liegt es auch nicht:

    GML-Quellcode

    1. startimage
    2. 5
    3. 30
    4. 40
    5. 250
    6. 470
    7. 250
    8. 94
    9. 140
    10. startimage
    11. 20
    12. 45
    13. 20
    14. 40
    15. 2
    16. 46
    17. 14
    18. 8
    19. startimage
    20. 300
    21. 46
    22. 20
    23. 200
    24. 12
    25. 200
    26. 63
    27. 199
    Alles anzeigen


    edit: ach ja, das scr_jump_to_line(datei,string) sieht so aus:

    GML-Quellcode

    1. do
    2. {
    3. file_text_readln(argument0)
    4. } until file_text_read_string(argument0)=argument1


    edit2: das mit dem fehlenden file_text_readln() hab ich jetz erst gesehen! werd ich gleich mal ausprobieren!

    edit3: warum steht da "...wurde 1 mal editiert, zuletzt von lolligerjoj", wenn ich das doch schon 2 mal editiert hab(ohne dieses hier)?


    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von lolliger_joj ()