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

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

динамический массив динамических массивов. почему не получается ? [D7, 2000, XP]


ari_9 ©   (2007-05-30 21:26:00) 

банальная задача. в бд лежит набор многоугольников. загружаю их для обработки в структуру памяти

 TGPoint = record
   ID: Integer;
   X, Y: Double;
 end;
 TGRegion = record
   ID: Integer;
   GPoints: array of TGPoint;
 end;
....
 GRegions: array of TGRegion;


такой процедурой

 SetLength(GRegions, 0);
 i := 0;
 with l_Regions_IBQuery do
 begin
   ParamByName('X_REGION_GROUP').Value := Selected_Region_Group;
   Prepare;
   Open;
   while not Eof do
   begin
     SetLength(GRegions, i + 1);
     GRegions[i].ID := FieldByName('REGION_ID').AsInteger;
      SetLength(GRegions[i].GPoints, 0);
     k := 0;
     with l_RVertexes_IBQuery do
     begin
       ParamByName('X_REGION_ID').Value := GRegions[i].ID;
       Prepare;
       Open;
       while not Eof do
       begin
         SetLength(GRegions[i].GPoints, k + 1);
         GRegions[i].GPoints[k].ID := FieldByName('RVERTEX_ID').AsInteger;
         GRegions[i].GPoints[k].X := FieldByName('COORD_X').AsFloat;
         GRegions[i].GPoints[k].Y := FieldByName('COORD_Y').AsFloat;
         k := k + 1;
         Next;
       end;
       Close;
       UnPrepare;
     end;
     {*****}
     i := i + 1;
     Next;
   end;
   Close;
   UnPrepare;
 end;


получаю EAccessViolation на НЕ ПЕРВОМ, а третьем-четвертом задании длины массива GRegions[i].GPoints (выделил в коде), то есть когда i уже равно 1 и внешний цикл отрабатывает третий-четвертый раз. чувствую что ошибка на поверхности. нужен свежий взгляд


Zeqfreed   (2007-05-30 21:42:00) [1]

Трассировку в руки и погнали.


ari_9   (2007-05-30 21:27:00) [2]

поправка, когда i уже равно 2 или 3


Наверх

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