Главная страница
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.024 c
6-1089188010
Maks_G
2004-07-07 12:13
2004.09.12
Проблемы с IdHTTPServer и POST


4-1091104667
Dmitry
2004-07-29 16:37
2004.09.12
Как сделать, чтобы моя программа запускалась вместе с Windows


14-1093032386
Knight
2004-08-21 00:06
2004.09.12
Вопрос к знатокам третьей кваки - арена...


1-1093511847
Aleksandar
2004-08-26 13:17
2004.09.12
Работа с файлами шрифтов


1-1093558168
kukun
2004-08-27 02:09
2004.09.12
Самостоятельное программирование операторов div и mod.