Форум: "Начинающим";
Текущий архив: 2007.07.01;
Скачать: [xml.tar.bz2];
ВнизДобавление объекта в динамический массив Найти похожие ветки
← →
novice (2007-06-08 21:17) [0]Правильно ли реализован методд AddElement ?
type
Element = class
id: integer;
end;
type
MyClass= class
arobjects: array of Element;
arobjects_count: integer;
constructor Create;
destructor Destroy; override;
procedure LoadFile(FileName: string);
procedure AddElement(elm: Element);
end;
procedure Level.AddElement(elm: Element);
begin
inc(arobjects_count);
SetLength(arobjects,arobjects_count);
arobjects[arobjects_count]:=elm;
end;
после добавления одного элемента, при выходе их программы, возникает ошибка.
← →
trubin © (2007-06-08 21:31) [1]
> arobjects[arobjects_count]:=elm;
arobjects[arobjects_count - 1]:=elm;
← →
Kolan © (2007-06-08 23:36) [2]> Правильно ли реализован методд AddElement ?
Нет. Ты обращаешься к элементу за пределами массива. Нумерация с 0. Включи Range check вProject-Options
.
По существу. ИспользуйLow
иHigh
. То есть:arobjects[High(arobjects)]:=elm;
Кроме того:
1.arobjects_count, MyClass, arobjects
— три стиля форматирования :(. Правильно AddElement.
2.arobjects
— название непонятное.
← →
novice (2007-06-09 00:39) [3]в массиве arobjects
После выхода из LoadFile
полная чушь
procedure LoadFile;
...
while not eof (txt) do
begin
temp_obj:=LevelElement.Create;
temp_obj.id:=1;
AddElement(temp_obj);
end
...
Такое ощущение что все ссылается но temp_obj.
параметры объектов не сохраняются.
← →
Kolan © (2007-06-09 10:08) [4]> LevelElement.Create;
Что такоеLevelElement
? Класс? Где «T»(TLevelElement
)?
Хочешь чтобы отвечающие сломали моск?
В [0]procedure Level.AddElement(elm: Element);
А ты передаешLevelElement
, это наследник?
И вообще выбрось массив и возьмиTObjectList
. Тогда твойAddElement
не понадобится.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.07.01;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.004 c