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

Вниз

Как создать свойство   Найти похожие ветки 

 
ita ©   (2005-04-25 07:03) [0]

У меня не получается создать свойство. Я создаю очень простой класс:
type
  TObj=class
  public
    procedure SetF1(z:integer);
    function GetF1:integer;
    property f1:integer  read Getf1  write SetF1;
  end;

procedure TObj.SetF1(z:integer);
 begin
   if f1<>z then
   begin
    f1:=z;
   end;
 end;

 function TObj.GetF1:integer;
 begin
   Result:=f1;
 end;

// создание экземпляра
Obj1:=TObj.Create;
 Obj1.f1 :=10;
label1.Caption:=IntToStr(Obj1.f1);

При создании экземпляра зависает на методе GetF1, сообщение - переполнение стека.
  Заранее благодарна.


 
MBo ©   (2005-04-25 07:10) [1]

TObj=class
 private
   FF1:Integer;
   procedure SetF1(const Value:integer);
   function GetF1:integer;
 public
   property f1:integer  read Getf1  write SetF1;
 end;

procedure TObj.SetF1(const Value:integer);
begin
  if ff1<>Value then
   ff1:=Value;
end;

function TObj.GetF1:integer;
begin
  Result:=ff1;
end;

Многое из этогоо можно было получить автоматически, лишь написав в редакторе
property f1:integer; и нажать Alt-Ctrl-C


 
Юрий Зотов ©   (2005-04-25 11:35) [2]

> ita ©   (25.04.05 07:03)  

procedure TObj.SetF1(z:integer);
begin
 if f1<>z then
 begin
   f1 := z; // Здесь вызывается SetF1 и возникает рекурсия
 end;
end;

function TObj.GetF1:integer;
begin
 Result := f1; // Здесь вызывается GetF1 и возникает рекурсия
end;

=============================

Если при чтении или присваивании свойства не требуется никаких дополнительные действия то и не нужны никакие
Get/Set. Просто объявите класс так:

TObj = class
private
 FF1: integer;
public
 property F1: integer read FF1 write FF1;
end;

Если в потомках свойство может быть перенесено в published, то не лишним бы добавить к его объявлению default 0.



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

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

Наверх




Память: 0.47 MB
Время: 0.044 c
14-1131868987
QuasiLamo
2005-11-13 11:03
2005.12.04
mini DVD mp3 Player


14-1130316880
Vlad Oshin
2005-10-26 12:54
2005.12.04
Сеть. Не видит принтер и в net не вхож . НО: дост. рес. этой net


2-1132392648
CMOS
2005-11-19 12:30
2005.12.04
Не получается правилно удалить объект


5-1115365176
Priest
2005-05-06 11:39
2005.12.04
Как сохранить разность DFM


3-1129817186
DancerMan
2005-10-20 18:06
2005.12.04
Как с помощью SQL (формир. динам.) вставить вещественное число?