![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Здравствуйте, не так хорошо знаю делфи, возможно туплю, возможно нужно чтото знать:
есть код Код:
pItem = class name : string; layer: string; end; lItem = class name : string; protocols : array of pItem; end; public addLItem : array of lItem; addPItem : array of pItem; procedure addP(name:string); ... SetLength(addLItem, Length(addLItem)+1 ); item := lItem.Create(); SetLength(item.protocols, 0); addLItem[Length(addLItem)-1] := item; for i:= 0 to Length(addLItem)-1 do begin ShowMessage( '1='+IntToStr(Length( addLItem[i].protocols))); end; procedure draw( ); for i:= 0 to Length(addLItem)-1 do begin ShowMessage( '2=' + IntToStr(Length( addLItem[i].protocols))); end; Код:
lp.addP('P'); lp.draw; 1=0 2=106 Почему во второй функции подмассив стал таким, ссылка потерялась? |
#2
|
||||
|
||||
![]() У меня такой вопрос. Чему это принадлежит?
Код:
public addLItem : array of lItem; addPItem : array of pItem; Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#3
|
|||
|
|||
![]() одному классу
Tplayers = class(TObject).. public addLItem : array of lItem; addPItem : array of pItem; +------ нашёл в чём ошибка, только я не понимаю из-за чего она, выге у меня есть код Код:
procedure addP(name:string); SetLength(alllItem, 3); item := lItem.Create(); item.level := 1; item.name := 'pysical layer'; allLItem[0] := item; item := lItem.Create(); item.level := 2; item.name := 'system layer'; allLItem[1] := item; item := lItem.Create(); item.level := 2; item.name := 'pred system layer'; allLItem[2] := item; SetLength(allPItem, 10); itemP := pItem.Create(); itemP.layer :='system layer'; itemP.name := 'P protocol'; SetLength(addLItem, Length(addLItem)+1 ); item := lItem.Create(); SetLength(item.protocols, 0); addLItem[Length(addLItem)-1] := item; Если меняю длину у массивов что выше - всё нормально работает. Почему? item нельзя повторно использовать? Последний раз редактировалось KillDead, 17.11.2012 в 01:18. |
#4
|
||||
|
||||
![]() А это что находится "внутри" этого класса (Tplayers)?
Код:
pItem = class name : string; layer: string; end; lItem = class name : string; protocols : array of pItem; end; Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |