Zahlen in Strings verpacken?

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

  • Zahlen in Strings verpacken?

    Ich wollte mal ausprobieren, Zahlenreihen in Strings zu packen mit string+=chr(...) Meine Frage: Funktioniert das mit allen ganzen Zahlen (0-255)? Wenn ja, bin ich nur zu dumm zum parsen.... Es handelt sich um eine Reihe von Viererblöcken, etwa so:

    Quellcode

    1. 04 02 20 40
    2. 10 03 20 75
    3. 00 08 25 45

    Da will ich jetzt einzelne Blöcke nach belieben ersetzen können, bzw. neu hinzufügen, falls noch nicht vorhanden (die erste Ziffer dient als Id).
    Ist doch ziemlich simpel, oder? Vielleicht sollte ich das Programmieren einfach sein lassen.
    Spoiler anzeigen

    GML-Quellcode

    1. // changes the population
    2. // argument0: colony id
    3. // argument1: race
    4. // argumentr2: amount
    5. var p,r,popcode,part,plo,phi,find;
    6. popcode=ds_list_find_value(Cpst,argument0);
    7. find=false; i=1; while (i<string_length(popcode))
    8. {
    9. r=string_copy(popcode,i,1) // race
    10. if (ord(r) = argument1) // ist vorhanden
    11. {
    12. find=true;
    13. popcode=string_delete(popcode,i,4) // Block (4 Zeichen) entfernen
    14. p=ord(string_copy(popcode,i+1,1))+argument2 // verändern (Anzahl Kolonisten)
    15. plo=string_copy(popcode,i+2,1) // wert bleibt unverändert
    16. phi=string_copy(popcode,i+3,1) // wert bleibt unverändert
    17. part=r+chr(p)+plo+phi; // Block (4 Zeichen) neu bilden
    18. popcode+=part; // Block anhängen
    19. //string_insert(popcode,part,1+(i-1)*4) Block einfügen
    20. }
    21. i+=4;
    22. }
    23. if find=false // nicht vorhanden, neu erstellen
    24. {
    25. r=chr(argument1)// race
    26. p=chr(argument2)// amount
    27. plo=chr(00) // standardwert
    28. phi=chr(00) // standardwert
    29. part=r+p+plo+phi; // Block (4 Zeichen) neu bilden
    30. popcode+=part; // Block anhängen
    31. }
    32. ds_list_replace(Cpst,argument0,popcode);
    Alles anzeigen
  • es gibt doch die funktion string(zahl) die es in einen string umwandelt, chr is da wohl nicht so günstig (gibts da süberhauopt bei gm?, ich kenn das nur für ascii code)

    dann eben immer ne leerzeile dazwischen, dann siehts so aus wie du geschildert hast, aber was wilsld du dann nochmal machen?

    damit du möglichst parsen vermeiden kannsd speichere doch die zahlen in zahlen UND dem string, das packen einer zahl in einen string geht ja einfach mit

    der_String=string(zahl1)+' '+string(zahl2) usw
  • GML-Quellcode

    1. popcode=string_delete(popcode,i,4) // Block (4 Zeichen) entfernen
    2. p=ord(string_copy(popcode,i+1,1))+argument2 // verändern (Anzahl Kolonisten)
    3. plo=string_copy(popcode,i+2,1) // wert bleibt unverändert
    4. phi=string_copy(popcode,i+3,1) // wert bleibt unverändert
    5. part=r+chr(p)+plo+phi; // Block (4 Zeichen) neu bilden
    6. popcode+=part; // Block anhängen


    Sehe ich das hier richtig, das du erst die Zeichen entfernst und danach aus eben diesen Zeichen was zum berechnen auslesen willst?
    Ich will dir da nicht reinreden, aber eine meiner Meinung nach logische Reihenfolge wäre eher auslesen und berechnen, alten Wert löschen, neuen Wert speichern.

    Sinniger wäre es bei sowas im Übrigen mit zweidimensionalen Arrays oder Grids zu arbeiten.
    "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