Jump to content
  • 0

pomoc Errory a Warningy


w.endelin

Dotaz

Všiml jsem si že některé z help topiců jsou uplně zbytečné, stačilo by se kouknout na wikinu a bylo by to, jenže někdteří místo toho radši jdou sem a postou si sem svůj topic, aniž by se třeba koukli jestli se to tu již neřešilo.

Hledal jsem zde, ale nenašel, jestli zde tento návod je, tak se omlouvám..

Jedná se o mírně upravený! překlad ze samp wiki (http://wiki.sa-mp.com/wiki/Errors_List) - jelikož jak jsem koukal tak většina lidí z help topicu angičtinu neovládaji, nebo jen základy...

Takže...

separator.png

Error
- Chyba, kdy kompilátor nemůže vygenerovat příslušný kód
- Tyto chyby nesou čísla od 1 do 99

Fatal Error
- Narazí-li kompilátor na tuto chybu, přeruší se kompilace a vypíše vám fatal error
- Fatal Error-y nesou číla od 100 do 199

Warining
- Kompilace se dokončí, ale funkce zdřejmě nebude fungovat jak má..
- Warning-y nesou čísla od 200-299
 

separator.png

Errory (ty nejčastější)

001: expected token
- Požadovaný výraz nebyl nalezen

Příklad:

 

cesta/file.pwn(18) : error 001: expected token ";", but found "return"

- číslo 18 je řádek, kde se tato chyba stala (vetšinout chyba bývá o řádek výš).

 

15| public OnPlayerConnect(playerid)
16| {
17|     SendClientMessage(playerid, BARVA_BILA, "Vítej na serveru")
18|     return 1;
19| }

- Zde si zkontrolujeme, kde nám chybí znaménko ";", jistě jste si všimli, že na konci řádku 17 chybí za závorkou ";", a to je ten problém, proč nám to nefunguje, oprava bude tedy vypadat takto:

17|     SendClientMessage(playerid, BARVA_BILA, "Vitejte na serveru"); //doplnili jsme středník na konec řádku

separator.png

 

002: only a single statement (or expression) can follow each “case
- Každé "case" muže ve "switch" pojmout jen jeden příkaz
- Pokud chcete do case dát více příkazů, přidejte jej do složenýc závorek ( { } ), nebo jej musíte oddělit čárkou

Příklad:

Takto vypadá tento error:

error 002: only a single statement (or expression) can follow each "case"
10| main()
11| {
12|     switch(prikazy)
13|     {
14|         case 0: print("Prikaz 1"); print("Přikaz 2");
15|     }
16|     return 1;
17| }

Nám to nyní koplo tyto errory/warningy:

cesta/file.pwn(14) : error 002: only a single statement (or expression) can follow each "case"
cesta/file.pwn(14) : warning 215: expression has no effect
cesta/file.pwn(16) : error 010: invalid function or declaration

Opravíme jej takto:

10| main()
11| {
12|     switch(prikazy)
13|     {
14|         case 0:
15|         { // přiadáme složené závorky
16|             print("prikaz 1");
17|             print("prikaz 2");
18|         } // přiadáme složené závorky
19|     }
20|     return 1;
21| }

separator.png

 

035: argument type mismatch (argument x)
-
Argument který jsme do funkce dosadili není správný 

Příkad:

cesta/file.pwn(15) : error 035: argument type mismatch (argument 1)
15|     Kick("playerid");

Opravíme (najdeme si třeba na wiki) a zjistíme, že tam nemají být uvozky, takže opravíme takto:
 

15|     Kick(playerid);

separator.png

 

047: array sizes do not match, or destination array is too small
- Velikost array je příliš malá...

 

cesta/file.pwn(18) : error 047: array sizes do not match, or destination array is too small
14| new pozdrav[3];
15| new zprava[] = "Pawno.cz"; 
..|
18|     pozdrav = zprava;

Jak vidíte, máme "pozdrav", který je o velikosti 3 (3charaktery - mezera se počítá tež jako charakter), ale zpráva "Pawno.cz", má 8 charakterů, tím pádem se zpráva nedá "dosadit" do pozdrav.

Tím pádem máme na výber, buď zvětšíme array, nebo zkrátíme zprávu (Mužete se s tím hudně setkat třeba u stringu..)
 

14| new pozdrav[9];
15| new zprava[] = "Pawno.cz";
..|
18|     pozdrav = zprava;

Tip: Operátory na pravé a levé straně se musí rovnat, nebo musí být levá strana větší.

 

separator.png

 

Fatal erorr-y (nejčastější)

100: cannot read from file: "<soubor>"

- Máte v souboru zapsané include, ale kompilátor nemohl tento soubor najít ve složce "<cesta>/pawno/include".
Tip: Pokud máte v počítačí vícekrát program pawno, může vám to způsobovat tuto chybu (pracujete v "pawno(1)", ale include máte ve složce kde máte "pawno(2)").

 

separator.png

 

Warning-y (nejčastější)

202: number of arguments does not match definition
- Co k tomu říct..Máte moc nebo málo argumentů.. Ukáži:
 

13| public OnPlayerConnect(playerid)
14| {
15|     SendClientMessage(playerid, BARVA_BILA, "Vítam tě", "Welcome!");
16|     return 1;
17| }

- Pokud nevíte, tak správné znění je  SendClientMessage(playerid, color, const message[]), tudíž zde máme jeden argument navíc, stačí jen porovnat podle wiki (například pokud neznáte danou funkci) a opravit jej
 

15|     SendClientMessage(playerid, BARVA_BILA, "Vítam tě");       

separator.png

 

203: symbol is never used: "<symbol>"
- V kodu je funkce, nebo proměnná která není použita.

 

3| new promenna;

- ale tuto proměnou nepoužiju, jeduše tedy jen najdu příslušný řádek, a smažu (nemusíme, pokud víme, že proměnnou použijeme)

Toto varovaní může být ignorováno

 

separator.png

 

 

 

Návod označen jako platný

Ten to návod byl označen jako platný.Návod může být kdykoli označen jako nevhodný či neplatný

Návod není dokončen na 100% !

Edited by VolfikCŽ
  • Líbí se mi to! (+1) 1
Link to comment
Share on other sites

4 odpovědí na tuto otázku

Recommended Posts

  • 0

002: only a single statement (or expression) can follow each “case

- Každé "case" muže ve "switch" pojmout jen jeden příkaz

- Pokud chcete do case dát více příkazů, přidejte jej do složenýc závorek ( { } )

 

- Není to tak úplně pravda, příkazy stačí jenom oddělit čárkou.

switch(prikazy)
{
     case 0: print("Prikaz 1"), print("Přikaz 2");
}
  • Líbí se mi to! (+1) 1
Link to comment
Share on other sites

  • 0
  • Administrátor

Argument type mismatch

Argument který jsme do funkce dosadili není správný 

 

Spíš než není správný bych řekl že nemá správný datový typ... 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...