0 / 0 / 0
Регистрация: 27.08.2012
Сообщений: 3
1

Проблемы с созданием объектов

06.05.2013, 07:26. Показов 1357. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Описан класс TPlanet:
Код
TPlanet = class (TObject) 
public 
name: string; 
x,y,m,r,px,py,vx,vy,ax,ay: real; 
u,v,up,vp:integer; 
constructor Create(); 
end;
Описан массив объектов этого класса:
Код
var 
solarsystem: array [0..8] of TPlanet;
При создании формы объекты инициализируются:
Код
begin 
for i := 0 to 8 do begin 
case i of 
0:begin 
solarsystem(i).Create; 
solarsystem(i).name:='Sun'; 
solarsystem(i).m:=333000.0; 
solarsystem(i).x:=0.0; 
solarsystem(i).y:=0.0; 
end; 
1:begin 
solarsystem(i).Create; 
solarsystem(i).name:='Mercury'; 
solarsystem(i).r:=0.39; 
solarsystem(i).m:=0.06; 
solarsystem(i).x:=solarsystem.r*10; 
solarsystem(i).y:=0.0; 
end; 
2:begin 
solarsystem(i).Create; 
solarsystem(i).name:='Venus'; 
solarsystem(i).r:=0.72; 
solarsystem(i).m:=0.82; 
solarsystem(i).x:=solarsystem.r*10; 
solarsystem(i).y:=0.0; 
end; 
//ну и так далее
Компилятор никаких ошибок не выдает, но при запуске появляется ошибка access violation. При нажатии на Break, студия заботливо показывает на функцию в System'е:
Код
function _AfterConstruction(const Instance: TObject): TObject; 
begin 
try 
Instance.AfterConstruction; //если быть совсем точным - конкретно на эту строку 
Result := Instance; 
{$IFDEF AUTOREFCOUNT} 
AtomicDecrement(Instance.FRefCount); 
{$ENDIF} 
except 
_BeforeDestruction(Instance, 1); 
raise; 
end; 
end;
Не могу понять в чем ошибка, пожалуйста, помогите разобраться.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.05.2013, 07:26
Ответы с готовыми решениями:

Проблемы с созданием файла инициализации
Добрый день. Возникла следующая проблема с созданием файла инициализации. Файл который должен...

Каковы преимущества инициализации объектов над созданием объектов
какие преимущества инициализации объектов над созданием объектов, с использованием специального...

Фишка с созданием объектов.
Помогите решить вопрос. Как сделать что то вроде заставки Мыльные пузыри, а конкретно например я...

Объясните тему с созданием объектов
Вечер добрый, Тема для начального уровня. Подскажите ответ на такую тему: Почему к примеру...

3
1074 / 987 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
06.05.2013, 07:52 2
Конструктор, который ничего не делает не нужно и объявлять в описании класса, а создавать объекты надо так:
Delphi
1
  solarsystem(i) := TPlanet.Create;
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32793 / 21133 / 8144
Регистрация: 22.10.2011
Сообщений: 36,393
Записей в блоге: 8
06.05.2013, 10:54 3
Цитата Сообщение от Cheather Посмотреть сообщение
Компилятор никаких ошибок не выдает
Не верю. Как минимум компилятор должен вякнуть, что скобки неправильные. Для обращения к элементу массива нужны квадратные, а у тебя - круглые.
0
0 / 0 / 0
Регистрация: 27.08.2012
Сообщений: 3
06.05.2013, 15:28  [ТС] 4
Цитата Сообщение от UI Посмотреть сообщение
Не верю. Как минимум компилятор должен вякнуть, что скобки неправильные. Для обращения к элементу массива нужны квадратные, а у тебя - круглые.
Тот же текст использовал, когда задавал вопрос на мейле. Там нет CODE. Пришлось импровизировать. В самой программе, само собой, квадратные скобки.

Цитата Сообщение от Скандербег Посмотреть сообщение
Конструктор, который ничего не делает не нужно и объявлять в описании класса, а создавать объекты надо так:
Delphi
1
  solarsystem(i) := TPlanet.Create;
Большое вам спасибо! Наконец-то курсач сдвинулся с мертвой точки.
0
06.05.2013, 15:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.05.2013, 15:28
Помогаю со студенческими работами здесь

Проблемы с созданием словаря на C++
Ребята-программисты, нужна срочная помощь, выдаёт такие ошибки: E0291 для класса "Term" не...

Проблемы с созданием класса
class Source { Source(String login,String password,String other) { ...

Проблемы с созданием Ln логарифма
Всем привет, прошу прощения что пишу вам с такой просьбой, помочь сделать программу для решения Ln...

Проблемы с созданием объекта
Есть два класса public class Tname { public string name_eng; public...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru