БОЛЬШОЙ FAQ ПО 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.




<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ



Материалы находятся на сайте https://exelab.ru/pro/



Видеокурс ВЗЛОМ