Единственный способ, которым я вижу, - перегрузка функции Writeln:
procedure Writeln(wrt: Variant);
begin
System.Writeln(wrt);
end;
Вы должны либо изменить свой обработчик исключений, чтобы использовать System.Writeln
, либо объединить строки, потому что число открытых параметров не поддерживается для функций Delphi.
Edit:
Как вы упомянули в своем комментарии, вы получаете ошибку при попытке использовать вашу запись в качестве индекса массива.
Это связано с тем, что индексам массивов, как и некоторым другим конструкциям, таким как, например, переменные цикла и переключатели case
, требуются порядковые типы (например, Integer
, Byte
, Word
...).
Передача записи не будет работать, потому что запись не является порядковым типом. Возможность привести его к порядковому типу не делает его единым целым.
Существует простое решение:
Определите TMyRangeEnum
как отдельный тип, без записи с приложением.
Это решит не только проблемы, с которыми вы столкнулись, но и проблемы, с которыми вы еще не сталкивались:
MyValue := 91;
приведет к ошибке компилятора вместо установки недопустимого значения для переменной enum.
И так будет:
MyValue := 256;
приведет к такой ошибке вместо переполнения (вместо него будет назначено 0, что также не является допустимым значением в перечислении).