Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > with по 2 объектам и их free


Автор: RinOSpro 21.5.2009, 10:48
Есть такая конструкция:
Код

  with TADOCommand.Create(nil), AList do
  try
    try
      Result := False;
      ...
      Result := True;
    except
      Result := False;
    end;
  finally
    Free;
  end;


В finally делается Free вот только делается не для того кого нужно... Нужно сделать Free для созданного ADOCommand, а сейчас делается для AList ((.

Как сделать что бы правильно?

Добавлено через 7 минут и 24 секунды
Точнее как вызвать только для ADOCommand?

Автор: Rrader 21.5.2009, 11:01
Из справки:
Цитата

When multiple objects or records appear after with, the entire statement is treated like a series of nested with statements. Thus

Код

with obj1, obj2, ..., objn do statement


is equivalent to

Код

with obj1 do
   with obj2 do
      ...
      with objn do
    statement



Поменяй местами.

Автор: CodeMonkey 21.5.2009, 11:40
Цитата
Как сделать что бы правильно?

Не использовать with. Точка.

Автор: MetalFan 21.5.2009, 12:42
... а это все от лени...

Автор: kemiisto 21.5.2009, 13:02
Цитата(MetalFan @  21.5.2009,  10:42 Найти цитируемый пост)
... а это все от лени... 

Дело не в лени. Вот яркий пример, к чему приводит наличие в языке синтаксической вкусняшки.

Автор: CodeMonkey 21.5.2009, 13:50
...задумался: относится ли к "синтаксическим вкусняшкам" цикл for?...

Автор: bems 21.5.2009, 16:24
ну прям таки не использовать...
два вложеных with и все пучком

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)