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

Вниз

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

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

Наверх




Память: 0.44 MB
Время: 0.054 c
5-1115830434
Cloude
2005-05-11 20:53
2005.12.04
Как использовать TList


10-1108636552
Swimmer
2005-02-17 13:35
2005.12.04
Так стоит использовать CORBA


2-1131861741
PlotnMax
2005-11-13 09:02
2005.12.04
Поиск файлов


14-1131523560
ASP_
2005-11-09 11:06
2005.12.04
DBF И Delphi


4-1128067443
XGarik
2005-09-30 12:04
2005.12.04
Ошибка API ф-ии библиотеки RAPI.DLL?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский