Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.09.12;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.033 c
14-1093352150
False_Delirium
2004-08-24 16:55
2004.09.12
Наиболее быстрый способ перемножения матриц.


4-1090323812
STiTCH
2004-07-20 15:43
2004.09.12
Как отловить попытку запуска приложения


14-1093359776
gn
2004-08-24 19:02
2004.09.12
Вирус для 64-разрядных Windows


6-1088960306
VID
2004-07-04 20:58
2004.09.12
Как заставить ServerSocket слушать порт N на желаемом хосте.


3-1092391295
Nata
2004-08-13 14:01
2004.09.12
isc4.gdb





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский