Форум: "Начинающим";
Текущий архив: 2007.06.24;
Скачать: [xml.tar.bz2];
Вниздинамический массив динамических массивов. почему не получается ? Найти похожие ветки
← →
ari_9 (2007-05-30 21:26) [0]банальная задача. в бд лежит набор многоугольников. загружаю их для обработки в структуру памяти
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 и внешний цикл отрабатывает третий-четвертый раз. чувствую что ошибка на поверхности. нужен свежий взгляд
← →
ari_9 (2007-05-30 21:27) [1]поправка, когда i уже равно 2 или 3
← →
Zeqfreed © (2007-05-30 21:42) [2]Трассировку в руки и погнали.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.06.24;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.037 c