Проблема с динамичным массивом
Возникла проблема. Пишу в коде:
SetLength(Directory[IDToNum(DirID)].Files, 3);
writeln('Files: ', length(Directory[IDToNum(DirID)].Files));
Directory[IDToNum(DirID)].Files[1] := TFile.Create(Name);
Directory[IDToNum(DirID)].Files[2] := TFile.Create(Name);
Directory[IDToNum(DirID)].Files[3] := TFile.Create(Name);
Создается массив в 3 элемента, ну все как и должно быть.
Пишу код, для добавления 1 элемента в конец массива:
SetLength(Directory[IDToNum(DirID)].Files, length(Directory[IDToNum(DirID)].Files) + 1); {увеличиваю размер динамичного массива на 1}
writeln('Files: ', length(Directory[IDToNum(DirID)].Files)); {вывод размера массива}
n := length(Directory[IDToNum(DirID)].Files); {номер максимального элемента массива}
Directory[IDToNum(DirID)].Files[n] := TFile.Create(Name); {создание крайнего элемента массива}
Вылетает прога. Обычно такое бывает при обращении к несуществующему элементу массива.
Кто поопытнее, может подскажете в чем дело, что я пишу не так?
|