Ответ довольно прост: если у вас нет каких-либо сообщений об ошибках на этапе компиляции, все в порядке.
Ну, в соответствии с тем, что вы описали, ваш код выглядит хорошо.У меня есть вопрос по этому поводу.
Планируете ли вы иметь отрицательные индексы для вашего типа TArray?Если нет, почему бы вам не использовать тот же тип, что и для вашего дискриминанта?
Единственное, что у вас будет только половина значений с использованием Positive вместо Integer, но в вашей записи вы все равно уже начинаете с1 и, следовательно, имеют тот же диапазон, что и положительный.