SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Русский/Russian

Reply
 
Thread Tools Display Modes
Old 11/11/2013, 10:24 PM   #1
Ted67
Big Clucker
 
Join Date: Dec 2012
Posts: 150
Reputation: 0
Default Неограниченное кол-во параметров в функции (массивы...)

Здравствуйте, есть ли возможность сделать в функции неограниченное кол-во параметров чтобы и массивы могли быть в качестве параметров функции?

В вики написано что "getarg НЕ работает с массивами в качестве параметра !", поэтому прошу помощи у вас (перейти).

Заранее благодарю за помощь!
Ted67 is offline   Reply With Quote
Old 12/11/2013, 03:12 AM   #2
Stepashka
Godfather
 
Stepashka's Avatar
 
Join Date: Jul 2008
Location: near PC
Posts: 5,763
Reputation: 142
Default Re: Неограниченное кол-во параметров в функции (массивы...)

Я так полагаю имеется в виду что не будет работать при виде функции:
pawn Code:
myFunction(argArray[]) {
}
Данная функция не сможет получить количество аргументов в массиве, но если это будет строка то пожалуйста.
Просто нужно понимать что есть строка, а что массив, в виду того что в pawn это почти одно и то же.
__________________
Клятва Страуструпа: "Я обязуюсь прилежно комментировать свой код, не использовать goto и следить за состоянием своих потоков и выделяемой памяти. Я обязуюсь не оставлять мусора в системе и избегать однобуквенных переменных. Ресет." © Куч
M&M GM
Status: ON HOLD

Stepashka is offline   Reply With Quote
Old 12/11/2013, 10:11 PM   #3
Ted67
Big Clucker
 
Join Date: Dec 2012
Posts: 150
Reputation: 0
Default Re: Неограниченное кол-во параметров в функции (массивы...)

Quote:
Originally Posted by Stepashka View Post
Я так полагаю имеется в виду что не будет работать при виде функции:
pawn Code:
myFunction(argArray[]) {
}
Данная функция не сможет получить количество аргументов в массиве, но если это будет строка то пожалуйста.
Просто нужно понимать что есть строка, а что массив, в виду того что в pawn это почти одно и то же.
Ок. Ясно.
А если использовать такой вариант?

pawn Code:
new FALSE = false;
#define SendMessageEx(%0,%1,%2) do{new str[128];format(str, 128, %1, %2);SendClientMessage(%0, -1, str);}while(FALSE)

Просто если можно сделать макрос, зачем тогда сделали через функцию? От нечего делать?:

pawn Code:
#define BYTES_PER_CELL              4

stock SendClientMessageFormatted(playerid, color, fstring[], {Float, _}:...)
{
    static const STATIC_ARGS = 3;
    new n = (numargs() - STATIC_ARGS) * BYTES_PER_CELL;
    if(n)
    {
        new message[144],arg_start,arg_end;
        #emit CONST.alt        fstring
        #emit LCTRL          5
        #emit ADD
        #emit STOR.S.pri        arg_start

        #emit LOAD.S.alt        n
        #emit ADD
        #emit STOR.S.pri        arg_end
        do
        {
            #emit LOAD.I
            #emit PUSH.pri
            arg_end -= BYTES_PER_CELL;
            #emit LOAD.S.pri      arg_end
        }
        while(arg_end > arg_start);

        #emit PUSH.S          fstring
        #emit PUSH.C          144
        #emit PUSH.ADR         message

        n += BYTES_PER_CELL * 3;
        #emit PUSH.S          n
        #emit SYSREQ.C         format

        n += BYTES_PER_CELL;
        #emit LCTRL          4
        #emit LOAD.S.alt        n
        #emit ADD
        #emit SCTRL          4

        if(playerid == INVALID_PLAYER_ID)
        {
            #pragma unused playerid
            return SendClientMessageToAll(color, message);
        } else {
            return SendClientMessage(playerid, color, message);
        }
    } else {
        if(playerid == INVALID_PLAYER_ID)
        {
            #pragma unused playerid
            return SendClientMessageToAll(color, fstring);
        } else {
            return SendClientMessage(playerid, color, fstring);
        }
    }
}

Есть какая-то разница между вариантом "через макрос" и этим?
Ted67 is offline   Reply With Quote
Old 13/11/2013, 05:26 AM   #4
Stepashka
Godfather
 
Stepashka's Avatar
 
Join Date: Jul 2008
Location: near PC
Posts: 5,763
Reputation: 142
Default Re: Неограниченное кол-во параметров в функции (массивы...)

А сам проверить не можешь?
ЗЫ:
pawn Code:
#define TRUE true
#define FALSE false
__________________
Клятва Страуструпа: "Я обязуюсь прилежно комментировать свой код, не использовать goto и следить за состоянием своих потоков и выделяемой памяти. Я обязуюсь не оставлять мусора в системе и избегать однобуквенных переменных. Ресет." © Куч
M&M GM
Status: ON HOLD

Stepashka is offline   Reply With Quote
Old 13/11/2013, 12:21 PM   #5
Ted67
Big Clucker
 
Join Date: Dec 2012
Posts: 150
Reputation: 0
Default Re: Неограниченное кол-во параметров в функции (массивы...)

Quote:
Originally Posted by Stepashka View Post
А сам проверить не можешь?
ЗЫ:
pawn Code:
#define TRUE true
#define FALSE false
К сожалению нет. Просто не вижу смысла, могу только предположить что скорость работы разная (функция работает дольше в данном случае).
Ted67 is offline   Reply With Quote
Old 13/11/2013, 01:00 PM   #6
Mutha_X
Gangsta
 
Join Date: Sep 2009
Location: recursion
Posts: 658
Reputation: 37
Default Re: Неограниченное кол-во параметров в функции (массивы...)

Товарищь, вам бы прочитать как работает компилятор...
Mutha_X is offline   Reply With Quote
Old 13/11/2013, 04:09 PM   #7
eakwarp
High-roller
 
Join Date: Feb 2007
Posts: 1,912
Reputation: 131
Default Re: Неограниченное кол-во параметров в функции (массивы...)

Quote:
Originally Posted by Stepashka View Post
А сам проверить не можешь?
ЗЫ:
pawn Code:
#define TRUE true
#define FALSE false
pawn Code:
#define TRUE false
#define FALSE true
Будь плохим мальчиком.

Не смог удержаться.
__________________
More than 10 years of development, more than 40 mb(sic! 1 kk lines+) of source code, more than a two hundred units and more than 35k revisions(upd. aug 2017). Valakas Roleplay - choose your role.

Как правило, то, что делаю я, лишь через годы начинают делать другие, но потом, обязательно мне ставят в укор, "ой, да это уже у всех есть"...



[Gamemode] Valakas Trucker Roleplay (Russian).
eakwarp is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Проверка функции serpip Русский/Russian 2 11/10/2013 07:22 PM
Как правильно сравнить строки? Skin123 Русский/Russian 2 28/08/2013 04:14 PM
Форматирование строки Ted67 Русский/Russian 37 16/04/2013 10:39 AM
Содержание строки Xa0s Русский/Russian 4 17/01/2012 12:19 PM
Функция разделения строки -Stranger- Русский/Russian 3 16/01/2012 06:42 AM


All times are GMT. The time now is 02:35 AM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.