GM8 string zu real

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

    • GM8 string zu real

      Wer kennt es nicht?!:

      Quellcode

      1. ___________________________________________
      2. ERROR in
      3. action number 1
      4. of Create Event
      5. for object <undefined>:
      6. Error in function real().

      ...und nun wirklich... es gibt nichts Einfacheres als das formatieren eines Datatypes unter GM...
      ...sollte man meinen.

      Nun, ich wende mich nach 38 mir bekannten Versuchen den DT "d2" zu einer echten Zahl umzuwandeln, an euch... die Experten.
      Ich habe dieses mir unerklaerliche Problem noch NIE gehabt (und es gibt natuerlich immer ein ERSTES mal)...

      also, hier is der Code:

      GML-Quellcode

      1. ...
      2. var d1, d2, d3, d4,d5,d6;
      3. d4=0;
      4. d5=0;
      5. d6="";
      6. file_bin_seek(fn,bc);
      7. d1 = file_bin_read_byte(fn); //ORIGINAL REAL = 217
      8. d2 = string_char_at(string(d1),3); //STRING(REAL) ZU STRING = "7"
      9. repeat(real(d2)+1) //REAL(STRING) nicht machbar(!)... Es kopiert nur eine ZAHL (was es auch soll), und die will nicht aus dem String-Format raus. Ich weis das real() diesen einen CHAR (der unter der Ausnahme "Zahl und nicht Buchstabe") auch zur Zahl machen kann.
      10. {
      11. bc+=1;
      12. ...
      Alles anzeigen

      Ich habe in all meinen Projekten string-real und andersrum Routinen. Das is an der Tagesordnung, aber hier, kann ich formatieren, was ich will... es geht nicht.
      Bitte sagt mir, das ich hier nur'n leichtsinns-Fehler drinn hab. :P
      Danke schonmal

      Edit: Achja, "warum Expertenforum?". Ganz einfach, ich habe in GMC gesucht wie irre, und die haben immer'ne passende Erklaerung, ...Google tu ich hier nich, weil alles letztendlich zu GMC fuehrt. Und wenn GMC schon nichts derartiges drinne hat, isses wirklich ein echt heikles Problem. Ich hoffe, das rechtfertigt mein Experten-Gesuch

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

    • Reproduzieren kann ich deinen Fehler auf Anhieb jedenfalls erstmal nicht. Dass du dir sicher bist, in der Datei stets an der richtigen Postiton zu stehen, nehm ich auch mal an. Daher würd ich grundlegend erstmal empfehlen, einfach stur mit einem show_message-Befehl nach dem anderen zu überprüfen, ob dein umgewandelter Realwert auch wirklich intakt ankommt und der String korrekt ausgelesen wird.

      Wenn das auch nichts hilft, könntest du dir noch die folgende - auf Stringnutzung komplett verzichtende - Methode zunutze machen:

      GML-Quellcode

      1. d1=file_bin_read_byte(fc,bc); // =217
      2. d2=frac(d1/10); // = 7
      3. // etc.


      An die ersten beiden Stellen kommst du, indem du aus diesem Ansatz ne Schleife machst, die nacheinander durch 10, 100 und 1000 teilt. Dann hast du aber jedes Mal "Ausschussware" mit drin, die du erst wegrechnen lassen musst. Das könnte ein recht ekliger Hack werden, aber wenn's hilft... :whistling: