我有这段工作代码访问 Outlook 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;
我导致第一个数组条目(“+'fail'”)失败,因为我想测试文档所说的内容:
If an error occurs for getting a specific property, the Err value will be returned in the corresponding location in the returned array.
调用GetProperties后,根据inspector窗口,lValues[0]包含:Error(-2147221233)。
我试图找到一个具有此值的 Windows 命名常量,以便可以对其进行测试(如果 lValues[0] <> MagicalWindowsConst 则...),但我找不到它或其十六进制等效 FFFFFFFF8004010F(甚至在Embarcadero 源文件)。
如果我让代码继续,lEvent.CustSyncTTID 的整数赋值给出:
“无法将类型(错误)的变体转换为类型(整数)”
这表明存在一些“错误”变体类型???我也找不到那个。
我尝试定义const cErr = -2147221233
orconst cErr : Int64 = -2147221233
但这给了我一个 Invalid Variant Operation 错误if lValues[0] <> cErr
。
我可以测试什么来确定数组元素是否返回错误代码?