ForestCZE 2 Odesláno: 11. Únor, 2018 Share Odesláno: 11. Únor, 2018 Zdravím, existuje v pawn stejná funkce jako explode(); v PHP? Mám dialog (viz příloha) a potřeboval bych dle mezer vyexplodovat do pole: new pole[128] = explode(" ", inputtext); strval(pole[0]); strval(pole[1]); strval(pole[2]); strval(pole[3]); Nějak tak, abych s těmi čísly mohl pracovat dál. Jak na to? Díky předem za pomoc. Link to comment Share on other sites More sharing options...
1 Tanga 131 Odesláno: 11. Únor, 2018 Share Odesláno: 11. Únor, 2018 Na to sa bežne používa "sscanf" plugin. Našiel som nejaký návod aj na tomto fóre, možno by som ho pozrel na tvojom mieste. Link to comment Share on other sites More sharing options...
3 ATomas 286 Odesláno: 12. Únor, 2018 Share Odesláno: 12. Únor, 2018 (upraveno) Vytvoril jsem takovy hodne jednoduchy explode. Umi to jen integery a prepoklada ze na prvni pozici uz je integer. stock explode(delimiter[],string[],array[],len = sizeof(array)) { new dellen = strlen(delimiter); array[0] = strval(string); for(new i=1,pos;i<len && (pos = strfind(string,delimiter,true,pos)) != -1;i++) { array[i] = strval(string[pos]); pos+=dellen; } return 1; } public OnFilterScriptInit() { new str[] = "1 2 3 4 5"; new Pole[5]; explode(" ",str,Pole); for(new i;i<sizeof(Pole);i++) printf("%d=%d",i,Pole[i]); return 1; } Edited 12. Únor, 2018 by ATomas Link to comment Share on other sites More sharing options...
2 Hlavní moderátor vEnd 279 Odesláno: 11. Únor, 2018 Hlavní moderátor Share Odesláno: 11. Únor, 2018 před 44 minutami, bigw3b. said: ak sa nemylim strlib ma takuto funkciu - strexplode(output[][], input[], znak) napr v tvojom pripade cca taketo daco new out[4][4], count; count = strexplode(out, inputtext, " "); if(count != 4) ....chyba, inputtext neobsahuje 3 medzery, or 4 "casti" K tomuto bych jen dodal, že se nejedná o nativní knihovnu, takže si ji musíš nejprve stáhnout a dát do složky includes. Odkaz. Link to comment Share on other sites More sharing options...
1 bigw3b. 69 Odesláno: 11. Únor, 2018 Share Odesláno: 11. Únor, 2018 (upraveno) ak sa nemylim strlib ma takuto funkciu - strexplode(output[][], input[], znak) napr v tvojom pripade cca taketo daco new out[4][4], count; count = strexplode(out, inputtext, " "); if(count != 4) ....chyba, inputtext neobsahuje 3 medzery, or 4 "casti" Edited 11. Únor, 2018 by bigw3b. Link to comment Share on other sites More sharing options...
1 bigw3b. 69 Odesláno: 11. Únor, 2018 Share Odesláno: 11. Únor, 2018 (upraveno) new int[4]; for(new i = 0; i < count; i++) int[i] = strval(out[i]); new total = (int[0]*86400) + (int[1]*3600) + (int[2]*60) + int[3]); Edited 11. Únor, 2018 by bigw3b. Link to comment Share on other sites More sharing options...
0 ForestCZE 2 Odesláno: 11. Únor, 2018 Author Share Odesláno: 11. Únor, 2018 (upraveno) Zkusil jsem s tím pracovat dál nějak takto: new out[4][4], count; count = strexplode(out, inputtext, " "); for(new i = 0; i < count; i++) strval(out[i]); new total = (out[0]*86400) + (out[1]*3600) + (out[2]*60) + out[3]); if(total > promenna) Tvuj aktualni cas je mensi nez zadany... A errrors: error 033: array must be indexed (variable "out") error 029: invalid expression, assumed zero warning 215: expression has no effect Předpokládám, že ta proměnná total musí být také pole. Asi? Edited 11. Únor, 2018 by ForestCZE Link to comment Share on other sites More sharing options...
0 Tanga 131 Odesláno: 11. Únor, 2018 Share Odesláno: 11. Únor, 2018 (upraveno) před 1 hodinou, ForestCZE said: Zkusil jsem s tím pracovat dál nějak takto: new out[4][4], count; count = strexplode(out, inputtext, " "); for(new i = 0; i < count; i++) strval(out[i]); new total = (out[0]*86400) + (out[1]*3600) + (out[2]*60) + out[3]); if(total > promenna) Tvuj aktualni cas je mensi nez zadany... A errrors: error 033: array must be indexed (variable "out") error 029: invalid expression, assumed zero warning 215: expression has no effect Předpokládám, že ta proměnná total musí být také pole. Asi? ignorujme chybu čo ti to teraz vypisuje.. Máš v cykle strval(out), ale nikde tú hodnotu neukladáš. Myslím, že tvoj cyklus by sa dal prepísať takto: new out[4][4], count, total; count = strexplode(out, inputtext, " "); for(new i = 0; i < count; i++) { total *= 60; total += strval(out[i]); } if(total > promenna) Tvuj aktualni cas je mensi nez zadany... Edited 11. Únor, 2018 by Tanga celý kód Link to comment Share on other sites More sharing options...
0 ForestCZE 2 Odesláno: 11. Únor, 2018 Author Share Odesláno: 11. Únor, 2018 (upraveno) před 4 minutami, Tanga said: ignorujme chybu čo ti to teraz vypisuje.. Máš v cykle strval(out), ale nikde tú hodnotu neukladáš.Asi skôr do cyklu total += strval(out); Asi je to nesmysl tak, jak jsem to napsal. Jde o to, že to out je string a já to celé potřebuji přetypovat na integer :-) A potom jednotlivé hodnoty na indexech 0-3 sečíst. Edited 11. Únor, 2018 by ForestCZE Link to comment Share on other sites More sharing options...
0 ForestCZE 2 Odesláno: 11. Únor, 2018 Author Share Odesláno: 11. Únor, 2018 (upraveno) před 14 minutami, bigw3b. said: new int[4]; for(new i = 0; i < count; i++) int[i] = strval(out[i]); new total = (int[0]*86400) + (int[1]*3600) + (int[2]*60) + int[3]); Na konci závorka navíc, ale jinak bez errors. Díky EDIT: Už to šlape, jak má Edited 11. Únor, 2018 by ForestCZE Link to comment Share on other sites More sharing options...
0 Administrátor Ewwe 434 Odesláno: 13. Únor, 2018 Administrátor Share Odesláno: 13. Únor, 2018 neřeší to náhodou scanff ? Link to comment Share on other sites More sharing options...
Dotaz
ForestCZE 2
Zdravím, existuje v pawn stejná funkce jako explode(); v PHP?
Mám dialog (viz příloha) a potřeboval bych dle mezer vyexplodovat do pole:
Nějak tak, abych s těmi čísly mohl pracovat dál. Jak na to? Díky předem za pomoc.
Link to comment
Share on other sites
10 odpovědí na tuto otázku
Recommended Posts