Главная страница
    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.015 c
6-1142241569
Alex_Delphi
2006-03-13 12:19
2006.07.16
Кто нибуть может подсказать как отсканировать порты в сети


1-1149255880
тт
2006-06-02 17:44
2006.07.16
Как узнать какая буква под курсором в RichEdit?


4-1144230639
AlexeyT
2006-04-05 13:50
2006.07.16
Как определить отключенный сетевой диск?


2-1151646657
Ega23
2006-06-30 09:50
2006.07.16
Ещё раз про фреймы


2-1151306558
manevil
2006-06-26 11:22
2006.07.16
запуск с параметрами





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский