TSet = (Sorted, Reversed, Random);
Это объявление сделало Random константой с более высоким приоритетом видимости, чем System.Random.
Варианты решения:
В новых Delphi можно написать (в начале кода)
{$SCOPEDENUMS ON}
и заменить
if ArrType = TSet.Sorted then
// …
else if ArrType = TSet.Reversed then
Тогда TSet.Random не сможет пересекаться с System.Random
Можно, наоборот, при использовании System.Random указывать полностью квалифицированный идентификатор:
ArrI[i] := System.Random(Row);
Либо можно просто переименовать TSet.Random во что-то, что не в точности Random