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

Вниз

работа с классами   Найти похожие ветки 

 
неугомонный   (2007-10-25 03:00) [0]

народ скажите в что делаю не так!!
создаю класс
type
 TMyClass = class(TCustomControl)
   private
     FX:String;
   public
     procedure SetX(X:String);
     procedure SetX(X:Integer);override;  ошибка в этой строке -  Method "SetX" not found in base class

что не так делаю??
end;

procedure TMyClass.SetX(X:String);
begin
 fx := x;
end;

procedure TMyClass.SetX(X:Integer); override;
begin
FX := IntToStr(X);
end;


 
Джо ©   (2007-10-25 03:10) [1]

>     procedure SetX(X:String);
>     procedure SetX(X:Integer);override;  ошибка в этой
> строке -  Method "SetX" not found in base class

А че не так? Нету в TCustomControl такого метода и никогда не было.
А если хотите написать overload, то так и пишите: overload.


 
неугомонный   (2007-10-25 03:17) [2]

не понял :(

какой из методов будет overload?


 
Германн ©   (2007-10-25 03:25) [3]


> неугомонный   (25.10.07 03:17) [2]
>
> не понял :(
>

Чего не понял?
Чуешь разницу между
> override
и
> overload

?


 
неугомонный   (2007-10-25 03:35) [4]

нет не чувствую, читал
Архангельского, непонятно :(

вот пытаюсь перекрыть,не получается

type
TMyClass = class
  private
    FX:String;
  public
    procedure SetX(X:String);overload; virtual;
    procedure SetX(X:Integer); overload;
end;

type
TMyClass1 = class(TMyClass)
  private
    FX:String;
  public
    procedure SetX(X:String);override;
    procedure SetX(X:Integer); overload;
end;

procedure TMyClass.SetX(X:String);
begin
fx := x;
end;

procedure TMyClass.SetX(X:Integer);
begin
FX := IntToStr(X);
end;

procedure TMyClass1.SetX(X:String);
begin
 inherited;
fx := x+"gg";
end;

procedure TMyClass1.SetX(X:Integer);
begin
FX := IntToStr(X);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 test:TMyClass1;
begin
test := TMyClass1.Create();
test.SetX("10");
form1.Caption := test.FX;
test.Free;
end;


 
Джо ©   (2007-10-25 03:51) [5]

Так и будем пробовать все ключевые слова по порядку, пока не заработает? :)
Неужели у Архангельского ничего нет об основах языка?
override — перекрывает одноименный виртуальный (virtual) или динамический (dynamic) метод предка.
overload — позволяет объявить несколько методов (или процедур/функций) с одинаковым названием, но разными списками формальных параметров.


 
Джо ©   (2007-10-25 03:54) [6]

Краткий пример:

virtual/override.
TBaseClass = class
 procedure A; virtual;
end;

TDescedantClass = class (TBaseClass)
 procedure A; override;
end;


overload.
procedure A (X: Integer); overload;
procedure A (S: string); overload;


Они служат совершенно разной цели, как видим.
Все-же почитайте нормальный справочник по языку.


 
Германн ©   (2007-10-25 04:00) [7]


> Неужели у Архангельского ничего нет об основах языка?

Риторический вопрос однако.


 
Amoeba ©   (2007-10-25 11:08) [8]


> неугомонный   (25.10.07 03:35) [4]
>
> нет не чувствую, читал
> Архангельского, непонятно :(

"Гляжу в книгу - вижу фигу"?



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

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

Наверх




Память: 0.48 MB
Время: 0.019 c
2-1193567128
MaximusI
2007-10-28 13:25
2007.11.18
TExcelApplication


2-1193381641
webpauk
2007-10-26 10:54
2007.11.18
ToolButton & DropDownMenu


2-1193612598
Dmitry_177
2007-10-29 02:03
2007.11.18
перевести TTime в количество секунд


15-1192545606
Slider007
2007-10-16 18:40
2007.11.18
С днем рождения ! 16 октября 2007 вторник


2-1193491921
malyar
2007-10-27 17:32
2007.11.18
вывод на печать pdf файла