Problem mit Error 033: array must be indexed (variable "...")

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
  • Guten Tag,


    ich bekomme in letzter Zeit die ganze Zeit den folgenden Fehler:


    error 033: array must be indexed (variable "string2")


    Die Dazugehörige Zeile:


    if(string2 >= 1)


    Was ist falsch?


    EDIT: Code geändert // aktualisiert

  • Hi


    Du kannst einen String nicht mit einer Zahl vergleichen^^
    Du willst wahrscheinlich abfragen wie lang der String ist, oder ob was drin steht. Dafür kannst du die Funktion "strlen(string)" verwenden :) Das returnt die Länge des Strings


    "if(strlen(string) >= 1)"


    MFG, Robdeflop®

  • Um ehrlich zu sein wollte ich das nicht. Ich habe das Adminlevel in der .ini Datei des jeweiligen Spielers gespeichert. Wenn dieses 1 oder höher ist darf er diesen Command ausführen. Wenn nicht, dann eben nicht. Wie kann ich das sonst scripten?


    Mein bisheriger Command:



    dcmd_getvehicle(playerid, params[])
    {
    new name[MAX_PLAYER_NAME];
    new string[255];
    new string2[255];
    GetPlayerName(playerid, name, sizeof(name));
    format(string, sizeof(string), "/Users/%s.ini", name);
    format(string2, sizeof(string2), "%s", dini_Get(string, "Adminlevel"));
    if(string2 >= 1)
    {
    // dann passiert das und das...
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, "Sie besitzen nicht die benötigten Adminrechte.");
    return 1;
    }
    }

  • Wie ich mir denken kann, sind bei dir die Adminlevel als Zahl dargestellt.
    Daher muss es statt:
    format(string2, sizeof(string2), "%s", dini_Get(string, "Adminlevel"));
    format(string2, sizeof(string2), "%i", dini_Int(string, "Adminlevel"));
    heißen.
    Das %s steht für eine Zeichenfolge und das %i für eine Zahl.
    Ich hoffe das ich richtig liege.


    mfg.
    Opa

  • Okey, so funktioniert es.


    Und wie mache ich das dann bei meinem Registersystem?



    new name[MAX_PLAYER_NAME];
    new string[255];
    new string2[255];
    new string3[255];
    GetPlayerName(playerid, name, sizeof(name));
    format(string, sizeof(string), "/Users/%s.ini", name);
    format(string2, sizeof(string2), "%s", dini_Get(string, "Passwort"));
    format(string3, sizeof(string3), "%s", inputtext);
    if(string3 != string2) // <----
    {
    SendClientMessage(playerid, COLOR_YELLOW, "Das eingegebene Passwort stimmt nicht überein. Versuche es erneut und achte auf Groß- und Kleinschreibung.");
    }
    else
    {
    SendClientMessage(playerid, COLOR_YELLOW, "Du hast dich erfolgreich eingeloggt, Viel Spaß!");
    }


    Hier bräuchte ich doch nun Arrays oder?


    EDIT: Ist es in diesem Fall nicht möglich es so umzusetzen?

    2 Mal editiert, zuletzt von GiS ()