Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как правильно реализовать?


Andy BitOff ©   (2004-08-24 23:32:00) 

Надо так:

type
 TSome = class
 private
   ...
   FJobNumber : array of integer;
   FHowUsesRate : array of Real;
   ...
   function GetHowUsesRate(index: integer): Real;
   function GetJobNumber(index: integer): integer;
   procedure SetJobNumber(index: integer; JobNumber : integer; HowUsesRate : Real);
 public
   Procedure AddJobNumber(JobNumber: integer; HowUsesRate : Real);
   function CountJobNumber: integer;
   function CountHowUsesRate: integer;
   ...
   /////////////// Несовместимость типов!!!!!!!!
   property JobNumber [index : integer] : integer read GetJobNumber write SetJobNumber;
   ///////////////
   property HowUsesRate [index : integer] : Real read GetHowUsesRate;
 end;
 
 implementation
 
function TSome.CountJobNumber: integer;
begin
 Result := Length(FJobNumber);
end;

function TSome.GetJobNumber(index: integer): integer;
begin
 Result := FJobNumber[index];
end;

procedure TSome.SetJobNumber(index: integer; JobNumber : integer; HowUsesRate : Real);
begin
 FJobNumber[index] := JobNumber;
 FHowUsesRate[index] := HowUsesRate;
end;

procedure TSome.AddJobNumber(JobNumber: integer; HowUsesRate : Real);
begin
 SetLength(FJobNumber,Length(FJobNumber)+1);
 SetJobNumber(Length(FJobNumber),JobNumber,HowUsesRate);
end;


HowUsesRate должна быть записана вместе с JobNumber, но так как я написал не катит.
Как правильно?


Алхимик   (2004-08-25 00:43:00) [1]

Наверно.
В блокноте чтоли пишешь? Delphi подпряги :)


Andy BitOff   (2004-08-25 00:41:00) [2]

Вообщем согласен :) Наверное поздно уже, башка не варит :) А вообще спасибо.


Andy BitOff   (2004-08-25 00:39:00) [3]

Тьфу, забыл коментарии убрать.


Andy BitOff   (2004-08-25 00:38:00) [4]

Т.е. так(?):

type
TSome = class
private
  ...
  FJobNumber : array of integer;
  FHowUsesRate : array of Real;
  ...
  function GetHowUsesRate(index: integer): Real;
  function GetJobNumber(index: integer): integer;
 
public
  Procedure AddJobNumber(JobNumber: integer; HowUsesRate : Real);
  function CountJobNumber: integer;
  function CountHowUsesRate: integer;
  procedure SetJobNumber(index: integer; JobNumber : integer; HowUsesRate : Real);
  ...
  /////////////// Несовместимость типов!!!!!!!!
  property JobNumber [index : integer] : integer read GetJobNumber;
  ///////////////
  property HowUsesRate [index : integer] : Real read GetHowUsesRate;
end;

implementation

function TSome.CountJobNumber: integer;
begin
Result := Length(FJobNumber);
end;

function TSome.GetJobNumber(index: integer): integer;
begin
Result := FJobNumber[index];
end;

procedure TSome.SetJobNumber(index: integer; JobNumber : integer; HowUsesRate : Real);
begin
FJobNumber[index] := JobNumber;
FHowUsesRate[index] := HowUsesRate;
end;

procedure TSome.AddJobNumber(JobNumber: integer; HowUsesRate : Real);
begin
SetLength(FJobNumber,Length(FJobNumber)+1);
SetJobNumber(Length(FJobNumber),JobNumber,HowUsesRate);
end;


Алхимик   (2004-08-25 00:34:00) [5]

Ну мухи отдельно, котлеты отдельно.
Как ты собираешься писатьв property JobNumber?
Может в свойствах оставить только методы чтений, а коли

> HowUsesRate не могет быть записана на прямую. Она напрямую
> связана с JobNumber и если меняется JobNumber, то и HowUsesRate
> тоже должна быть изменена или подверждена, если значение
> не меняется.

то и писать их отдельными методами?


Andy BitOff   (2004-08-25 00:29:00) [6]

При этом должна быть возможность прочитать их по отдельности.


Andy BitOff   (2004-08-25 00:28:00) [7]

Пример обращения такой:

var
 a:TSome;
begin
 ...
 a.AddJobNumber(2, 1.5);

или

var
 a:TSome;
begin
 ...
 a.SetJobNumber(1, 2, 1.8);

HowUsesRate не могет быть записана на прямую. Она напрямую связана с JobNumber и если меняется JobNumber, то и HowUsesRate тоже должна быть изменена или подверждена, если значение не меняется.


Алхимик   (2004-08-25 00:19:00) [8]

function TSome.GetJobNumber(index: integer): integer;
procedure TSome.SetJobNumber (index: integer; const Value: integer);


А как ты себе это представляешь:
procedure SetJobNumber(index: integer; JobNumber : integer; HowUsesRate : Real); ?
Пример обращения к этому свойству в коде програмы?


Andy BitOff   (2004-08-24 23:55:00) [9]

Типа там несовместимость и типа компилица не хотит. Типа очень надо, а не хотит.


Алхимик   (2004-08-24 23:45:00) [10]


> [1] Andy BitOff ©   (24.08.04 23:34)
> Ошибка в строке 17 :)))

Типа подсказка?


Andy BitOff   (2004-08-24 23:34:00) [11]

Ошибка в строке 17 :)))


Наверх

Титульная страница Поиск, карта сайта Написать письмо