Показать сообщение отдельно
  #4  
Старый 22.05.2015, 09:33
icWasya icWasya вне форума
Местный
 
Регистрация: 09.11.2010
Сообщения: 499
Репутация: 10
По умолчанию

Вот сразу проблемы.
Код:
var
  FDQuery : TQuery;
  FDataSource : TDataSource;
В этом случае начальное значение будет неопределено, и поэтому IfAssigned может выдать истину, даже если туда ничего не присвоили. Поэтому надо делать начальную инициализацию
Код:
var
  FDQuery : TQuery:=nil;
  FDataSource : TDataSource=nil;
, или сделать эти переменные приватными полям формы, тогда они будут гарантировано обнулены.
Далее.
Код:
  if Assigned(FDQuery) Then FreeAndNil(FDQuery);
  if Assigned(FDataSource) Then FreeAndNil(FDataSource);
Внутри FreeAndNil делается проверка переданного параметра на nil, поэтому внешняя проверка не нужна.
Код:
  FreeAndNil(FDQuery);
  FreeAndNil(FDataSource);
А так же Жизнь и смерть в режиме run-time
Ответить с цитированием