![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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; |
|
#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; |