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

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

ошибка при работе с параметрами запроса


Scott Storch ©   (2011-07-20 12:04:00) 

Почему при освобождении памяти, занимаемой параметром IdParam, возникает ошибка AccessViolation по 0 адресу.


function TConnectionDataModule.GetSectionIdsFieldValue(Id: Integer): string;
var
 IdParam, ContentIdParam, ContanerIdParam: TDBISAMParam;
 SectionIdList: TStrings;
begin
 IdParam := CommandQuery.Params.CreateParam(ftInteger, ID_PARAM_NAME);
 try
   IdParam.AsInteger := Id;
   CommandQuery.SQL.Text := Format('SELECT primer_id FROM item WHERE (item_id = :%s) AND (flags <> 1)',
     [ID_PARAM_NAME]);
   CommandQuery.Open;
   SectionIdList := TStringList.Create;
   try
     SectionIdList.Add(CommandQuery.Fields[0].AsString);
     ContentIdParam := CommandQuery.Params.CreateParam(ftInteger,
       CONTENT_ID_PARAM_NAME);
     try
       ContentIdParam.AsInteger := Id;
       ContanerIdParam := CommandQuery.Params.CreateParam(ftInteger,
         CONTANER_ID_PARAM_NAME);
       try
         ContanerIdParam.AsInteger := StrToInt(SectionIdList[0]);
         CommandQuery.SQL.Text := Format('SELECT contaner_id FROM content WHERE (content_id = :%s) AND (contaner_id <> :%s) AND (flags <> 1)',
           [CONTENT_ID_PARAM_NAME, CONTANER_ID_PARAM_NAME]);
         CommandQuery.Open;
         CommandQuery.First;
         while not CommandQuery.Eof do
         begin
           CategoryIdList.Add(CommandQuery.Fields[0].AsString);
           CommandQuery.Next;
         end;
         Result := SectionIdList.DelimitedText;
       finally
         ContanerIdParam.Free;
       end;
     finally
       ContentIdParam.Free;
     end;
   finally
     SectionIdList.Free;
   end;
 finally
   IdParam.Free; // Access violation
 end;
end;


Scott Storch   (2011-07-20 12:25:00) [1]

Ясн. спасибо


sniknik   (2011-07-20 12:16:00) [2]

любите справку источник знаний...

CreateParam method (TParams)
Creates a new field parameter object and inserts it into the Items list.


хочешь удалять сам? "высуни" его оттуда предварительно, там его тоже кто то удаляет, а лучше постигни дзен по примерам справки...


Наверх

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