Szerző Téma: runtime error  (Megtekintve 832 alkalommal)

runtime error
« Dátum: 2014. Május 08. - 23:22:03 »
0
Sziasztok egy esti fejlesztes utan resiztuk a szervert az alabbi dolgokat irta a log.
 

21:32:03] [debug] Run time error 4: \"Array index out of bounds\" [21:32:03] [debug] Accessing element at index 65535 past array upper bound 1999 [21:32:03] [debug] AMX backtrace:
[21:32:03] [debug] #0 000b0b94 in ?? () from unitedrp.amx
[21:32:03] [debug] #1 0010d580 in ?? () from unitedrp.amx
[21:32:03] [debug] #2 000b3b68 in ?? () from unitedrp.amx
[21:32:03] [debug] #3 00118020 in public Itter_OnGameModeInit­­ () from unitedrp.amx [21:32:03] [debug] #4 native CallLocalFunction () [080d3870] from samp03svr [21:32:03] [debug] #5 00029658 in public SSCANF_OnGameModeIni­­t () from unitedrp.amx [21:32:03] [debug] #6 native CallLocalFunction () [080d3870] from samp03svr [21:32:03] [debug] #7 0000856c in public GPA_OnGameModeInit () from unitedrp.amx [21:32:03] [debug] #8 native CallLocalFunction () [080d3870] from samp03svr [21:32:03] [debug] #9 00003620 in public OnGameModeInit () from unitedrp.amx [21:32:03] Number of vehicle models: 11

 
Ezt tanulmanyozva betettuk a rwggwli mod mentest ami mukodott,de annal is ezt irta..

Nem elérhető KovaNovik

  • 1121
  • KovaNovik
    • Profil megtekintése
runtime error
« Válasz #1 Dátum: 2014. Május 08. - 23:43:41 »
0
A tömb vége után akartad elérni azt. Tipikusan ez akkor van, ha pl. a játékosod nincs kocsiban, és 65535-el tér vissza, akkor a tömbödnek meg nincs is annyi cellája.
Pl.:
 
CMD:motor(playerid)
{
    new kocsiid = GetPlayerVehicleID(playerid);
    //ellenõrzések, stb..
    JarmuInfo[kocsiid][Motor] = true;
    return 1;
}

 
Ha nincs kocsiban, akkor a 2000 kocsi közül hogy szedje ki a 65535.-et? Érted :D (jelentése (itt): nincs). Ja, és azért ír 1999. cellát, mert 0-tól kezdi a számolást.
Megoldás: az ilyesmi helyeket nézd át, ahol valami függvény visszatérési értékét adsz meg cellaszámnak
Azaz:
Lekérsz egy információt (pl. Játékos kocsijának ID-je), és azt egy tömbben használod, és nem ellenõrzöd elõtte, hogy nem-e hibá (nem létezõ) cellára mutat.
Tehát, ha lekérsz valamit, és tömbb megadásnál használod, elõtte nézd meg, hogy az a függvény, amivel lekérsz, nem térhet-e vissza olyan értékkel, ami nem lesz megfelelõ. Pl. az én LegkozelebbiJarmuvem -1-el tér vissza, ha nincs a közeledben egy sem. Így, ha a legközelebbi kocsinak akarom átírni egy változóját, akkor elõtte meg kell néznem, az nem -1-e. Vágod? :D


Lehet, hogy tudományosan hangzik, de vagy angolul mondom ezeket a szavakat, vagy ilyen hülye szaknyelven.


Pont az ilyesmi hibák megelõzésérõl akarok csinálni az eddigieknél sokkal átfogóbb tutorialt

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
runtime error
« Válasz #2 Dátum: 2014. Május 09. - 23:16:34 »
0
[mod]Kiemelt téma, zárok![/mod]

runtime error
« Válasz #3 Dátum: 2014. Május 08. - 23:22:03 »
0
Sziasztok egy esti fejlesztes utan resiztuk a szervert az alabbi dolgokat irta a log.
 

21:32:03] [debug] Run time error 4: \"Array index out of bounds\" [21:32:03] [debug] Accessing element at index 65535 past array upper bound 1999 [21:32:03] [debug] AMX backtrace:
[21:32:03] [debug] #0 000b0b94 in ?? () from unitedrp.amx
[21:32:03] [debug] #1 0010d580 in ?? () from unitedrp.amx
[21:32:03] [debug] #2 000b3b68 in ?? () from unitedrp.amx
[21:32:03] [debug] #3 00118020 in public Itter_OnGameModeInit­­ () from unitedrp.amx [21:32:03] [debug] #4 native CallLocalFunction () [080d3870] from samp03svr [21:32:03] [debug] #5 00029658 in public SSCANF_OnGameModeIni­­t () from unitedrp.amx [21:32:03] [debug] #6 native CallLocalFunction () [080d3870] from samp03svr [21:32:03] [debug] #7 0000856c in public GPA_OnGameModeInit () from unitedrp.amx [21:32:03] [debug] #8 native CallLocalFunction () [080d3870] from samp03svr [21:32:03] [debug] #9 00003620 in public OnGameModeInit () from unitedrp.amx [21:32:03] Number of vehicle models: 11

 
Ezt tanulmanyozva betettuk a rwggwli mod mentest ami mukodott,de annal is ezt irta..

Nem elérhető KovaNovik

  • 1121
  • KovaNovik
    • Profil megtekintése
runtime error
« Válasz #4 Dátum: 2014. Május 08. - 23:43:41 »
0
A tömb vége után akartad elérni azt. Tipikusan ez akkor van, ha pl. a játékosod nincs kocsiban, és 65535-el tér vissza, akkor a tömbödnek meg nincs is annyi cellája.
Pl.:
 
CMD:motor(playerid)
{
    new kocsiid = GetPlayerVehicleID(playerid);
    //ellenõrzések, stb..
    JarmuInfo[kocsiid][Motor] = true;
    return 1;
}

 
Ha nincs kocsiban, akkor a 2000 kocsi közül hogy szedje ki a 65535.-et? Érted :D (jelentése (itt): nincs). Ja, és azért ír 1999. cellát, mert 0-tól kezdi a számolást.
Megoldás: az ilyesmi helyeket nézd át, ahol valami függvény visszatérési értékét adsz meg cellaszámnak
Azaz:
Lekérsz egy információt (pl. Játékos kocsijának ID-je), és azt egy tömbben használod, és nem ellenõrzöd elõtte, hogy nem-e hibá (nem létezõ) cellára mutat.
Tehát, ha lekérsz valamit, és tömbb megadásnál használod, elõtte nézd meg, hogy az a függvény, amivel lekérsz, nem térhet-e vissza olyan értékkel, ami nem lesz megfelelõ. Pl. az én LegkozelebbiJarmuvem -1-el tér vissza, ha nincs a közeledben egy sem. Így, ha a legközelebbi kocsinak akarom átírni egy változóját, akkor elõtte meg kell néznem, az nem -1-e. Vágod? :D


Lehet, hogy tudományosan hangzik, de vagy angolul mondom ezeket a szavakat, vagy ilyen hülye szaknyelven.


Pont az ilyesmi hibák megelõzésérõl akarok csinálni az eddigieknél sokkal átfogóbb tutorialt

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
runtime error
« Válasz #5 Dátum: 2014. Május 09. - 23:16:34 »
0
[mod]Kiemelt téma, zárok![/mod]

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal