[Hilfe] MySQL Array 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


  • Guten Abend Community,


    ich habe folgendes Problem,
    wenn ich den Serverstarte gibt mir die Serverkonsole folgenden Error aus:

    [20:01:32] [debug] Run time error 4: "Array index out of bounds"
    [20:01:32] [debug] Accessing element at index 65535 past array upper bound 121
    [20:01:32] [debug] Backtrace (most recent call first):
    [20:01:32] [debug] #0 LoadFVehicles()+0xc34 at GG_Reallife_MitHaus.pwn:56874


    Folgender Code wird in dem Moment ausgeführt:

    stock LoadFVehicles() //Fertig
    {
    new formatLD[70], model,col1,col2,carlocked,Float:x,Float:y,Float:z,Float:r,frakid, fmod[18],vehlack;
    for(new i = 0; i< MAX_VEHICLES;i++)
    {
    valstr(formatLD,i);
    printf("loading %d...",i);
    model= mysql_GetInt("FCars", "Model","ID",formatLD);
    col1= mysql_GetInt("FCars", "Col1","ID",formatLD);
    col2= mysql_GetInt("FCars", "Col2","ID",formatLD);
    carlocked= mysql_GetInt("FCars", "Locked","ID",formatLD);
    frakid= mysql_GetInt("FCars", "frakid","ID",formatLD);
    x= mysql_GetFloat("FCars", "SpawnX","ID",formatLD);
    y= mysql_GetFloat("FCars", "SpawnY","ID",formatLD);
    z= mysql_GetFloat("FCars", "SpawnZ","ID",formatLD);
    r= mysql_GetInt("FCars", "SpawnRot","ID",formatLD);
    fmod[1] = mysql_GetInt("FCars", "mod1","ID",formatLD);
    fmod[2] = mysql_GetInt("FCars", "mod2","ID",formatLD);
    fmod[3] = mysql_GetInt("FCars", "mod3","ID",formatLD);
    fmod[4] = mysql_GetInt("FCars", "mod4","ID",formatLD);
    fmod[5] = mysql_GetInt("FCars", "mod5","ID",formatLD);
    fmod[6] = mysql_GetInt("FCars", "mod6","ID",formatLD);
    fmod[7] = mysql_GetInt("FCars", "mod7","ID",formatLD);
    fmod[8] = mysql_GetInt("FCars", "mod8","ID",formatLD);
    fmod[9] = mysql_GetInt("FCars", "mod9","ID",formatLD);
    fmod[10] = mysql_GetInt("FCars", "mod10","ID",formatLD);
    fmod[11] = mysql_GetInt("FCars", "mod11","ID",formatLD);
    fmod[12] = mysql_GetInt("FCars", "mod12","ID",formatLD);
    fmod[13] = mysql_GetInt("FCars", "mod13","ID",formatLD);
    fmod[14] = mysql_GetInt("FCars", "mod14","ID",formatLD);
    fmod[15] = mysql_GetInt("FCars", "mod15","ID",formatLD);
    fmod[16] = mysql_GetInt("FCars", "mod16","ID",formatLD);
    fmod[17] = mysql_GetInt("FCars", "mod17","ID",formatLD);
    vehlack = mysql_GetInt("FCars", "VehSkin","ID",formatLD);
    new veh = CreateVehicle(model,x,y,z,r,col1,col2,-1);
    IsFrakAuto[veh] = true; //Errorzeile
    FAutoData[veh][mod1] = fmod[1];
    FAutoData[veh][mod2] = fmod[2];
    FAutoData[veh][mod3] = fmod[3];
    FAutoData[veh][mod4] = fmod[4];
    FAutoData[veh][mod5] = fmod[5];
    FAutoData[veh][mod6] = fmod[6];
    FAutoData[veh][mod7] = fmod[7];
    FAutoData[veh][mod8] = fmod[8];
    FAutoData[veh][mod9] = fmod[9];
    FAutoData[veh][mod10] = fmod[10];
    FAutoData[veh][mod11] = fmod[11];
    FAutoData[veh][mod12] = fmod[12];
    FAutoData[veh][mod13] = fmod[13];
    FAutoData[veh][mod14] = fmod[14];
    FAutoData[veh][mod15] = fmod[15];
    FAutoData[veh][mod16] = fmod[16];
    FAutoData[veh][mod17] = fmod[17];
    //unwichtig
    Die Error Zeile ist -> IsFrakAuto[veh] = true; //Errorzeile


    Das merkwürdige aber ist,IsFrakAuto ist zwar ein boolean, aber die Arraysize ist auf MAX_VEHICLES,
    also kann rein theretisch überhaupt kein "Array out of Bounds" zustande kommen...



    Danke im voraus :)


    ----


    Mit freundlichen Grüßen,
    [GGR]Radio_Bot

  • Hah ich weiß woran es liegt :]


    Es ist so einfach, da kann man nicht drauf kommen :D


    Man versuche daten aus einer Datenbank bzw aus einer Tabelle zu lesen in der keine Daten sind.
    Speichere diese Daten ab und versuche damit fahrezeuge zu erstellen.


    Es funktioniert nicht - die ID wird INVALID, in diesem Fall 0xFFFF(65535) und da der Array nicht so groß ist, gibt es eine Speicherverletzung.


    Die Lösung wäre, man erstelle die Tabelle, füttere sie mit brauchbaren Daten und es funktioniert ;)


    PS: Bekomm ich jetzt nen Preis? :love:


    PPS: @ [GRG]Scriptor
    das war mehr als Unnütz ;)

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski