[Ajuda]Limite de parametros na string -
steeldark - 02.07.2011
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.
Re: [Ajuda/Duvida]Limite de parametros na string -
TheGarfield - 02.07.2011
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.
Re: [Ajuda/Duvida]Limite de parametros na string -
steeldark - 02.07.2011
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.
Re: [Ajuda]Limite de parametros na string -
TheGarfield - 02.07.2011
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;
}
Re: [Ajuda]Limite de parametros na string -
steeldark - 02.07.2011
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.
Re: [Ajuda]Limite de parametros na string -
Ricop522 - 02.07.2011
Quote:
Originally Posted by The Knight
PHP код:
static
strdialog[ 128 * 10 ]
strOuput[ 128 * 10 ];
|
Nгo usa static que os valores nгo vгo atualizar
E nгo necessita usar 1280 de string
Re: [Ajuda]Limite de parametros na string -
TheGarfield - 02.07.2011
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 ;^)
Re: [Ajuda]Limite de parametros na string -
Ricop522 - 02.07.2011
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..
Re: [Ajuda]Limite de parametros na string -
steeldark - 03.07.2011
Quote:
Originally Posted by The Knight
PHP код:
static
strdialog[ 128 * 10 ]
strOuput[ 128 * 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.
Re: [Ajuda]Limite de parametros na string -
TheGarfield - 05.07.2011
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.