Сообщение от
BadPawn
Чем можно заменить strins, если это не format?
Можно к примеру, использовать в строке 2 strcat, но не будет ли это проблемно?...:
PHP код:
static str[49 + MAX_PLAYER_NAME] = "SELECT * FROM `players` WHERE `player_name` = '";
strcat(str, PlayerName(playerid), MAX_PLAYER_NAME);
strcat(str, "'", 1);
Можно исправить strins, в fixes.inc это реализовано так:
PHP код:
/*
* FIXES_strins(string[], const substr[], pos, maxlength = sizeof string)
*
* FIXES:
* strins
*/
#if defined _ALS_strins
#error _ALS_strins defined
#endif
native BAD_strins(string[], const substr[], pos, maxlength = sizeof string) = strins;
#if FIX_strins
stock FIXES_strins(string[], const substr[], pos, maxlength = sizeof string)
{
if (string[0] > 255)
{
new
strlength = strlen(string),
sublength = strlen(substr),
m4 = maxlength * 4;
// Packed - format doesn't like these strings.
if (strlength + sublength >= m4)
{
if (pos + sublength >= m4)
{
return
string{pos} = '\0',
// Hopefully this doesn't ignore maxlength and does packed.
strcat(string, substr, maxlength);
}
else
{
// pos + sublength is less than maxlength, so this sum MUST
// be positive and gte than "pos", so there's no need for
// additional checks.
string{maxlength - sublength - 1} = '\0';
}
}
return strins(string, substr, pos, maxlength);
}
else if (substr[0] > 255)
{
new
strlength = strlen(string),
sublength = strlen(substr);
// Packed - format doesn't like these strings.
if (strlength + sublength >= maxlength)
{
if (pos + sublength >= maxlength)
{
return
string[pos] = '\0',
// Hopefully this doesn't ignore maxlength and does packed.
strcat(string, substr, maxlength);
}
else
{
// pos + sublength is less than maxlength, so this sum MUST
// be positive and gte than "pos", so there's no need for
// additional checks.
string[maxlength - sublength - 1] = '\0';
}
}
return strins(string, substr, pos, maxlength);
}
else
{
return format(string, maxlength, "%.*s%s%s", pos, string, substr, string[pos]);
}
}
#define _ALS_strins
#define strins FIXES_strins
#endif
Если ты не используешь запакованные строки, то можно использовать эту функцию:
PHP код:
stock _strins(string[], const substr[], pos, maxlength = sizeof string)
{
return format(string, maxlength, "%.*s%s%s", pos, string, substr, string[pos]);
}