SA-MP Forums

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

Reply
 
Thread Tools Display Modes
Old 03/06/2016, 08:11 AM   #651
Untonyst
Big Clucker
 
Untonyst's Avatar
 
Join Date: Dec 2015
Posts: 66
Reputation: 9
Default Re: Коллекция функций / макросов

Quote:
Originally Posted by Stepashka View Post
Чем не угодили встроенные функции min и max?
Сравнивают только два числа, когда мне нужно было больше.
__________________

GitHub account.
Untonyst is offline   Reply With Quote
Old 03/06/2016, 08:28 AM   #652
Untonyst
Big Clucker
 
Untonyst's Avatar
 
Join Date: Dec 2015
Posts: 66
Reputation: 9
Default Re: Коллекция функций / макросов

Quote:
Originally Posted by Mutha_X View Post
Те, что в ядре сравнивают только пару переменных (у автора почти произвольное кол-во, ограниченное макс числом аргументов функции), хотя их всё-равно можно вставить в его код.
PHP Code:
#define PROTECT_GETMAXMIN
GetIntMin(...) {
    new 
=  numargs()-1;
#if defined PROTECT_GETMAXMIN
    
if(i==-1){return 0;}
#endif
    
new val getarg(i);
    while(--
i) {val min(val,getarg(i));}
    return 
val;

GetIntMax(...) { 
    new 
=  numargs()-1;
#if defined PROTECT_GETMAXMIN
    
if(i==-1){return 0;}
#endif
    
new val getarg(i);
    while(--
i) {val max(val,getarg(i));}
    return 
val;

В таком виде при большом кол-ве итераций должен быть выигрыш по времени выполнения, т.к. меньше операций с памятью в пределах p-кода... хотя стоит проверить.

SoNikMells, твой код будет неадекватным в случае, если будут заданы только отрицательные числа.
Твоя функция сфейлилась на [10, 0, -5], но у меня и SoNikMells сфейлились на [-10, -2, -5].
__________________

GitHub account.
Untonyst is offline   Reply With Quote
Old 03/06/2016, 01:20 PM   #653
Mutha_X
Gangsta
 
Join Date: Sep 2009
Location: recursion
Posts: 630
Reputation: 24
Default Re: Коллекция функций / макросов

поправил (--i -> i--)
__________________
Russian forums: asking question - taking grammar notations.
Учитесь задавать вопросы по существу и изучать матчасть: иначе приобретайте лекарство "НИБОМБИН".
Mutha_X is offline   Reply With Quote
Old 21/10/2016, 01:51 PM   #654
OstGot
Gangsta
 
OstGot's Avatar
 
Join Date: Mar 2013
Location: Gomel, Belarus
Posts: 590
Reputation: 247
Default Re: Коллекция функций / макросов

Не знаю, выкладывались ли здесь до этого подобные функции (скорее всего да), но вот мой вариант функции fwrite, которая может корректно записывать в файл строку с русскими символами (в режиме ASCII). Синтаксис абсолютно тот-же, что и в обычной fwrite

Code:
stock fwriteASCII(File:fhandle, const string[])
{
	if(!fhandle) return 0;
	new stringlen = strlen(string);
	for(new i; i < stringlen; i++) fputchar(fhandle, string[i], false);
	return stringlen;
}
Использование:
Code:
new File:hfile = fopen("random.txt");
if(hfile)
{
	fwriteASCII(hfile, "Я просто текст");
	fclose(hfile);
}
Для подмены стандартной fwrite сразу после функции fwriteASCII вставьте следующее:
Code:
#if defined _ALS_fwrite
	#undef fwrite
#else
	#define _ALS_fwrite
#endif
#define fwrite fwriteASCII
__________________
aka Nexius
Don't want to always check for updates of my scripts?
Include it the last, after all others
Nexius's Update Checker
OstGot is offline   Reply With Quote
Old 21/10/2016, 03:56 PM   #655
OKStyle
High-roller
 
OKStyle's Avatar
 
Join Date: May 2008
Location: Russia
Posts: 3,011
Reputation: 112
Default Re: Коллекция функций / макросов

Все давно на fputchar'ах сделали...
__________________
O.K.Style™ Laboratory
Kalcor: "... it's makes the game look like it's not GTA. This mod is called San Andreas Multiplayer. It's not a custom game engine which you can script..."
OKStyle is offline   Reply With Quote
Old 21/10/2016, 04:40 PM   #656
ZiGGi
High-roller
 
ZiGGi's Avatar
 
Join Date: Sep 2008
Location: Russia
Posts: 1,625
Reputation: 274
Default Re: Коллекция функций / макросов

Quote:
Originally Posted by OstGot View Post
Не знаю, выкладывались ли здесь до этого подобные функции (скорее всего да), но вот мой вариант функции fwrite, которая может корректно записывать в файл строку с русскими символами (в режиме ASCII). Синтаксис абсолютно тот-же, что и в обычной fwrite
Просто эту проблему все решили сразу после её появления (с момента выхода 0.3a), тогда не то что этой темы, а даже русского раздела на этом форуме не было.
ZiGGi is offline   Reply With Quote
Old 21/10/2016, 05:10 PM   #657
OstGot
Gangsta
 
OstGot's Avatar
 
Join Date: Mar 2013
Location: Gomel, Belarus
Posts: 590
Reputation: 247
Default Re: Коллекция функций / макросов

Quote:
Originally Posted by ZiGGi View Post
Просто эту проблему все решили сразу после её появления (с момента выхода 0.3a), тогда не то что этой темы, а даже русского раздела на этом форуме не было.
В fixes я, кстати, этого исправления не увидел. Видел только действительно старую тему с неким подобием, но там в параметрах функции указывалось лишь название файла и строка, которую нужно туда записать. Понятное дело, использовать каждый раз такую функцию с постоянным открытием и закрытием файла не есть хорошо, потому и сделал аналогом обычного fwrite.
__________________
aka Nexius
Don't want to always check for updates of my scripts?
Include it the last, after all others
Nexius's Update Checker
OstGot is offline   Reply With Quote
Old 21/10/2016, 06:05 PM   #658
ZiGGi
High-roller
 
ZiGGi's Avatar
 
Join Date: Sep 2008
Location: Russia
Posts: 1,625
Reputation: 274
Default Re: Коллекция функций / макросов

Quote:
Originally Posted by OstGot View Post
В fixes я, кстати, этого исправления не увидел.
Да ему там делать нечего, я бы это даже багом не назвал - это скорее особенность. Функцию fwriteASCII лучше вызывать только для строк, в которых может находиться кириллица, а не для всех сразу. Не многим нужно обычный вызов fwrite заменять на множественные вызовы fputchar ради читаемых файлов (напомню, что fread прекрасно справляется со строками с кириллицей, сохранёнными с помощью fwrite).
ZiGGi is offline   Reply With Quote
Old 13/02/2017, 04:58 PM   #659
stabker
High-roller
 
stabker's Avatar
 
Join Date: Mar 2012
Location: Andromeda Galaxy
Posts: 1,292
Reputation: 84
Default Re: Коллекция функций / макросов

Несколько макросов, позволяющих сделать гораздо быстрее то, что обычно делается циклом.

PHP Code:
//обменивает содержимое массивов - swap_arrays(array_1[], array_2[], arrays_size)
#define swap_arrays(%0,%1,%2); \
                                
{ new _bf_[%2];\
                                
memcpy(_bf_, %00, (%2) * 4, %2);\
                                
memcpy(%0, %10, (%2) * 4, %2);\
                                
memcpy(%1_bf_0, (%2) * 4, %2); }

//очищает массив - clean_array(array[], size)
#define clean_array(%0,%1); \
                                
{ new _tpl_[%1]; \
                                
memcpy(%0_tpl_0, (%1) * 4, %1); }

//копирует содержимое массива в другой массив - copy_array(source[], destination[], size)
#define copy_array(%0,%1,%2) memcpy(%1, %0, 0, (%2) * 4, %2)

//заполняет ячейки массива указанной константой - fill_array(array[], value, size)
#define fill_array(%0,%1,%2); \
                                
{ new _tpl_[%2] = { %1, ... }; \
                                
memcpy(%0_tpl_0, (%2) * 4, %2); } 
__________________

Last edited by stabker; 12/11/2017 at 01:43 PM.
stabker is online now   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
SA-MP для Anderius, Criminal Russia, United и Gostown6 dimonml Русский/Russian 1002 07/07/2017 07:56 PM
Проблема с прорисовкой некоторых объект& ONIXS Русский/Russian 29 23/11/2011 05:24 PM
Символы, буковки, горячая замена ^Woozie^ Русский/Russian 23 27/02/2010 02:25 PM


All times are GMT. The time now is 01:50 AM.


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