sizeof (Array[i]); : Error 1

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 Leute,


    Das ist meine Fehlermeldung:


    Und das ist der Code:


    Spoiler anzeigen

    - Oben:

    new Restaurant[][renum] =
    {
    {369.47, -5.95, 1001.40, 369.80, -8.83, 1001.91, 364.94, -11.39, 1001.40, 364.63, -9.60, 1001.91, 927.67, -1353.03, 13.11, 925.68, -1353.29, 13.55, 952.29, -1379.11, 12.92, 9, 0, "Cluckin' Bell", INVALID_FOOD_PICKUP_ID},
    {375.55, -119.08, 1001.02, 375.68, -120.46, 1001.63, 372.37, -133.35, 1001.02, 372.37, -131.38, 1001.63, 2105.32, -1806.44, 13.30, 2103.67, -1806.42, 13.71, 2113.72, -1788.23, 13.30, 5, 0, "Well Stacked Pizza", INVALID_FOOD_PICKUP_ID}
    },
    Gerichte[][][renum_gerichte] =
    {
    {//Cluckin' Bell
    {"Cluckin' Kleines Menu", 8, 13.1},
    {"Cluckin' Großes Menu", 20, 41.5},
    {"Cluckin' Riesiges Menu", 40, 62.6},
    {"Salat Menu", 20, 43.7}
    },
    {//Well Stacked Pizza
    {"Freundchen", 8, 13.1},
    {"Dopppel Deluxe Menu", 20, 41.5},
    {"Rippchen Pizza", 40, 62.6},
    {"Salat Menu", 20, 43.7}
    }
    };

    Spoiler anzeigen
    - In einem Befehl:

    for(new e = 0; e < sizeof(Restaurant); e++)
    {
    if(IsPlayerInRangeOfPoint(playerid, 7.0, Restaurant[e][DPosX], Restaurant[e][DPosY], Restaurant[e][DPosZ]))
    {
    new str[512], str_name[64], nr=0;
    for(new ex = 0; ex < sizeof(Gerichte[e]); ex++) // Hier ist Zeile 114
    {


    Aber wie kann ich diesen Fehler beheben?


    Gruß, Piet

  • Dein Code macht irgendwie keinen Sinn ?
    Du willst in einer Schleife die Größe eines Arrays erhalten mit sizeof, aber gibst dann noch das durchlaufende Element an ?


    LG

    Main: CPU: Intel Core i5-4440 @ 3,10 GHz | CPU-Cooling: Matterhorn -PURE- | RAM: 16GB Crucial Ballistix Sport DDR3-1600 DIMM CL9-9-9-24 |
    Motherboard: ASRock B85M Pro4 | GPU: Sapphire Radeon R9 390X Nitro 8GB GDDR5 |

    SSD: Samsung SSD 840 Evo 500GB | Power Supply: 550 Watt Corsair CS Series Modular 80+ Gold | Case: beQuiet! Silent Base 800


    As I walk through the valley of the shadow of death
    I take a look at my life and realize there's nothin' left.

  • @[PA]Piet_Meier
    Ich frage mich eher, welche Dimension von Gerichte du durchlaufen lassen willst (anscheinend sind es ja Dreidimensionen)
    for(new ex = 0; ex < sizeof(Gerichte[][]); ex++) //3.Dimension
    for(new ex = 0; ex < sizeof(Gerichte[]); ex++) //2.Dimension
    for(new ex = 0; ex < sizeof(Gerichte); ex++)//1.Dimension


    Oder was willst du genau machen ?


    LG

    Main: CPU: Intel Core i5-4440 @ 3,10 GHz | CPU-Cooling: Matterhorn -PURE- | RAM: 16GB Crucial Ballistix Sport DDR3-1600 DIMM CL9-9-9-24 |
    Motherboard: ASRock B85M Pro4 | GPU: Sapphire Radeon R9 390X Nitro 8GB GDDR5 |

    SSD: Samsung SSD 840 Evo 500GB | Power Supply: 550 Watt Corsair CS Series Modular 80+ Gold | Case: beQuiet! Silent Base 800


    As I walk through the valley of the shadow of death
    I take a look at my life and realize there's nothin' left.

  • Du solltest dir die Frage stellen ob es überhaupt vorteilhaft ist das zu verwenden eine 3d array und ab 3d array solltest du aufpassen das der kompiler
    jetzt ohne ein enum als index zu verwenden die dimensionen 2 und 3 zusammenlegt
    Gerichte[2][3][4]
    wird zu
    Gerichte[2][3 *4] als kleiner Tipp am rande.
    Zu dem musst du deinen einträgen konstante werte zuweißen sonst geht das nicht du kannst nur die anzahl der letzen dimension per sizeof abrufen, soweit ich weiß