Непонятки с динамич.массивами
case NomerStroki of
998:
begin
SetLength(Dhi_FlexibleArray, i+1);
for i2 := 0 to i+1 do Dhi_FlexibleArray[i2] := q[i2]; // ПРИМЕЧ.
Size_Dhi_FlexibleArray := i+1;
end;
ЗДЕСЬ ОШИБКА ВЫЛЕЗАЕТ [access violantion at 0x00406315: write to adres 0x00030e70]
999:
begin
{procedure Line999;}
SetLength(Lck_FlexibleArray, i+1);
Size_Lck_FlexibleArray := i+1;
for i1 := 0 to i+1 do Lck_FlexibleArray[i1] := q[i1];
end;
Если убрать строку //ПРИМЕЧ., то все работает без заполнения первого динам.массива.
Может кто подскажет чего? Заранее благодарен, [email]leyftd@smtp.ru[/email]
for i2 := 0 to i+1 do
Dhi_FlexibleArray[i2] := q[i2]; // ПРИМЕЧ.
При вызове SetLength второй параметр - количество элементов массива, а динамические массивы индексируются с нуля. Соответственно
Dhi_FlexibleArray[i2] когда i2=i+1 - уже за пределом выделеннной памяти под массив. Отсюда и Access Violation. Последний элемент имеет индекс, равный i, а не i+1.