Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.025 c
2-1151312195
C@N
2006-06-26 12:56
2006.07.16
Как узнать состояние CapsLock и NumLock???


2-1151650837
Вьюга
2006-06-30 11:00
2006.07.16
Формы в Delphi


4-1144333437
KorD
2006-04-06 18:23
2006.07.16
Как обратиться к свойству компонента, зная его хендл?


2-1151313933
GrBob
2006-06-26 13:25
2006.07.16
WMI - самое начало.


2-1151128446
JEK_DELPHI
2006-06-24 09:54
2006.07.16
Я не могу устранить глюк при запуску печати! ПОМОГИТЕ




   Наверх