Проблема передачи записи

Previous  Top  Next

    
 

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

 

Определите базовый класс с именем, скажем, 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, cougar@roadrunner.com]

 

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

©Drkb::00783

http://delphiworld.narod.ru/

DelphiWorld 6.0