Oggi è 05/12/2022, 1:10

Tutti gli orari sono UTC + 1 ora [ ora legale ]





 Pagina 1 di 1 [ 4 messaggi ] 

  Apri un nuovo argomento Rispondi all’argomento

  Stampa pagina

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

Iscritto il: 06/11/2010
Messaggi: 197
Favourite GTA: San Andreas

Karma
1


Non connesso
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.


Top
 E-mail  
 

 Oggetto del messaggio: Re: [GUIDA] Packed Strings
MessaggioInviato: 10/11/2010, 20:57 
Avatar utente
Administrator

Iscritto il: 02/09/2010
Messaggi: 282
Località: Cesena
Favourite GTA: Ballad of Gay Tony
PlayStation Network: Nessuno
Xbox Live: Nessuno
Xfire: ske92

Karma
10


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

_________________


Top
  
 
 Oggetto del messaggio: Re: [GUIDA] Packed Strings
MessaggioInviato: 10/11/2010, 21:49 
Avatar utente
Administrator

Iscritto il: 02/09/2010
Messaggi: 1349
Località: Agrigento
Favourite GTA: Vice City
PlayStation Network: Giovanni94m
Xfire: Giovanni94m
Steam: Giovanni94m

Karma
10


Non connesso
grande peppe

_________________
Immagine
Immagine
Immagine
Immagine
Immagine
Immagine
Immagine


Top
 E-mail  
 
 Oggetto del messaggio: Re: [GUIDA] Packed Strings
MessaggioInviato: 10/11/2010, 22:00 
Avatar utente
Moderatore

Iscritto il: 28/10/2010
Messaggi: 919
Località: Veduggio con Colzano (Milano-Monza)
Favourite GTA: San Andreas
PlayStation Network: Nessuno
Xbox Live: Nessuno
Xfire: barle97

Karma
1


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

_________________
disasm 0xFFFF00 1: LE HANTENNE DEL RUTER SI MVONO DA SL!11!1!!1
[EPD]Giovanni94m: AHSUAHSAUSHAUSAHSAU
disasm 0xFFFF00 1: bella questa asd

[EPD]Giovanni94m: io non riesco a trovare un gioco che ci giocavo su ps1
[EPD]Giovanni94m: non ricordo il nome
[EPD]Giovanni94m: era un omino rosa
[EPD]Giovanni94m: ...
[BCD]barle_the_king: forse cercavi omino bianco [cit. google]
[BCD]barle_the_king: auhsahusuha
[EPD]Giovanni94m: no ahsau
[BCD]barle_the_king: firma duhahudshue

Immagine


Top
 E-mail  
 
Visualizza ultimi messaggi:  Ordina per  
 Pagina 1 di 1 [ 4 messaggi ] 

  Apri un nuovo argomento Rispondi all’argomento

Tutti gli orari sono UTC + 1 ora [ ora legale ]



Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti


Non puoi aprire nuovi argomenti
Non puoi rispondere negli argomenti
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi inviare allegati

Cerca per:
Vai a:  
cron