Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.025 c
3-1092665145
hawkins
2004-08-16 18:05
2004.09.12
Проблема с Computed field (InterBase)


1-1093489221
SNV-Soft
2004-08-26 07:00
2004.09.12
Компонент "Линейка"


6-1089282151
Ziko
2004-07-08 14:22
2004.09.12
WebBrowser, получение данных с сервера


3-1092723998
HMT
2004-08-17 10:26
2004.09.12
Подскажите плз как это будет в Interbase SQL


3-1092386137
Вика
2004-08-13 12:35
2004.09.12
Проблема с текстовым полем...




   Наверх