У меня есть объект класса Delphi 6, который содержит массив из 30 вариантов, каждый из которых предоставляется через свое индексируемое свойство.Например:
property responseCode: integer
Index 7 read getIndexedProperty_integer write setIndexedProperty_integer;
Я сделал это, чтобы упростить использование массива вариантов (помогает автозаполнению среды IDE) и обеспечить безопасность типов.Работает нормально но теперь у меня морщины.Массив Variants инициализируется значением NULL при создании класса, который его оборачивает, поэтому я могу сказать, был ли конкретный вариант когда-либо создан со значением.Следствием этого является то, что если создаются только некоторые из вариантов (с заданными допустимыми значениями), любая попытка получить доступ к свойству, которое в настоящее время представляет вариант NULL, приведет к ошибке преобразования варианта, когда Delphi попытается преобразовать вариант в тип, объявленныйиндексированное свойство.
Я бы предпочел не объявлять свойство "isValid" для каждого индексированного свойства.Мне было интересно, есть ли способ использовать библиотеку TypeInfo для получения необработанного значения базового варианта без необходимости прямого доступа к индексируемому свойству и, таким образом, запускает исключение преобразования.Тогда я мог бы написать код (используя свойство примера выше):
isValidProperty(responseCode);
, и эта функция вернула бы TRUE, если Variant, лежащий в основе свойства responseCode, не равен NULL, а FALSE, если он есть.
Я знаю, что могу просмотреть список свойств PPropList для класса и получить доступ к свойствам по имени, но тогда мне придется использовать код, подобный следующему:
isValidProperty('responseCode');
и передавать имя свойства в виде строки вместо передачив свойстве прямо как первый isValidProperty () выше.Есть ли способ сделать это?