String max. Länge im enum in einer Schleife "herausfinden".

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hey,


    Ich habe eine for-schleife die ein enum durchläuft nur mein Problem ist das wenn im enum ein string ist wird der string durchlaufen und der string wird beim ersten mal komplett abgespeichert und beim nächsten Durchlauf wird ein Buchstabe abgezogen und das geht immer so weiter. Deswegen wollte ich fragen ob mir einer helfen kann wie man die maximale string länge in der Schleife



    Code
    For(New i=0; _:i < ccEnum;i++)
    {
     //hier der Speicher code
    }

    Danke im voraus.


    *Ich schreibe dies mit dem Handy da ich nivht zuhause bin.*

  • Ja habe ich.


    Code
    enum ccEnum
    {
    	Name[32],
            Beschreibung[128],
            Verdienst,
    };
    
    
    new Job[12][ccEnum]; //Falls es eine Rolle spielt

    Was kam da den als Ergebnis raus?
    Also wie speicherst Du den in der schleife, direkt in die Datenbank oder nur in einer Variable? - Machst Du die Variable auch vorher leer?

    Chief Technology Officer (CTO)


    Interesse an folgenden Domains?

    fivemp.de - planet-zoo.de

    Jetzt anschreiben :)

  • Wenn du so eine Schleife durch das enum machst, dann fällt mit jedem Index der nächste Buchstabe von vorne eines Strings weg. Das liegt daran, dass ein String lediglich eine Aneinanderreihung von Buchstaben ist.


    Hier hast du ein sehr gutes Tutorial dazu: http://forum.sa-mp.com/showthread.php?t=318307


    Dort wird das auch beschrieben:


    C
    enum
    	DATA
    {
    	INT, //This will get "0" (Remember, starting value)
    	STRING[10], //(This will get 1 but since it's a string, just one block isn't sufficient!)
            //^ So, the correct numbers will be: 1,2,3,4,5,6,7,8,9,10! Because length of the string is 10!
    	INT2, //This will get the number 11, it comes after STRING[10] which had the last number of 10..
    	STRING2[10] //And this will start with 12 and end to 22 because it requires 10 spaces.
    };

    Und dieses Bild zur Veranschaulichung:

    (http://desmond.imageshack.us/H…ename=enum.png&res=medium)

  • Relativ einfache Lösung:
    Da sich Deine Größe ja nicht verändern sollten, kannst Du Deine Schleife Konstant machen.

    Chief Technology Officer (CTO)


    Interesse an folgenden Domains?

    fivemp.de - planet-zoo.de

    Jetzt anschreiben :)

  • Nein, das geht nicht. Die Größe eines Arrays aus einem enum kann nicht ausgelesen werden, außer man deklariert es eben konstant (sowas wie MAX_PLAYERS, oder MEIN_TEXT_LAENGE, ...), dann ließt man aber nur die Konstante aus, und nicht das Element aus dem enum.
    Das würde dir hier aber auch nicht viel bringen.