Может это не то, что вы ищете, но идея такая:

 Определите базовый класс с именем, скажем, allrecs:

Code:

tAllrecs = class

function getVal (field: integer): string; virtual;

end;

 

 

Затем создаем классы для каждой записи:

Code:

recA = class (tAllrecs)

this      : Integer;

that      : String;

the_other : Integer;

function getVal (field: integer): string; virtual;

end;

 Затем для каждой функции класса определите возвращаемый результат:

Code:

function recA.getVal (field: integer); string;

begin

case field of

1: getVal := intToStr (this);

2: getVal := that;

3: getVal := intToStr (the_other);

end;

end;

 Затем вы можете определить

Code:

function myFunc (rec: tAllrecs; field: integer);

begin

label2.caption := allrecs.getVal(field);

end;

 затем вы можете вызвать myFunc с любым классом, производным от tAllrecs, например:

Code:

myFunc (recA, 2);

myFunc (recB, 29);

 (getVal предпочтительно должна быть процедурой (а не функцией) с тремя var-параметрами, возвращающими имя, тип и значение.)

 Все это работает, т.к. данный пример я взял из моего рабочего проекта.

 [Sid Gudes, Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.]

 Если вы хотите за один раз передавать целую запись, установите на входе ваших функций/процедур тип 'array of const' (убедитесь в правильном приведенни типов). Это идентично 'array of TVarRec'. Для получения дополнительной информации о системных константах, определяемых для TVarRec, смотри электронную справку по Delphi.

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить