Программы   Загрузка Партнерство   О компании Контакты  
 
                    
  Карта Сайта   
   

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

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

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

           


загородный поселок резиденция монолит . Стройматериалы с хранения: материалы для теплоизоляции бани. Производство теплоизоляции. . военная униформа . Мир красок. Краски для пола: краска для пола цена. .


Программы  |  Загрузка  |  Партнерство  |  О компании  |  Контакты

Copyright © LSD Software 2006 - 2011