Вниз
Скачать: CL | DM;

Динамические массивы. Плохо всё.   Найти похожие ветки 

 
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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.014 c
1-55571
Franzy
2003-07-02 17:16
2003.07.17
Run-time Resizeble components


4-55890
Stas
2003-05-15 15:56
2003.07.17
CreateMutex


14-55795
Malder
2003-06-27 19:39
2003.07.17
Предложения по организации форума


1-55641
Andrey V.
2003-07-04 08:42
2003.07.17
Подчеркивание в репорте


1-55582
Zn
2003-07-02 16:14
2003.07.17
Переполнение стека при завершении программы.




   Наверх