Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

[ROZWIĄZANE] Łączenie stringów.


  • Zamknięty Temat jest zamknięty
9 odpowiedzi w tym temacie

#1 Nitroexe

    Banned

  • Zbanowany

Reputacja: 0
Nowy

  • Postów:28
  • Imię:Wojtek
  • Lokalizacja:Bydgoszcz
Offline

Napisano 13.08.2012 21:57

Witam mam dwa pytania choć to pierwsze będzie takie z ciekawości.
1. Są jakies ograniczenia co do długości stringów?
2. Jak łaczyć stringi do jednej zmiennej? Przykład mam 3 stringi.

new a
new b
new c
new d

i chce aby zmienna "d" miała zawartość w kolejności "abc". Dzięki z góry za pomoc. Szukałem tego ale znalazłem tylko format ale ta opcja jest zawiła... w dephi np. jest, że wystarczy dać +, czy tam kropke nie wiem bo mota mi się trochę z php.
d = a + b +c

O coś takiego mi chodzi z tym, że to mają być stringi a nie integery

#2 fgsfds

    Pomocny

  • Użytkownik

Reputacja: 18
Początkujący

  • Postów:65
Offline

Napisano 13.08.2012 22:33

1. Nie jestem pewien dokładnie, ale na pewno zmieścisz 1024 znaków a nawet więcej, więc tym bym się nie martwił.
2. Do łączenia stringów możesz wykorzystać "format" albo "formatex". Nie są aż tak strasznie zawiłe jak mówisz, popatrz.

new a[32] = "Nitroexe"
new b[32] = "sie"
new c[32] = "uczy"
new d[128]
formatex(d, charsmax(d), "%s %s %s", a, b, c)
// d w tym miejscu powinno mieć wartość "Nitroexe sie uczy"


Nie testowałem, ale nie mam pojęcia co mogłoby tutaj pójść źle :P

Użytkownik Maxorq edytował ten post 13.08.2012 22:33

  • +
  • -
  • 0

#3 Nitroexe

    Banned

  • Autor tematu
  • Zbanowany

Reputacja: 0
Nowy

  • Postów:28
  • Imię:Wojtek
  • Lokalizacja:Bydgoszcz
Offline

Napisano 13.08.2012 23:18

A jak d nie jest puste to się nie zresetuje? Pytam bo teraz nie mogę przetestować. Chodzi mi o to, że w tym przykładzie co podałeś D było by np. NitroSieNieUczy

#4 fgsfds

    Pomocny

  • Użytkownik

Reputacja: 18
Początkujący

  • Postów:65
Offline

Napisano 13.08.2012 23:24

Nie wiem co miałoby się zresetować, sprecyzuj.
I w przykładzie byłoby "Nitroexe sie uczy", tak, ze spacjami ponieważ dałem "%s %s %s", a nie "%s%s%s".
Małe różnice.
  • +
  • -
  • 0

#5 Nitroexe

    Banned

  • Autor tematu
  • Zbanowany

Reputacja: 0
Nowy

  • Postów:28
  • Imię:Wojtek
  • Lokalizacja:Bydgoszcz
Offline

Napisano 13.08.2012 23:34

Gdyby d było NitroSieNieUczy to po formacie byłoby NitroSieNieUczy nitroexe sie uczy
?

#6 fgsfds

    Pomocny

  • Użytkownik

Reputacja: 18
Początkujący

  • Postów:65
Offline

Napisano 13.08.2012 23:39

Nie mam w ogóle pojęcia skąd wziąłeś "nie", ale jeśli dobrze rozumiem o co ci chodzi, to "format" ZASTĘPUJE całą zmienną.
Przy tworzeniu zmiennej:
new d[128]

jest ona kompletnie pusta.
Po wykonaniu tej linijki
formatex(d, charsmax(d), "%s %s %s", a, b, c)

Przyjmie ona wartość dokładnie "Nitroexe sie uczy"
Jeśli wykonasz ją jeszcze raz w takim samym stanie, wartość będzie identyczna.
Ale jeśli dla przykładu wykonasz po niej linijkę
formatex(d, charsmax(d), "%s %s nie %s", a, b, c)

wtedy wartość d będzie równa "Nitroexe sie nie uczy"
Postaraj się powoli przeczytać, to zrozumiesz o co chodzi.

Użytkownik Maxorq edytował ten post 13.08.2012 23:40

  • +
  • -
  • 0

#7 Cypis'

    Master

  • Przyjaciel

Reputacja: 1 162
Super Hero

  • Postów:965
  • GG:
  • Steam:steam
  • Lokalizacja:polska
Offline

Napisano 14.08.2012 00:09

http://amxx.pl/dokumentacja/f1365/add



new d[64]
add(d, 63, "a"); //d = a
add(d, 63, "b"); //d = a + b
add(d, 63, "c"); //d = a + b + c

Użytkownik Cypis' edytował ten post 14.08.2012 00:12

  • +
  • -
  • 1

#8 speedkill

    Godlike

  • Przyjaciel

Reputacja: 1 592
Godlike

  • Postów:2 733
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Prudnik
Offline

Napisano 14.08.2012 08:22

1. Nie jestem pewien dokładnie, ale na pewno zmieścisz 1024 znaków a nawet więcej, więc tym bym się nie martwił.
2. Do łączenia stringów możesz wykorzystać "format" albo "formatex". Nie są aż tak strasznie zawiłe jak mówisz, popatrz.

new a[32] = "Nitroexe"
new b[32] = "sie"
new c[32] = "uczy"
new d[128]
formatex(d, charsmax(d), "%s %s %s", a, b, c)
// d w tym miejscu powinno mieć wartość "Nitroexe sie uczy"


Nie testowałem, ale nie mam pojęcia co mogłoby tutaj pójść źle :P

Kolega dał formatex, a ja dam przykład pokazania tego zadania.
client_print(id,3,"%s",d)
Wydaje mi się, że w tym przykładzie najlepiej jest użyć formatex, ale wersji cypis'a też jest poprawna ;)

Tak dla ścisłości formatex jest szybsze od format.
G[o]Q (14.08.2012 18:00):
i przy okazji upośledzone względem format :D

  • +
  • -
  • 0

If you can dream it, you can do it.


#9 Nitroexe

    Banned

  • Autor tematu
  • Zbanowany

Reputacja: 0
Nowy

  • Postów:28
  • Imię:Wojtek
  • Lokalizacja:Bydgoszcz
Offline

Napisano 14.08.2012 10:58

http://amxx.pl/dokumentacja/f1365/add



new d[64]
add(d, 63, "a"); //d = a
add(d, 63, "b"); //d = a + b
add(d, 63, "c"); //d = a + b + c


Dzięki to najbardziej odpowiednie jest dla mnie.

#10 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 14.08.2012 12:13

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, Dołączona grafika raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo





Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych