Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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


Scott Storch ©   (2011-09-19 12:54:00) 

Есть метод 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;


RWolf   (2011-09-19 14:59:00) [1]


> Scott Storch   (19.09.11 12:54) 

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


Ega23   (2011-09-19 13:31:00) [2]


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


3-й вариант:

type

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


stas   (2011-09-19 13:05:00) [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;


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

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

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


stas   (2011-09-19 12:59:00) [5]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо