Текущий архив: 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.45 MB
Время: 0.008 c