![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Подскажите как перегрузить внутренний тип родителя, или поле родителя оставив работоспособным метод работающий с этим полем?
Есть массив записей и сортировка массива Код:
TFaserClass = class protected type TRecord = record Name:string; end; TArray = array of TRecord; var MyArray : TArray; public procedure SortMyArray; end; Код:
TDoterClass = class(TFaserClass) protected type TRecord = record Name:string; URL:string; //изменение только тут end; TArray = array of TRecord; var MyArray : TArray; public procedure SortMyArray; end; Если не перегружать тип массива и само поле MyArray, то в дочке у MyArray остаётся тип как в родителе. Код:
TDoterClass = class(TFaserClass) protected type TRecord = record Name:string; URL:string; end; Procedure Test; end; Procedure TDoterClass.Test; begin SetLength(MyArray,1); MyArray[0].URL := 'A';//E2003 undeclared end; Передача поля как параметр тоже не работает (разные типы); Код:
procedure SortArray(var MyArray : TArray); По сути мне нужно чтобы код из родителя автоматически подставлялся в наследник, может есть какие-то команды линковщику говорящие взять текст реализации метода из родителя? среда: Rad Studio XE 5 Последний раз редактировалось ArhDemetriy, 28.12.2015 в 10:48. |