Delphi 7 Процедура с вариантными параметрами

Проведите процедуру, которая выглядит как

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 не позволяет создавать процедуры с вариантными параметрами ???


person KE50    schedule 02.07.2012    source источник
comment
Обратите внимание, что префикс T используется для обозначения типа, а не переменной. Ваши переменные должны называться Var1 и Var2. Тем не менее, я бы назвал их ExcelApp и Worksheet, потому что это дает вам больше шансов сразу понять, что означает ваш код.   -  person David Heffernan    schedule 02.07.2012


Ответы (1)


В представленном вами примере кода TVar1 и TVar2 являются не глобальными переменными, это локальные параметры. Они не помечены как var params, поэтому они получат копию любых значений параметров, переданных в вызов функции, и любые изменения, внесенные в эти локальные переменные, не будут переданы обратно вызывающей стороне. Не имеет значения, есть ли также глобальные переменные с именами TVar1 и TVar2, объявленные где-то еще, в этой процедуре локальные параметры будут иметь приоритет.

Если вы хотите передать изменения обратно вызывающей стороне, объявите параметры как параметры var.

Procedure TestProc(var TVar1, TVar2 : variant);
person dthorpe    schedule 02.07.2012
comment
Передача переменных по ссылке - это на самом деле то, что мне нужно было сделать, спасибо всем за ваш вклад - person KE50; 03.07.2012