Советы по Delphi

         

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


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

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

    tAllrecs = class function getVal (field: integer): string; virtual; end;

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



    recA = class (tAllrecs) this      : Integer; that      : String; the_other : Integer; function getVal (field: integer): string; virtual; end;

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

    function recA.getVal (field: integer); string; begin case field of 1: getVal := intToStr (this); 2: getVal := that; 3: getVal := intToStr (the_other); end; end;

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

    function myFunc (rec: tAllrecs; field: integer); begin label2.caption := allrecs.getVal(field); end;

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

    myFunc (recA, 2); myFunc (recB, 29);

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

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

[Sid Gudes, cougar@roadrunner.com]

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



Содержание раздела