Проведите процедуру, которая выглядит как
Procedure TestProc(TVar1, TVar2 : variant);
Begin
TVar1 := CreateOleObject('Excel.Application');
TVar1.Workbooks.open('C:\Test\Test.xls');
TVar1.Workbooks[1].Worksheets[1].Name := 'Sheet_1';
TVar2 := TVar1.Workbooks[1].Worksheets['Sheet_1'];
End;
Примечание: TVar1 и TVar2 - глобальные переменные.
Вызов процедуры в событии onclick кнопки, а затем использование созданных объектов не работает
Дело в том, что delphi не позволяет создавать процедуры с вариантными параметрами ???
Ответ 1 · рейтинг 8 · dthorpe
В представленном вами примере кода TVar1 и TVar2 являются не глобальными переменными, это локальные параметры. Они не помечены как var params, поэтому они получат копию любых значений параметров, переданных в вызов функции, и любые изменения, внесенные в эти локальные переменные, не будут переданы обратно вызывающей стороне. Не имеет значения, есть ли также глобальные переменные с именами TVar1 и TVar2, объявленные где-то еще, в этой процедуре локальные параметры будут иметь приоритет.
Если вы хотите передать изменения обратно вызывающей стороне, объявите параметры как параметры var.
Procedure TestProc(var TVar1, TVar2 : variant);