Szerző Téma: Mi a lényegi különbség a "string[]" és a "string[100]" között?  (Megtekintve 694 alkalommal)

Nem elérhető AnthonyGates

  • 546
  • AnthonyGates
    • Profil megtekintése
0 Show voters
Vagyok elég noob ahhoz, hogy megkérdezem. Mi értelme van írkálni a karakterláncok((tömbök)) hosszát, ha a preprocesszor? úgyis annyi \"egységet\" foglal le a tömbnek, amekkora valójában?
Magyarázat: Több játékot scripteltem, és nagyjából csak itt bevett szokás ez, hogy new tömb[len]...
Ex: A két szkript eredménye ugyanaz.
Itt vannak okosak is, akik a lényegi dolgait értik, nem csak szkriptelnek a világba. Köszi a válaszokat.
 
stock teszt1(){
new string[] = \"0123456789\";
new counter = 0;
for(new i; i<sizeof(string); i++)
{
    printf(string);
counter++;
}
printf(\"String: %s, Len: %d, sizeof: %d\", string, counter, sizeof(string));
}

 

stock teszt2(){
new string[11] = \"0123456789\";
new counter = 0;
for(new i; i<sizeof(string); i++)
{
    printf(string);
counter++;
}
printf(\"String: %s, Len: %d, sizeof: %d\", string, counter, sizeof(string));
}
« Utoljára szerkesztve: 2015. május 26. - 19:07:13 írta ƒlaﻛh »

Nem elérhető divkn

  • 3259
    • Profil megtekintése
Mi a lényegi különbség a "string[]" és a "string[100]" között?
« Válasz #1 Dátum: 2015. május 26. - 19:53:18 »
+1 Show voters
Mert a Pawn így ki tudja számolna mekkora méret kell az adott változóhoz, ha például GetPlayerName esetén próbálsz lekérdezni, akkor a Pawn nem tudja mekkora legyen a változó cella mérete, vagyis hogy hány karaktert tároljon el, ezért fordításkor érvénytelen tömb méret hibát jelez.
Ha netán az embernek nincs kedve számolgatnia a karakterlánc hosszát, akkor elég megadni az elképzelt szöveget majd azt formázni.
 

new str[] = \"A szervered neve: Az én teszt szerverem\",
    hostname[50];
GetServerVarAsString(\"hostname\",hostname,50);
format(str,sizeof(str),\"A szervered neve: %s\",hostname);
print(str);
// Kimenet:
// A szervered neve: SA-MP 0.3 Server

 
És így még van 5 cellád hogy betölthesd a változót.
A probléma viszont az, hogy a karakterláncot csatolja az AMX fájlban, a karakterlánc hosszúságától függően és mennyiségében lassítja a más funkciók végrehajtását.
« Utoljára szerkesztve: 2015. május 26. - 20:02:10 írta Applejack »

Nem elérhető AnthonyGates

  • 546
  • AnthonyGates
    • Profil megtekintése
Mi a lényegi különbség a "string[]" és a "string[100]" között?
« Válasz #2 Dátum: 2015. május 26. - 20:09:04 »
+2 Show voters
\"QvfMGpq.png\"

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal