Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.12;
Скачать: CL | DM;

Вниз

Как правильно реализовать?   Найти похожие ветки 

 
Andy BitOff ©   (2004-08-24 23:32) [0]

Надо так:

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, но так как я написал не катит.
Как правильно?


 
Andy BitOff ©   (2004-08-24 23:34) [1]

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


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


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

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


 
Andy BitOff ©   (2004-08-24 23:55) [3]

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


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

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-25 00:28) [5]

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

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

или

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

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


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

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


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

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

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

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


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

Т.е. так(?):

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;


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

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


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

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


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

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



Страницы: 1 вся ветка

Текущий архив: 2004.09.12;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.455 c
1-1092302454
GrayFace
2004-08-12 13:20
2004.09.12
Алгоритмы сортировки


1-1093722417
Сергей.
2004-08-28 23:46
2004.09.12
Узнать имя активного компонента


6-1089041475
Don
2004-07-05 19:31
2004.09.12
Расшарить диск


1-1092557425
Игорь1
2004-08-15 12:10
2004.09.12
begin...end


1-1093509134
vov@n
2004-08-26 12:32
2004.09.12
Как запустить DOS приложение...