![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Добавление объекта в динамический массив [D7]
novice © (2007-06-08 21:17:00)Правильно ли реализован методд 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;
после добавления одного элемента, при выходе их программы, возникает ошибка.
Kolan (2007-06-09 10:08:00) [1]> LevelElement.Create;
Что такоеLevelElement? Класс? Где «T»(TLevelElement)?
Хочешь чтобы отвечающие сломали моск?
В [0]
procedure Level.AddElement(elm: Element);
А ты передаешLevelElement, это наследник?
И вообще выбрось массив и возьмиTObjectList. Тогда твойAddElementне понадобится.
novice (2007-06-09 00:39:00) [2]в массиве 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-08 23:36:00) [3]> Правильно ли реализован методд AddElement ?
Нет. Ты обращаешься к элементу за пределами массива. Нумерация с 0. Включи Range check вProject-Options.
По существу. ИспользуйLowиHigh. То есть:
arobjects[High(arobjects)]:=elm;
Кроме того:
1.arobjects_count, MyClass, arobjects три стиля форматирования :(. Правильно AddElement.
2.arobjects название непонятное.
trubin (2007-06-08 21:31:00) [4]
> arobjects[arobjects_count]:=elm;
arobjects[arobjects_count - 1]:=elm;