file_text_read_real fail

  • GM 8

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

  • file_text_read_real fail

    Moinsen ihr lieben Leutz,
    Folgendes:
    Ich versuche mithilfe einer Datei die Positionen von mehreren Instanzen zu speichern und wieder laden. Speichern funktioniert tadellos, die Datei sieht dann folgendermaßen aus:

    Quellcode

    1. new line
    2. 402
    3. 233
    4. 0
    5. 694
    6. 271
    7. 0
    8. 954
    9. 302
    10. 0
    11. 1177
    12. 359
    13. 0
    14. 1312
    15. 436
    16. 0
    17. 1336
    18. 519
    19. 1
    20. 1286
    21. 649
    22. 1
    23. 979
    24. 836
    25. 1
    26. 668
    27. 745
    28. 1
    29. 562
    30. 628
    31. 1
    32. 682
    33. 566
    34. 1
    35. 971
    36. 556
    37. 1
    38. 1099
    39. 529
    40. 1
    41. 1126
    42. 435
    43. 1
    44. 1126
    45. 422
    46. 1
    47. 1046
    48. 420
    49. 1
    50. 815
    51. 423
    52. 1
    53. 481
    54. 495
    55. 1
    56. 450
    57. 602
    58. 1
    59. 484
    60. 695
    61. 1
    62. 618
    63. 774
    64. 1
    65. 990
    66. 913
    67. 1
    68. 1254
    69. 877
    70. 1
    71. 1419
    72. 708
    73. 1
    74. 1421
    75. 492
    76. 1
    77. 984
    78. 136
    79. 1
    80. 629
    81. 92
    82. 1
    83. 264
    84. 238
    85. 1
    86. 426
    87. 369
    88. 1
    89. 954
    90. 331
    91. 1
    92. 1147
    93. 390
    94. 1
    95. 1282
    96. 600
    97. 1
    98. 962
    99. 755
    100. 1
    101. 639
    102. 645
    103. 1
    104. 833
    105. 606
    106. 1
    107. 1113
    108. 598
    109. 1
    110. 1173
    111. 522
    112. 1
    113. 1129
    114. 399
    115. 1
    116. 700
    117. 379
    118. 1
    119. 361
    120. 462
    121. 1
    122. 381
    123. 726
    124. 1
    125. 623
    126. 877
    127. 1
    128. 1056
    129. 976
    130. 1
    131. 1353
    132. 936
    133. 1
    134. 1550
    135. 644
    136. 1
    137. 1488
    138. 319
    139. 1
    140. 988
    141. 43
    142. 1
    143. 570
    144. 27
    145. 1
    146. 227
    147. 193
    148. 1
    149. 204
    150. 359
    151. 2
    152. 317
    153. 422
    154. 2
    155. end of lvl
    Alles anzeigen


    Wenn ich diese Werte wieder versuche zu laden mit:

    GML-Quellcode

    1. fname=get_open_filename("*.lvl","");
    2. lvl=file_text_open_read(fname);
    3. line_id=-1
    4. str=file_text_read_string(lvl)
    5. file_text_readln(lvl)
    6. counter=0
    7. //do { //zu Testzwecken habe ich die Schleife auskommentiert
    8. line_id+=1
    9. point_id=0
    10. do {
    11. counter+=1
    12. create_x=file_text_read_real(lvl);
    13. file_text_readln(lvl)
    14. create_y=file_text_read_real(lvl);
    15. file_text_readln(lvl)
    16. create_depth=file_text_read_real(lvl);
    17. file_text_readln(lvl);
    18. hold_id=instance_create(create_x,create_y,obj_point);
    19. point_x[line_id,point_id]=create_x;
    20. point_y[line_id,point_id]=create_y;
    21. point_depth[line_id,point_id]=create_depth;
    22. hold_id.line_id=line_id;
    23. hold_id.point_id=point_id;
    24. hold_id.pointdepth=point_depth[line_id,point_id];
    25. point_id+=1
    26. str=file_text_read_string(lvl);
    27. } until (str="new line"||counter=4) //zu Testzwecken lasse ich nur 4 Punkte lesen.
    28. counter+=1
    29. //str=file_text_read_string(lvl);
    30. //} until str="end of lvl"||counter>200
    31. file_text_close(lvl);
    Alles anzeigen

    failt er. Und zwar wird der erste Punkt korrekt erstellt. Er ist genau an der richtigen Position. Dagegen alle Punkte die danach kommen, haben zwar die korrekte Y-Koordinate, jedoch der X-Wert ist immer gleich 0. Anscheinend kommt bei file_text_read_real immer 0 heraus. (Ich habe das auch schon getestet, indem ich im Debug mode die Cariable create_x abgefragt habe. Wenn ich nach der Variable str abfrage kommt auch der korrekte Wert als String heraus. Wenn ich aber

    GML-Quellcode

    1. create_x=real(string_digits(file_text_read_string(lvl)))
    statt file create_x=file_text_read_real(lvl) verwende, kommt ebenfalls wieder 0 heraus.

    Im Code für die Speicherung der Koordinaten verwende ich übrigens nur file_text_write_real()

    So, meine Freunde der Nacht, wer weiß was?


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

  • Sind die Leerzeichen vor den Zahlen in der Datei "lvl" auch in der tatsächlichen Datei enthalten?
    Das würde den Fehler erklären, fraglich ist dann aber warum eine x koordinate richtig ausgegeben wird.
    Ansonsten enthalten derzeit die Arrays "point_x" und "point_y" nur den punkt [0,0] wenn du diese Verarbeitest, könnte das die falsche koordinate ausgeben, jedoch nur wenn du automatische Variablen-deklaration aktivierst hast.
    Battle Command - WeltraumEchtzeitStrategie | Meine GM Spiele auf Box.net
    GCM/FA/O d-(--)@>---xpu s-:- !a C++$@ U- P L+ E W++ N o K-- w++ O? M V PS PE-- Y PGP t 5 X R+++ tv+ b DI D G e+ h? r-- x
  • Sind die Leerzeichen vor den Zahlen in der Datei "lvl" auch in der tatsächlichen Datei enthalten?
    Das würde den Fehler erklären, fraglich ist dann aber warum eine x koordinate richtig ausgegeben wird.

    Wie gesagt, alle Zahlwerte der Datei wurden per file_text_write_real geschrieben. Normalerweise müsste man dann per file_text_read_real den Wert doch perfekt auslesen können. (Aber die Werte haben im Editor wirklich ein Leerzeichen, aber das ist bei den Y-Koordinaten auch und die werden richtig ausgelesen.)

    Ansonsten enthalten derzeit die Arrays "point_x" und "point_y" nur den punkt [0,0] wenn du diese Verarbeitest, könnte das die falsche koordinate ausgeben, jedoch nur wenn du automatische Variablen-deklaration aktivierst hast.

    Nein, es wird ja immer in point_x[line_id,point_id] reingeschrieben. Und point_id wird mit jedem Durchlauf um 1 größer.

    GML-Quellcode

    1. point_id+=1

    Außerdem haben diese Arrays nichts mit den tatsächlichen Koordinaten des Punktes zu tun, der Punkt wird lediglich an create_x, create_y erstellt.


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

  • (korrigiert mich, wenn ich müll erzähle)

    Sorry, aber du erzählst Müll ;)

    Das Problem hat mit den Arrays wie gesagt absolut nichts zu tun. Alles was mit den Arrays zu schaffen hat, funktioniert tadellos. Es sind nur die X-Koordinaten, die nicht richtig ausgelesen werden. (Und es muss am auslesen liegen, create_x hat ja laut Debug-Modus schon den Wert 0.

    EDIT:
    OK, dank der Hilfe eines Freundes hab ich nun endlich den Fehler gefunden:
    Da am Ende der Schleife die Zeile per str=file_text_read_string() ausgelesen wird, ist beim nächsten mal lesen die Position am Ende der Zeile. Da ist es natürlich klar, dass es 0 ergibt. Trotzdem Danke an alle Antworten (obwohl sie komplett nutzlos waren ;) )


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