-
Vont már egy ilyen témám, csak nem jutottam vele sokra. :)
Mint már mondtam, nem vagyok túl jó a stringekben ezért szeretnék segítséget kérni a következõben:
Repülõtér, felsõ terminál -> Ez ugye 25 karakter, de én azt szeretném, hogy 22 karakter felett az utolsó space utáni részt leválassza, és tegye egy változóba, ergo:
Repülõtér, felsõ -> Marad
terminál -> változó
Segítséget elõre is köszönöm.
-
Micsoda segítõkész közösség ... :dots:
:kosz: :thankyou:
OFF: Lehetséges nem tudják a választ.. ez nem a közösség miatt van, hogy neked nem válaszolnak vissza..
33 Megtekintések
-
new string1[] = \"Repülõtér, felsõ terminál\", string2[32], spcpoz;
for(new i = 0; i < strlen(string1); i++) {
if(i > 22) strmid(string2, string1, spcpoz+1, strlen(string1)), strmid(string1, string1, 0, spcpoz-1), break;
if(string == \' \') spcpoz = i;
}
printf(string1); //Repülõtér,
printf(string2); //Felsõ terminál
Végigmegyek a stringen, ha spacet talál, lejegyzi hol, ha 22 karakter fölé jut, a lementett legutolsó spacetõl a végéig lesz a 2-es string, elõtte meg az 1-es.
-
new string1[] = \"Repülõtér, felsõ terminál\", string2[32], spcpoz;
for(new i = 0; i < strlen(string1); i++) {
if(i > 22) strmid(string2, string1, spcpoz+1, strlen(string1)), strmid(string1, string1, 0, spcpoz-1), break;
if(string == \' \') spcpoz = i;
}
printf(string1); //Repülõtér,
printf(string2); //Felsõ terminál
Végigmegyek a stringen, ha spacet talál, lejegyzi hol, ha 22 karakter fölé jut, a lementett legutolsó spacetõl a végéig lesz a 2-es string, elõtte meg az 1-es.
Kapok rá egy pár errort :S
new string1[] = \"Repülõtér, felsõ terminál\", string2[32], spcpoz;
for(new i = 0; i < strlen(string1); i++) {
if(i > 22) strmid(string2, string1, spcpoz+1, strlen(string1)), strmid(string1, string1, 0, spcpoz-1), break;//2055
if(string == \' \') spcpoz = i;//2056
}
C:\\játékok\\sampserver\\filterscripts\\lstkr.pwn(2055) : error 029: invalid expression, assumed zero
C:\\játékok\\sampserver\\filterscripts\\lstkr.pwn(2055) : warning 215: expression has no effect
C:\\játékok\\sampserver\\filterscripts\\lstkr.pwn(2056) : error 017: undefined symbol \"string\"
C:\\játékok\\sampserver\\filterscripts\\lstkr.pwn(2056) : warning 215: expression has no effect
C:\\játékok\\sampserver\\filterscripts\\lstkr.pwn(2056) : error 001: expected token: \";\", but found \"]\"
C:\\játékok\\sampserver\\filterscripts\\lstkr.pwn(2056) : error 029: invalid expression, assumed zero
C:\\játékok\\sampserver\\filterscripts\\lstkr.pwn(2056) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase
5 Errors.
[/quote]
-
), break;
Helyett:
) break;
if(string == \' \') spcpoz = i;
helyett:
if(string1 == \' \') spcpoz = i;
-
Itt a javított verzió:
new string1[] = \"Repülõtér, felsõ terminál\", string2[64], spcpoz;
for(new i = 0; i < strlen(string1); i++)
{
if(i > 22)
{
strmid(string2, string1, spcpoz+1, strlen(string1));
strmid(string1, string1, 0, spcpoz);
break;
}
if(string1 == \' \') spcpoz = i;
}
printf(string1); //Repülõtér, felsõ
printf(string2); //terminál
-
new string1[] = MegalloNev(nid,NPC_MEGALLO_JELENLEGI), string2[32], spcpoz;
C:\\játékok\\sampserver\\filterscripts\\lstkr.pwn(2052) : error 008: must be a constant expression; assumed zero
C:\\játékok\\sampserver\\filterscripts\\lstkr.pwn(2052) : error 029: invalid expression, assumed zero
C:\\játékok\\sampserver\\filterscripts\\lstkr.pwn(2052) : error 017: undefined symbol \"string2\"
C:\\játékok\\sampserver\\filterscripts\\lstkr.pwn(2052) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase
4 Errors.
[/quote]
-
new string1[128], string2[32], spcpoz;
format(string1, sizeof(string1), \"%s\", MegalloNev(nid, NPC_MEGALLO_JELENLEGI));
-
Köszönöm mindenkinek, aki segített javítani az ocsmány hibákat a kódomban. Megírtam egy eljárásnak is, hogy egyszerűbb legyen a használata:
splitspaces(string1[], string2[], limit = 22) {
new spcpoz = strlen(string1);
for(new i = 0; i != strlen(string1); i++) {
if(i > limit) {
strmid(string2, string1, spcpoz+1, strlen(string1), strlen(string1));
strmid(string1, string1, 0, spcpoz, strlen(string1));
break;
}
else if(string1 == \' \') spcpoz = i;
}
printf(string1);
printf(string2);
}
Használata:
new string1[] = \"Repülőtér, felső terminál\", string2[64];
splitspaces(string1, string2);
Eredmény:
-
new string1[128], string2[32], spcpoz;
format(string1, sizeof(string1), \"%s\", MegalloNev(nid, NPC_MEGALLO_JELENLEGI));
Igen igen közben kyzn és a saját magam erejével kijavitottam :D