У меня есть эта рабочая часть кода доступа к Перспективы AppointmentItem.PropertyAccessor.GetProperties метод:Что такое "Вариант типа (Ошибка)"?
var
lPropertyAccessor: OLEVariant;
lDT : TDateTime;
lSchemas, lValues: Variant;
lPropertyAccessor := AAppointmentItem.PropertyAccessor;
lSchemas := VarArrayOf([cPublicStringNameSpace + PROPERTY_TIMETELLID + 'fail',
cPublicStringNameSpace + PROPERTY_TIMETELLSYNCTIME,
cPublicStringNameSpace + PROPERTY_TIMETELLSYNCID]);
try
lValues := lPropertyAccessor.GetProperties(lSchemas);
lEvent.CustSyncTTID := lValues[0];
lDT := lValues[1];
lDT := TTimeZone.Local.ToLocalTime(lDT);
lEvent.CustSyncDate := lDT;
lEvent.CustSyncEntryID := lValues[2];
except
end;
Я причиной этого потерпеть неудачу в первый элемент массива («+" провал»), потому что я хочу, чтобы проверить, что документация говорит:
If an error occurs for getting a specific property, the Err value will be returned in the corresponding location in the returned array.
После вызова GetProperties, в соответствии с окном инспектора, lValues [0] содержит: Error (-2147221233).
Я попытался найти Windows с константой с этим значением, чтобы я мог протестировать ее (если lValues [0] <> MagicalWindowsConst then ...), но я не могу найти его или его шестиугольный эквивалент FFFFFFFF8004010F (даже в исходных файлах Embarcadero).
Если я позволю код продолжать, целое задание на lEvent.CustSyncTTID дает:
«Не удалось преобразовать вариант типа (Error) в тип (Integer)»
Это было бы предположить, есть некоторые «ошибки 'вариантный тип ??? Я тоже не могу этого найти.
Я пробовал определять const cErr = -2147221233
или const cErr : Int64 = -2147221233
, но это дает мне ошибку Недействительного варианта операции на if lValues[0] <> cErr
.
Что я могу проверить, чтобы определить, возвращает ли элемент массива код ошибки?
Если разбить 'HRESULT' мы видим, что ведущий' 8' указывает на ошибку, ' SEVERITY_ERROR', объект - '4',' FACILITY_ITF', а код - '0x010F'. «FACILITY_ITF» означает «Фактический смысл ошибки определяется интерфейсом. То есть два HRESULT с точно таким же 32-битным значением, возвращаемым с двух разных интерфейсов, могут иметь разные значения». Вы используете Outlook и эта ошибка из Outlook: «Файл данных Outlook недоступен». –