Вниз
Скачать: 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.019 c
14-55836
Феликс
2003-07-01 20:44
2003.07.17
Как так гарно получилось? :)


7-55870
nik
2003-04-28 12:52
2003.07.17
COM порт (NT)


1-55530
sucer
2003-07-05 00:28
2003.07.17
как просколировать RichEdit в конец?


3-55400
Вит
2003-06-23 14:31
2003.07.17
Как в Runtime какому-нибудь MEMO FastReport-а присвоить значение


14-55789
Region
2003-06-29 21:41
2003.07.17
Сортировка




   Наверх