2014-08-31 4 views
1

У меня есть функция QBasic, которая принимает два массива в качестве параметров. Я хотел бы знать, можно ли найти количество измерений, которые имеют эти массивы в функции.Как найти размеры параметра массива в QBasic

Для контекста я пишу функцию assertArrayEqual для библиотеки тестирования модулей QBasic.

+2

Вы могли бы быть в состоянии сделать это, позвонив 'LBOUND' /' UBOUND' и поймать ошибку, когда размер выходит за пределы диапазона, но обработка ошибок QBasic является довольно некрасиво. Я думаю, вам может быть лучше сделать отдельные функции для разных измерений. – Boann

ответ

0

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

+0

Если вы проверите верхние границы размеров массива в цикле до появления ошибки, вы можете подсчитать размеры. – eoredson

0

Это можно сделать, но это не очень: (источник QB64).

REM sample code to find number of dimensions in an array 
DIM a(2, 2, 2) AS INTEGER 
DIM SHARED E AS INTEGER 
ON ERROR GOTO 10 
CALL array(a()) 
END 
10 E = -1: RESUME NEXT 
SUB array (a() AS INTEGER) 
DO 
    X = X + 1 
    T = UBOUND(a, X) 
    IF E THEN 
     X = X - 1 
     PRINT "Array has"; X; "dimensions." 
     EXIT DO 
    END IF 
LOOP 
END SUB 
+0

Ошибка, которая произойдет, равна 9 (индекс вне диапазона) и может быть захвачен. – eoredson

Смежные вопросы