Delphi-Help

  • Increase font size
  • Default font size
  • Decrease font size
Главная Статьи Записи и Множества Проблема передачи записи

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

Оцените материал
(0 голосов)

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

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

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

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

Прочитано 5830 раз

Авторизация



Счетчики