Подскажите как перегрузить внутренний тип родителя, или поле родителя оставив работоспособным метод работающий с этим полем?
Есть массив записей и сортировка массива
Код:
TFaserClass = class
protected
type
TRecord = record
Name:string;
end;
TArray = array of TRecord;
var
MyArray : TArray;
public
procedure SortMyArray;
end;
В дочке добавляются поля в тип записи, но код сортировки переносится копипастом.
Т.к. сортировка идёт по полю Name
Код:
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);
Может стоит покопать в сторону Variant или абстрактных классов? Подскажите получится-ли реализовать ими? Просто запись в моём случае удобна выделением памяти через SetLength массива.
По сути мне нужно чтобы код из родителя автоматически подставлялся в наследник, может есть какие-то команды линковщику говорящие взять текст реализации метода из родителя?
среда: Rad Studio XE 5