Я хотел бы знать, как определить, относится ли вариант к объекту автоматизации OLE, или нет.OLE automation: как проверить, ссылается ли вариант объекта автоматизации
Я экспортирую графики Excel в Powerpoint.
У меня есть этот код:
var PptFile: Variant;
....
// PptFile _might_ be initialized:
PptFile:=pptApp.Presentations.Open(pptFilename);
// It depends on whether the export has items which need to be exported to
// Powerpoint or not
....
// I would like to determine if PptFile does reference an OLE automated object or not
PptFile.SaveAs(excelFileName+'.pptx');
Я знаю, это может быть сделано путем размещения последней строки кода (с SAVEAS) между try...except...end
, но я не чувствую, что такой подход является достаточно хорошим.
Я читал о VarIsEmpty
, VarIsEmptyParam
, Nothing, this question, но я не уверен в этом.
Кажется, что у моего Delphi 5 нет функции VarIsClear. – beerwin
Тогда вы можете бросить свои собственные. Код читает примерно так: 'Результат: = (VType = varEmpty) или (((VType = varDispatch) или (VType = varUnknown)) и (VDispatch = nil))' Теперь, как насчет моего последнего абзаца? Вам действительно нужно выполнить эту проверку? –
Спасибо. Я соглашусь с этим ответом, поскольку у него есть все (даже больше того), в котором я нуждаюсь. 'PptFile' не назначается, когда нет графиков для экспорта. Я знаю, это небрежное кодирование (не написанное мной, мне просто нужно что-то добавить к нему, и эта проблема остается на моем пути). Я мог бы рассчитывать экспортированные диаграммы, а если число равно нулю, пропустите этот 'PptFile.SaveAs (...)'. Спасибо за ваши усилия. – beerwin