Форум: "Начинающим";
Текущий архив: 2011.12.25;
Скачать: [xml.tar.bz2];
Внизкак правильнее организовать доступ к списку из 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.003 c