Array index out of bounds

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
  • Hallo,
    ich habe gerade einige Fehler, die ich beim besten Willen nicht wegbekomme:

    Code
    error 032: array index out of bounds (variable "haus") // 13x - Überall wo haus[i][...] verwendet wird


    Hier der relevante Teil des Codes.

    PAWN Quellcode
    #define MAX_HAUS 350

    PAWN Quellcode
    enum hInfo {
    Float:X,
    Float:Y,
    Float:Z,
    Preis,
    Gebiet[5],
    Besitzer[24],
    KeyID,
    pickup,
    bool:loaded = false
    };

    PAWN Quellcode
    new haus[MAX_HAUS][hInfo];

    PAWN Quellcode
    public LoadHaus()
    {
    new text[128], form[5], besitzer[24], gebiet[5], i;
    while(i < MAX_HAUS) {
    if(haus[i][loaded] == false)
    {
    format(mQuery, 128, "SELECT * FROM haus WHERE ID = %i", i);
    mysql_query(mQuery);
    mysql_store_result();
    if(mysql_num_rows())
    {
    mysql_free_result();
    format(form, 5, "%i", i);
    format(besitzer, 24, "%s", mySQL_GetString("haus", "Besitzer", "ID", form));
    format(gebiet, 24, "%s", mySQL_GetString("haus", "Gebiet", "ID", form));
    haus[i][X] = mySQL_GetFloat("haus", "X", "ID", form);
    haus[i][Y] = mySQL_GetFloat("haus", "Y", "ID", form); //error 032
    haus[i][Z] = mySQL_GetFloat("haus", "Z", "ID", form); //error 032
    haus[i][Besitzer] = besitzer; //error 032
    haus[i][Gebiet] = gebiet; //error 032
    haus[i][KeyID] = mySQL_GetInt("haus", "KeyID", "ID", form); //error 032
    haus[i][Preis] = mySQL_GetInt("haus", "Preis", "ID", form); //error 032
    haus[i][loaded] = true;
    if(strlen(haus[i][Besitzer]) > 2) //error 032
    { // Bewohnt
    format(text, 128, "- Besitzer: %s -\n- Gebiet: %s -", haus[i][Besitzer], haus[i][Gebiet]); //error 032
    haus[i][pickup] = CreatePickup(1272, 1, haus[i][X], haus[i][Y], haus[i][Z], -1); //error 032
    Create3DTextLabel(text, cAQUA, haus[i][X], haus[i][Y], haus[i][Z]+1, 5, 0, 0); //error 032
    }
    else
    { // Verkäuflich
    format(text, 128, "- Verkäuflich -\n- Preis: $%i -\n- Gebiet: %s -", haus[i][Preis], haus[i][Gebiet]); //error 032
    haus[i][pickup] = CreatePickup(1273, 1, haus[i][X], haus[i][Y], haus[i][Z], -1); //error 032
    Create3DTextLabel(text, cDONE, haus[i][X], haus[i][Y], haus[i][Z]+1, 5, 0, 0); //error 032
    }
    }
    }
    i++;
    }
    return 1;
    }

    Ich hoffe mir kann jemand helfen.


    Mit freundl. Grüßen
    Padarom

    edit: Problem gelöst. Dadurch, dass ich in der Enumeration der Boolean loaded den Standardwert false zugewiesen habe, wurde erwartet, dass ich jeder anderen Variable auch einen Standardwert zuweise. Da ein Boolean standardweise false ist, wäre das so oder so hinfällig.

    Ich bin
    .. seit etwa 2007 in der Webentwicklung tätig, seit 2013 professionell
    .. Erfahrener Entwickler in PHP, Swift, Javascript, Typescript und Ruby. Zusätzlich habe ich Erfahrung in Python, Java, C#, C++, Prolog und einigen esoterischen Programmiersprachen
    .. Luftfahrtenthusiast und Segelflieger

    4 Mal editiert, zuletzt von Padarom () aus folgendem Grund: Problem erledigt