Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.07.16;
Скачать: CL | DM;

Вниз

Дин.массив в классе = траблы, ГОРЮ!   Найти похожие ветки 

 
PenguinX ©   (2006-06-29 06:56) [0]

Здрасьте всем!

Пишу программку, столкнулся с такой проблемой - не могу в классе работать с дин. массивом, Length(дин.массив) = AV, SetLength(дин.массив) = AV и т.д.

Классы вида:


type
 Tmyclass3 = class
   ...
 end;

 Tmyclass2 = class
   ...
   B: array of Tmyclass3;
 end;

 Tmyclass1 = class
   ...
   A: array of Tmyclass2;
 end;


При попытке обращения к Tmyclass1.A сыплются ошибки AV, даже при попытке определить его размер с помощью Length.

Помогите, люди добрые, остальная часть программы уже готова, осталось тока с этим разобраться. Сегодня нужно кровь из носу доделать, иначе - отчисление. Если можно, выложите кто-нить рабочее решение, т.к. читать мануалы уже не успеваю.

Всем заранее БО-О-О-ОЛЬШОЕ ЧЕЛОВЕЧЕСКОЕ СПАСИБО!


 
Юрий Зотов ©   (2006-06-29 07:35) [1]

Только установить длину - этого мало. Надо ведь еще создать объекты, на которые ссылаются элементы массива.

constructor TMyClass1.Create;
var
 i: integer;
begin
 inherited;
 SetLength(A, 10);
 for i := Low(A) to  High(A) do
   A[i] := TMyClass2.Create
end;

destructor TMyClass1.Destroy;
var
 i: integer;
begin
 for i := Low(A) to  High(A) do
   A[i].Free;
 A := nil;
 inherited
end;


 
evvcom ©   (2006-06-29 09:09) [2]

И собственно сам объект класса Tmyclass1 тоже не забыть создать. А то судя по

> При попытке обращения к Tmyclass1.A

есть подозрение, что это обращение так и идет. Обращение же к myclass1.A (после создания объекта класса Tmyclass1) к AV не приведет (не должно во всяком случае, хотя извратиться можно везде :)).


 
Barloggg   (2006-06-29 10:32) [3]

а разве не надо прежде чем динамический массив сделать =nil сначала укоротить его до нуля? setlength( ,0);

а то попахивает протечками.


 
Ketmar ©   (2006-06-29 10:44) [4]

не надо. RTFM.


 
Amoeba ©   (2006-06-29 11:11) [5]

А может имеет смысл использовать не дин. массивы объектов, а TObjectList (может оказаться целесообразным создать наследников от TObjectList дабы несколько упростить работу с элементами списка)? Это заметно упростит код, в первую очередь деструкторов.



Страницы: 1 вся ветка

Текущий архив: 2006.07.16;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.05 c
2-1148732482
inri13666
2006-05-27 16:21
2006.07.16
Кнопка Пуск


15-1150560517
TUser
2006-06-17 20:08
2006.07.16
Рассылочка пришла


6-1141911697
_PG_
2006-03-09 16:41
2006.07.16
Спутник + ДСЛ = проблема


15-1150673609
Волф_555
2006-06-19 03:33
2006.07.16
Зарубежные системы заработка денег в Интернет


4-1143960606
Kor-win
2006-04-02 10:50
2006.07.16
drag-and-drop формы