Portal SAMP
[Ajuda] Tamanho indefinido da variavel ou apenas necessario - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: [Ajuda] Tamanho indefinido da variavel ou apenas necessario (/showthread.php?tid=2059)



Tamanho indefinido da variavel ou apenas necessario - k2bi_YT - 25/01/2022

Venho de uns tempos atras até agora pensando em alguma maneira de fazer isso e não consigo achar(caso tenha) uma solução.

é possivel criar uma variavel de um tamanho indeterminado e, ao ser inserido algum texto, usar apenas os caracteres contados nela?

Exemplo:
Código PHP:
CMD:avisos(playeridparams[])
{
    new variavel[]; //Aqui não será definido um tamanho
    new texto[32]; 
    if(sscanf(params"s[32]"texto)) return 1;
    format(variavelsizeof variavel"O jogador 'Tal' avisou: %s"texto);
    SendClientMessageToAll(-1variavel);
    return 1;

No caso, independente se  o jogador usar 32..15..5 no texto, a variavel não é definida assim pode economizar na memoria?
Envez de eu criar uma com variavel[128..256.500], com extensões grande sendo que é disperdicio

Enfim.. é possivel saber tamanho necessario para enviar a mensagem a todos sem ter falta frase, etc..?

"invalid array size (negative, zero or out of bounds)" Um dos erros que acontece se eu não definir um tamanho para variavel

Espero que tenha entendido minha duvida


RE: Tamanho indefinido da variavel ou apenas necessario - Dr Editor - 26/01/2022

Pawn é derivado de C, logo possui regras equivalentes:
Citar:A C String is a simple array with char as a data type. ‘C’ language does not directly support string as a data type. Hence, to display a String in C, you need to make use of a character array.

É possível apenas criar uma string predefinida sem informar a quantidade de caracteres. Isso porque a linguagem entende automaticamente que deve alocar X memória para Y caracteres.

Ex.:
Código:
new string[] = "variável dinâmica";

Aqui não há economia alguma de memória, isso porque a variável string já teve seu tamanho predefinido em 17 caracteres + EOS.