Ispacked

Материал из Pawno Info Wikipedia

Описание:

Проверяет, является ли строка упакованной, или нет.


Параметры:

(string[])
stringстрока для проверки на факт упаковки.


Возвращаемые значения:

false - если строка не запакована.
true - если строка запакована.


Wiki note.png

Примечание

Это имя функции начинается со строчной буквы.


Wiki bug.png

Баг Pawn

Функция возвращает неправильное значение, если упакованная строка начинается с ячейки, в которой самый значимый бит установлен в 1:
ispacked(!"строка") // выдаст false, хотя строка упакованная


Wiki tip.png

Подсказка

Для исправления бага с функцией используйте следующий код:
stock ispacked(string[])
{
	#emit lref.s.pri string
	#emit const.alt  ucharmax
	#emit geq
	#emit retn
	return 0;
}


Пример использования:

stock PrintPackStatus(const name[], const string[]) printf("Строка %s %sупакована", name, ispacked(string) ? "" : "не ");
main()
{
// Строка str1 упакована, а str2 объявлена в неупакованном виде.
	new str1[] = !"abcd";
	new str2[] = "efgh";
// Выведем информацию о том, упакованы ли строки
	PrintPackStatus("str1", str1); // "Строка str1 упакована"
	PrintPackStatus("str2", str2); // "Строка str2 не упакована"
// Теперь распакуем str1 и, наоборот, упакуем str2
	strpack(str1, str1);
	strunpack(str2, str2);
// Выведем информацию об упакованности строк ещё раз
	PrintPackStatus("str1", str1); // "Строка str1 не упакована"
	PrintPackStatus("str2", str2); // "Строка str2 упакована"
}


Связанные функции

Следующие функции также могут быть полезны, поскольку они так или иначе связаны с рассматриваемой функцией.