Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.07.16;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.007 c
3-1147432339
Ломброзо
2006-05-12 15:12
2006.07.16
Битовые операции в Oracle


15-1150219382
dimodim-Furyz
2006-06-13 21:23
2006.07.16
Web-radio


3-1147454543
skichyp
2006-05-12 21:22
2006.07.16
не могу законнектиться с локального


2-1151671180
Gizza
2006-06-30 16:39
2006.07.16
База данных


8-1139105840
WST
2006-02-05 05:17
2006.07.16
JPEG2000 (JP2)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский