Форум: "Основная";
Текущий архив: 2003.07.17;
Скачать: [xml.tar.bz2];
ВнизДинамические массивы. Плохо всё. Найти похожие ветки
← →
Mihey (2003-07-02 23:26) [0]Вот код, причатсный к делу:
type TTankData = record
Coord: TPoint;
Index: Integer;
Strength: Integer;
end;
Tanks: array of TTankData;
procedure LoadTankPositions;
begin
Tanks[1].Coord.x := 100;
Tanks[1].Coord.y := 100;
Tanks[1].Index := 1;
end;
procedure CreateTankEngine;
begin
TankCount := 1;
SetLength(Tanks, 1);
LoadTankPositions;
end;
Я так полагаю, что больше ничто не влияет. И вот этот код по завершении программы вызывает AV. Что делать? Причём, если убрать LoadTankPositions, то AV не вызывается.
← →
Mihey (2003-07-02 23:38) [1]И вы знаете, что самое плохое - я сейчас этот код выполнил в другой программе, просто скопировал вот это, что написал, и выполнил - и всё нормально.
В общем, проблемы, я подозреваю, с динамическим массивом, но что конкретно - увы, не хватает опыта.
← →
Makhanev A.S. (2003-07-02 23:39) [2]Нумераци в массивах обычно с нуля, т.е. при Length=1 :
procedure LoadTankPositions;
begin
Tanks[0].Coord.x := 100;
Tanks[0].Coord.y := 100;
Tanks[0].Index := 1;
end;
← →
Mihey (2003-07-02 23:52) [3]Вот тут то я и дошёл. Вот сейчас увеличил на единицу массив и всё запахало. Блин, такой ньанс. Типа, SetLength устанавливает не верхнюю границу, а количество элементов.
← →
Mihey (2003-07-02 23:52) [4]Спасибо, вопрос исчерпан.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.07.17;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.008 c