GTA-Center.com » Forum
http://www.gta-center.com/forums/

[GUIDA] Packed Strings
http://www.gta-center.com/forums/viewtopic.php?f=40&t=252
Pagina 1 di 1

Autore:  Peppe [ 07/11/2010, 17:40 ]
Oggetto del messaggio:  [GUIDA] Packed Strings

Packed Strings

Una non nota funzionalità del Pawno è quella delle packed strings, ovvero stringhe che possono memorizzare 4 caratteri a cella, a differenza di quelle normali che ne memorizzano uno a cella. Ciò comporta un risparmio di spazio e di memoria usata, che può essere anche notevole.
Per creare una packed string bisogna inserire il ! prima delle virgolette (" ") che definiscono il testo della stringa. Inoltre potete mettere char a seguire del numero di celle di questa, quando la create.
Ecco degli esempi:
Codice:
new string[128 char] = !"Questo è un esempio di Packed String, char divide il numero di celle per 4 quindi è come se scrivessimo, al posto di 128 char, 32";

Codice:
new string[32 char];
new var = 1;
format(string, sizeof(string),  !"Questa è la packed string numero %d", var);


Però, tuttavia, questo tipo di stringhe non potra essere compatibile con alcune vostre funzioni che devono leggere un singolo carattere per ogni cella della stringa come ad esempio questa funzione:
Codice:
char_Replace(string[], charsource, chardest)
{
    for(new i; i < strlen(string); i++)
   {
   if(string[i] == charsource) string[i] = chardest;
   }
   return 1;
}


Infatti, considerando una cella alla volta di una stringa, che dovrebbe essere un unico carattere, non è compatibile con le packed string, perché considerebbe 4 char per ogni cella.

Però si può ovviare a questo problema usando al posto delle parentesi quadre quelle graffe in questo modo: string{i}.
Una soluzione quindi è questa:
Codice:
char_Replace(string[], charsource, chardest)
{
   if(ispacked(string))
   {   
       for(new i; i < strlen(string); i++)
       {
       if(string{i} == charsource) string{i} = chardest;
       }
   }
   else
   {   
       for(new i; i < strlen(string); i++)
       {
       if(string[i] == charsource) string[i] = chardest;
       }
   }
   return 1;
}


Quindi le Packed Strings, pur avendo delle limitazioni, sono consigliate, poiché uno dei tanti modi per ottimizzare il vostro script.

Autore:  Beyond [ 10/11/2010, 20:57 ]
Oggetto del messaggio:  Re: [GUIDA] Packed Strings

Utile e chiara, dato che non tutti conoscono questa particolarità.
Grazie ;)

Autore:  Giovanni94m [ 10/11/2010, 21:49 ]
Oggetto del messaggio:  Re: [GUIDA] Packed Strings

grande peppe

Autore:  barletheking [ 10/11/2010, 22:00 ]
Oggetto del messaggio:  Re: [GUIDA] Packed Strings

Io sto iniziando a vedere.. noto che usa meno heap

Pagina 1 di 1 Tutti gli orari sono UTC + 1 ora [ ora legale ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/