Здравствуйте, не так хорошо знаю делфи, возможно туплю, возможно нужно чтото знать:
есть код
Код:
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;
Всё вызываю так
В итоге получаю 2 сообщения о размере подмассива -
1=0
2=106
Почему во второй функции подмассив стал таким, ссылка потерялась?