Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.12.25;
Скачать: CL | DM;

Вниз

как правильнее организовать доступ к списку из 2-х процедур   Найти похожие ветки 

 
Scott Storch   (2011-09-19 12:54) [0]

Есть метод ProcA, который внутри себя имеет процедуру ProcB. Из обоих процедур нужно рабоать с одним списком List. Как правильнее организовать доступ к списку из обоих процедур.

1-вариант:


procedure TForm1.ProcA;

 procedure ProcB(List: TStrings);
 begin

 end;

var
 List: TStrings;
begin
 List := TStringList.Create;
 try
   ProcB(List);
 finally
   FreeAndNil(List);
 end;
end;


2-й вариант


procedure TForm1.ProcA;
var
 List: TStrings;

 procedure ProcB;
 begin

 end;

begin
 List := TStringList.Create;
 try
   ProcB;
 finally
   FreeAndNil(List);
 end;
end;


 
stas ©   (2011-09-19 12:59) [1]

В данном случае во втором варианте, сохранишь 4 байта ОЗУ.
А так без разницы.


 
Медвежонок Пятачок ©   (2011-09-19 13:03) [2]

Из обоих процедур нужно рабоать с одним списком List.

Да хоть из миллиона процедур.
Какая разница-то?


 
stas ©   (2011-09-19 13:05) [3]

1-й вариант имеет смысл если будешь делать так :

procedure TForm1.ProcA;

procedure ProcB(List: TStrings);
begin

end;

var
List1: TStrings;
List2: TStrings;
begin
List1 := TStringList.Create;
List2 := TStringList.Create;
try
  ProcB(List1);
  ProcB(List2);
finally
  FreeAndNil(List1);
  FreeAndNil(List2);

end;

end;


 
Ega23 ©   (2011-09-19 13:31) [4]


> 1-вариант:
> 2-й вариант


3-й вариант:

type

 TForm1 = class (TForm)
  .....
 private
   procedure ProcB(Strings: TStrings);
  ......
 public
   .....
   procedure ProcA;
   .....
 end;  


 
RWolf ©   (2011-09-19 14:59) [5]


> Scott Storch   (19.09.11 12:54) 

вариант 1 обычно нагляднее, т.к. явно описано, что ProcB использует указанный аргумент, а не контекст охватывающей процедуры. Кроме того, можно её при необходимости безболезненно вынести уровнем выше без переделок в коде.



Страницы: 1 вся ветка

Текущий архив: 2011.12.25;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.008 c
2-1316260397
KateriNa
2011-09-17 15:53
2011.12.25
Помогите пожалуйста


2-1315479852
dEN
2011-09-08 15:04
2011.12.25
Удалить определенные символы в строке


3-1268903413
rar
2010-03-18 12:10
2011.12.25
BLOB -> Oracle


15-1315505298
Dimka Maslov
2011-09-08 22:08
2011.12.25
Как можно отучить


11-1236511074
Jon
2009-03-08 14:17
2011.12.25
CreateRestrictedToken