![]() |
|
#1
|
||||
|
||||
![]() Народ, подскажите, мне чего то не хватает мозгов.
Есть классы. Например Код:
Tclass1 = class; Tclass1 = class private fFieldA:string; fFieldB:string; Next:Tclass1; public constructor Create(fielda, fieldb: string); end; Tclass1list = class private fFirst:Tclass1; function Search(index:olevariant):TClass1; //функция, которая ищет экземпляр Tclass1 по индексу или по полям fFieldA:string; fFieldB:string public property Cl[index: olevariant]:Tclass1 read Search; default; end; Tclass2 = class; Tclass2 = class private fFieldC:string; Next:Tclass2; public constructor Create(fieldC: string); end; Tclass2list = class private fFirst:Tclass2; function Search(index:olevariant):TClass2; //функция, которая ищет экземпляр Tclass1 по индексу или по полю fFieldC:string; public property Cl[index: olevariant]:Tclass2 read Search; default; end; Таких классов еще несколько. В каждом есть поиск. Работает он одинаково, вычисляет тип переданной переменной index и если она числовая, то выдает экземпляр с нужным индексом, если текстовая, то ищет по нужным текстовым полям. Вопрос, как можно вынести поиск в отдельный класс или обычную функцию, чтобы не описывать для каждого класса функцию поиска? Хотелось бы изобразить в общем виде, типа: Код:
function Search (СтрокаПоискаИлиИндекс: olevariant; СсылкаНаПервыйЭлементfFirst:КакойТипТутУказать; СписокПолейПоКоторымИскать:ВкакомВидеПередатьТожеНеЗнаю):ТипНужногоЭкземпляраКлассаТожеНеЗнаюКакВернуть; Если это возможно осуществить, помогите. |