У чисел с плавающей точкой также есть особенный тип данных – TDateTime. Его надо обрабатывать не так, как остальные числа с плавающей точкой, поскольку него в OLE есть отдельный тип данных OleDate.
Code: |
tkFloat: begin if (PropInfo^.PropType^ = System.TypeInfo(TDateTime)) or (PropInfo^.PropType^ = System.TypeInfo(TDate)) then begin // Помещаем значение свойства в промежуточную // переменную типа TDateTime DT := GetFloatProp(FOwner, PropInfo); Value := DT; end else Value := GetFloatProp(FOwner, PropInfo); end; |
В случае свойства типа «набор» (Set), не имеющего аналогов в OLE будем возвращать строку с установленными значениями набора, перечисленными через запятую
Code: |
tkSet: begin // Получаем значение свойства (битовая маска) I := GetOrdProp(FOwner, PropInfo); // Получаем информацию RTTI Data := GetTypeData(PropInfo^.PropType^); TypeInfo := Data^.CompType^; // Формируем строку с набором значений S := ''; if I <> 0 then begin for K := 0 to 31 do begin J := 1 shl K; if (J and I) = J then S := S + GetEnumName(TypeInfo, K) + ','; end; // Удаляем запятую в конце System.Delete(S, Length(S), 1); end; Value := S; end; |
И, наконец, тип Variant не вызывает никаких сложностей.
Code: |
tkVariant: Value := GetVariantProp(FOwner, PropInfo); else // Остальные типы не поддерживаются Result := DISP_E_MEMBERNOTFOUND; end; end; |
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!