[Ajuda]Limite de parametros na string
#1

Pessoal primeiramente, boa noite,

estou tentando fazer uma string que recebe os dados de um arquivo.txt.

estava lendo o topico abaixo:

https://sampforum.blast.hk/showthread.php?tid=208977

e conforme o [Full]Garfield[XDB] respondeu neste outro:

http://forum.sa-mp.com/showthread.ph...99#post1009299

bom, antes de eu lкr estava dando o mesmo problema dos topicos mensionados..

ao colocar os paramentros etc, dava unknow command.

dai usei o format da forma que o garfield falou e resolveu o problema parcialmente.

porem a duvida й: quando coloco mais de 15 parametros na string volta a dar unknow command.

o formate sу aceita 15 parametros na string msm? ou tem como contornar?

desde jб, muito obrigado a quem responder.

nгo estou postando o comando q estava usando, pois era um teste baseado no exemplo mensinado no topico,
porem com mais dados, no meu cmd, ele teria que pegar 25 parametros.

Muito obrigado.
Reply
#2

eu sou [FULL]Garfield[XDB] que fui banido,
o unknown command que pode aparecer pode ser do seu cуdigo em sн.
poste ele para eu analisar e dar uma resposta.

pawn Код:
new string[Tamanho da string];
talvez seja return.
Reply
#3

Quote:
Originally Posted by TheGarfield
Посмотреть сообщение
eu sou [FULL]Garfield[XDB] que fui banido,
o unknown command que pode aparecer pode ser do seu cуdigo em sн.
poste ele para eu analisar e dar uma resposta.

pawn Код:
new string[Tamanho da string];
talvez seja return.
Garfield, obrigado por responder.. segue o codigo:

pawn Код:
if(strcmp(cmdtext, "/if", true) == 0)
{
    new strdialog[512];
    abrirarq(playerid);
    format(strdialog, sizeof(strdialog),"Lider:%s\nVaga 1:%s\nVaga 2:%s\nVaga 3:%s\nVaga 4:%s\nVaga 5:%s\nVaga 6:%s\nVaga 7:%s\nVaga 8:%s\nVaga 9:%s\nVaga 10:%s\nVaga 11:%s\nVaga 12:%s\nVaga 13:%s\nVaga 14:%s\nVaga 15:%s", //<<-- aqui em cima a vaga 14 e a 15 aparece em branco pois nгo lк do slotN7.
    Fini_GetStr("slot1"),
    Fini_GetStr("slotN1"),
    Fini_GetStr("slot2"),
    Fini_GetStr("slotN2"),
    Fini_GetStr("slot3"),
    Fini_GetStr("slotN3"),
    Fini_GetStr("slot4"),
    Fini_GetStr("slotN4"),
    Fini_GetStr("slot5"),
    Fini_GetStr("slotN5"),
    Fini_GetStr("slot6"),
    Fini_GetStr("slotN6"),
    Fini_GetStr("slot7"),
    Fini_GetStr("slotN7")/*,
    Fini_GetStr("slot8"),
    Fini_GetStr("slotN8"),
    Fini_GetStr("slot9"),
    Fini_GetStr("slotN9"),
    Fini_GetStr("slot10"),
    Fini_GetStr("slotN10")*/
);
    fechararq(playerid);
    ShowPlayerDialog(playerid, 95959, DIALOG_STYLE_LIST, "{FF6600}Teste", strdialog, "Ok", "Sair");
    return 1;
}
olha do slotN7 pra frente se eu tirar a /**/ da erro de unknow, deixando atй o slotN7 ele funciona normalmente.


desde-jб, muito obrigado.
Reply
#4

tenta assim:
pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
    if(strcmp(cmdtext, "/if", true) == 0)
    {
        static
             strdialog[500],
             strOuput[600]
        ;
        abrirarq(playerid);
        format(strdialog, sizeof(strdialog),"Lider:%s\nVaga 1:%s\nVaga 2:%s\nVaga 3:%s\nVaga 4:%s\nVaga 5:%s\nVaga 6:%s\nVaga 7:%s\nVaga 8:%s\n",//,
        Fini_GetStr("slot1"),
        Fini_GetStr("slotN1"),
        Fini_GetStr("slot2"),
        Fini_GetStr("slotN2"),
        Fini_GetStr("slot3"),
        Fini_GetStr("slotN3"),
        Fini_GetStr("slot4"),
        Fini_GetStr("slotN4"),
        Fini_GetStr("slot5"),
        Fini_GetStr("slotN5"),
        Fini_GetStr("slot6"),
        Fini_GetStr("slotN6"),
        Fini_GetStr("slot7"),
        Fini_GetStr("slotN7"),
        Fini_GetStr("slotN8"));

        format(strdialog, sizeof(strdialog),"Vaga 9:%s\nVaga 10:%s\nVaga 11:%s\nVaga 12:%s\nVaga 13:%s\nVaga 14:%s\nVaga 15:%s",

        Fini_GetStr("slot9"),
        Fini_GetStr("slotN9"),
        Fini_GetStr("slot10"),
        Fini_GetStr("slotN10"));
        fechararq(playerid);
       
        strcat(strOuput,strdialog);
        ShowPlayerDialog(playerid, 95959, DIALOG_STYLE_LIST, "{FF6600}Teste", strOuput, "Ok", "Sair");
        return 1;
    }
    return 0;
}
Reply
#5

Quote:
Originally Posted by TheGarfield
Посмотреть сообщение
tenta assim:
pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
    if(strcmp(cmdtext, "/if", true) == 0)
    {
        static
             strdialog[500],
             strOuput[600]
        ;
        abrirarq(playerid);
        format(strdialog, sizeof(strdialog),"Lider:%s\nVaga 1:%s\nVaga 2:%s\nVaga 3:%s\nVaga 4:%s\nVaga 5:%s\nVaga 6:%s\nVaga 7:%s\nVaga 8:%s\n",//,
        Fini_GetStr("slot1"),
        Fini_GetStr("slotN1"),
        Fini_GetStr("slot2"),
        Fini_GetStr("slotN2"),
        Fini_GetStr("slot3"),
        Fini_GetStr("slotN3"),
        Fini_GetStr("slot4"),
        Fini_GetStr("slotN4"),
        Fini_GetStr("slot5"),
        Fini_GetStr("slotN5"),
        Fini_GetStr("slot6"),
        Fini_GetStr("slotN6"),
        Fini_GetStr("slot7"),
        Fini_GetStr("slotN7"),
        Fini_GetStr("slotN8"));

        format(strdialog, sizeof(strdialog),"Vaga 9:%s\nVaga 10:%s\nVaga 11:%s\nVaga 12:%s\nVaga 13:%s\nVaga 14:%s\nVaga 15:%s",

        Fini_GetStr("slot9"),
        Fini_GetStr("slotN9"),
        Fini_GetStr("slot10"),
        Fini_GetStr("slotN10"));
        fechararq(playerid);
       
        strcat(strOuput,strdialog);
        ShowPlayerDialog(playerid, 95959, DIALOG_STYLE_LIST, "{FF6600}Teste", strOuput, "Ok", "Sair");
        return 1;
    }
    return 0;
}
Obrigado novamente, mas bom, da sua forma nгo funciounou.. porem me deu uma ideia de usar strins, ai foi..
testando com o seu codigo, ele me mostrava apenas a segunda "strdialog".. e nao mostra a primeira..

mas o estranho q strcat seria para juntб-las nгo й?

bom, com o strins ficou assim:
pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
    if(strcmp(cmdtext, "/if", true) == 0)
    {
        static
             strdialog[500],
             strdialog2[500],
             strOuput[600]
        ;
        abrirarq(playerid);
        format(strdialog, sizeof(strdialog),"Lider:%s\nVaga 1:%s\nVaga 2:%s\nVaga 3:%s\nVaga 4:%s\nVaga 5:%s\nVaga 6:%s\nVaga 7:%s\nVaga 8:%s\n\nVaga 9:%s\n",//,
        Fini_GetStr("slot1"),
        Fini_GetStr("slotN1"),
        Fini_GetStr("slot2"),
        Fini_GetStr("slotN2"),
        Fini_GetStr("slot3"),
        Fini_GetStr("slotN3"),
        Fini_GetStr("slot4"),
        Fini_GetStr("slotN4"),
        Fini_GetStr("slot5"),
        Fini_GetStr("slotN5"));

        format(strdialog2, sizeof(strdialog),"Vaga 10:%s\nVaga 11:%s\nVaga 12:%s\nVaga 13:%s\nVaga 14:%s\nVaga 15:%s\nVaga 16:%s\nVaga 17:%s\nVaga 18:%s\nVaga 19:%s",
       
        Fini_GetStr("slot6"),
        Fini_GetStr("slotN6"),
        Fini_GetStr("slot7"),
        Fini_GetStr("slotN7"),
        Fini_GetStr("slot8"),
        Fini_GetStr("slotN8"),
        Fini_GetStr("slot9"),
        Fini_GetStr("slotN9"),
        Fini_GetStr("slot10"),
        Fini_GetStr("slotN10"));
        fechararq(playerid);
        strins(strOuput,strdialog,strlen(strOuput));
        strins(strOuput,strdialog2,strlen(strOuput));
        //strcat(strOuput,strdialog);
        ShowPlayerDialog(playerid, 95959, DIALOG_STYLE_LIST, "{FF6600}Teste", strOuput, "Ok", "Sair");
        return 1;
    }
    return 0;
}

Muito obrigado pela ajuda, consegui resolver da forma que postei, nela agora aparecem todos os campos.
Boa noite.
Reply
#6

Quote:
Originally Posted by The Knight
Посмотреть сообщение
PHP код:
static
     
strdialog128 10 ]
     
strOuput128 10 ]; 
Nгo usa static que os valores nгo vгo atualizar
E nгo necessita usar 1280 de string
Reply
#7

Quote:
Originally Posted by Ricop522
Посмотреть сообщение
Nгo usa static que os valores nгo vгo atualizar
й. static nгo atualiza, nгo existe modo que faзa atualizar.
aonde vocк viu que static atualiza ? KKKKKKKKKKKKKKKKKKKKK

Quote:
Originally Posted by Ricop522
Посмотреть сообщение
E nгo necessita usar 1280 de string
depende do texto ;^)
Reply
#8

Quote:
Originally Posted by TheGarfield
Посмотреть сообщение
й. static nгo atualiza, nгo existe modo que faзa atualizar.
aonde vocк viu que static atualiza ? KKKKKKKKKKKKKKKKKKKKK


depende do texto ;^)
Eu quis dizer que o valor da static nгo muda uma vez setado...
static teste[128];
strcat(teste..."a");

Assim o teste vai ser sempre teste..

Nгo consigui explicar, mas ok..

Enquanto ao nъmero alto, nenhum texto ultiliza tantas strings, no mбximo 1000, esse valor tгo alto й horrнvel para o funcionamento do servidor..
Reply
#9

Quote:
Originally Posted by The Knight
Посмотреть сообщение
PHP код:
static
     
strdialog128 10 ]
     
strOuput128 10 ]; 
Obrigado tambйm, por responder.

Quote:
Originally Posted by Ricop522
Посмотреть сообщение
Nгo usa static que os valores nгo vгo atualizar
E nгo necessita usar 1280 de string
poderia explicar melhor sobre o uso da static?
obrigado.

Quote:
Originally Posted by TheGarfield
Посмотреть сообщение
й. static nгo atualiza, nгo existe modo que faзa atualizar.
aonde vocк viu que static atualiza ? KKKKKKKKKKKKKKKKKKKKK


depende do texto ;^)
Garfield usando o static acontece um erro aqui, quando eu coloco a variavel como static, e faзo o comando, ele "duplica" o texto.. se vc for ir digitando ele vai duplicando..

por exemplo, se la no arquivo tem as linhas:

slot1
slotn1
slot2
slotn2

no dialog ele me mostra a primeira vez certo, se eu executar o comando de novo ele mostra:

slot1
slotn1
slot2
slotn2
slot1
slotn1
slot2
slotn2
e por ai vai.. testei com o strcat, e com o strins, da a mesma coisa usando o static.
porem com o strcat, ele so mostra a ultima parte do codigo conforme te falei anteriormente.


Quote:
Originally Posted by Ricop522
Посмотреть сообщение
Eu quis dizer que o valor da static nгo muda uma vez setado...
static teste[128];
strcat(teste..."a");

Assim o teste vai ser sempre teste..

Nгo consigui explicar, mas ok..

Enquanto ao nъmero alto, nenhum texto ultiliza tantas strings, no mбximo 1000, esse valor tгo alto й horrнvel para o funcionamento do servidor..
no seu exemplo, ele nгo iria adicionar o "a" ao teste?
quanto ao numero de caracters acho q pelomenos uma das strings deveria ter um numero maior, pois eu estou adcionando vбrias outras dentro dela. por exemplo se eu tenho 3 strings, uma tem 50 a outra 40 e a terceira eu nao poderia por com menos de 90 caso eu queira formatar as duas anteriores dentro da terceira certo?


desculpem o encomodo.. nгo sou muito de postar, tento sempre resolver primeiro pesquisando, porem essa duvidazinha ai ta tenso de resolver rs.

boa noite.
Reply
#10

Quote:
Originally Posted by steeldark
Посмотреть сообщение
Obrigado tambйm, por responder.



poderia explicar melhor sobre o uso da static?
obrigado.



Garfield usando o static acontece um erro aqui, quando eu coloco a variavel como static, e faзo o comando, ele "duplica" o texto.. se vc for ir digitando ele vai duplicando..

por exemplo, se la no arquivo tem as linhas:

slot1
slotn1
slot2
slotn2

no dialog ele me mostra a primeira vez certo, se eu executar o comando de novo ele mostra:

slot1
slotn1
slot2
slotn2
slot1
slotn1
slot2
slotn2
e por ai vai.. testei com o strcat, e com o strins, da a mesma coisa usando o static.
porem com o strcat, ele so mostra a ultima parte do codigo conforme te falei anteriormente.




no seu exemplo, ele nгo iria adicionar o "a" ao teste?
quanto ao numero de caracters acho q pelomenos uma das strings deveria ter um numero maior, pois eu estou adcionando vбrias outras dentro dela. por exemplo se eu tenho 3 strings, uma tem 50 a outra 40 e a terceira eu nao poderia por com menos de 90 caso eu queira formatar as duas anteriores dentro da terceira certo?


desculpem o encomodo.. nгo sou muito de postar, tento sempre resolver primeiro pesquisando, porem essa duvidazinha ai ta tenso de resolver rs.

boa noite.
o static no caso de string's dб para usar,
mais se usado strins e strcat ele buga.
normalmente o static acaba no final do brackeds ( Chavez {'}).
quando vocк usa strcat ou strins, й aconselhбvel usar new.


abraзos.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)