PDA

Просмотр полной версии : [Вопрос] Размер массива



PawnoNoob
29.05.2018, 00:48
Приветствую! Буду краток. Допустим, есть у меня массив:
new test[10][] =
{
{1, 2, 3, 4, 5},
{1, 2, 3},
{4, 5, 6}
};

Можно ли узнать размер определённой строки в массиве? (допустим, количество значений во второй)

Daniel_Cortez
29.05.2018, 01:14
ИМХО, проще всего через трюки с emit узнать смещения строк (в Pawn эти смещения хранятся перед данными в многомерных массивах) и по их разнице вычислить количество элементов в строке.
Также можно обойтись и без emit, добившись доступа к массиву по отрицательному индексу, чтобы вместо данных считать те самые смещения (в многомерных массивах правильность индекса не проверяется, поэтому ошибки времени выполнения быть не должно) - похожим образом я недавно делал конкатенацию строк (http://pro-pawn.ru/showthread.php?16225&p=91101&viewfull=1#post91101).

PawnoNoob
29.05.2018, 01:18
Хм, это, конечно, слишком сложно, но я попробовал сделать так (вывести через команду):
strlen(test[params[0]])

и, вроде как, показало количество. Правильно ли?:dntknw:

Daniel_Cortez
29.05.2018, 16:25
Хм, это, конечно, слишком сложно, но я попробовал сделать так (вывести через команду):
strlen(test[params[0]])

и, вроде как, показало количество. Правильно ли?:dntknw:
Точно так же правильно, как пытаться есть суп вилкой. Функция strlen() предназначена для строк, в вашем же массиве не строки, а просто данные (если верить предоставленному вами же примеру).

VVWVV
29.05.2018, 23:52
Собственно я уже писал подобную функцию ещё год назад (http://pro-pawn.ru/showthread.php?14980#post82780)

ziggi
30.05.2018, 10:33
Хм, это, конечно, слишком сложно, но я попробовал сделать так (вывести через команду):
strlen(test[params[0]])

и, вроде как, показало количество. Правильно ли?:dntknw:

Попробуй в середину вставить 0, и проверь результат после этого.