Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.46 MB
Время: 0.003 c
4-1252568961
Гриня
2009-09-10 11:49
2011.12.25
Взаимодействие с Opera


3-1269100827
Mihonius
2010-03-20 19:00
2011.12.25
реализация проверки пользователей


2-1316076960
pk
2011-09-15 12:56
2011.12.25
TpFibDataSet передать значение параметру


15-1315415972
ClawClaw
2011-09-07 21:19
2011.12.25
Индиана Джонс (лего)


3-1269323054
Boatswain
2010-03-23 08:44
2011.12.25
Динамически загружаемая dll и MSConnection





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский