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

Вниз

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

 
неугомонный   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.043 c
15-1192431257
KSergey
2007-10-15 10:54
2007.11.18
Миллионер Марк Шаттлворт ... выпускает массовый ноутбук (250$)


6-1174065437
Сет-тер
2007-03-16 20:17
2007.11.18
Расширение прав


2-1193046412
Ega23
2007-10-22 13:46
2007.11.18
Case - Constant expression expected


2-1193291606
Sergl
2007-10-25 09:53
2007.11.18
Как убрать перевод строки при работе с memo?


2-1192649516
timekiller
2007-10-17 23:31
2007.11.18
XML! Намекните!





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