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

Вниз

Чудеса компилятора Delphi. Баг?   Найти похожие ветки 

 
oxffff ©   (2007-10-12 09:19) [0]

Возникает следующая ошибка
[Error] Unit1.pas(45): Ambiguous overloaded call to "create"

TClass1=class
public
constructor create(const Components:array of Tobject);
end;

TClass2=class(TClass1)
public
constructor create(const Components:array of Tcomponent;const b:array of tobject);overload;
end;

{ T3DEComponentContainer }

constructor TClass1.create(const Components: array of Tobject);
begin

end;

{ T3DEComponentContainer2 }

constructor TClass2.create(const Components: array of Tcomponent; const b: array of tobject);
begin

end;

procedure TForm1.Button1Click(Sender: TObject);
var a:TClass2;
begin
a.create([],[]);
end;

Интересно!!!
Если поменять
constructor create(const Components:array of Tcomponent;const b:array of tobject);overload;
на
constructor create(const Components:array of Tobject;const b:array of tobject);overload;
то все нормально.

IMHO. Это баг.

Версия 7 и BDS 2006.

Очень надеюсь на обладателей 2007, которые могут протестить в 2007.
Заранее благодарен.


 
Kolan ©   (2007-10-12 10:06) [1]

Удалено модератором
Примечание: Offtopic


 
Rouse_ ©   (2007-10-12 10:19) [2]

overload убери и

constructor TClass2.create(const Components: array of Tcomponent;
 const b: array of tobject);
begin
 inherited create(b);
end;


 
oxffff ©   (2007-10-12 10:22) [3]


> Rouse_ ©   (12.10.07 10:19) [2]


А мне как раз и нужно с overload.

+
>Интересно!!!
>Если поменять
>constructor create(const Components:array of Tcomponent;const b:array of >tobject);overload;
>на
>constructor create(const Components:array of Tobject;const b:array of >tobject);overload;
>то все нормально.

Так что overload здесь не причем.


 
Rouse_ ©   (2007-10-12 10:25) [4]

> А мне как раз и нужно с overload.
Тебе шашечки или ехать?


 
tesseract ©   (2007-10-12 10:29) [5]


> [Error] Unit1.pas(45): Ambiguous overloaded call to "create"


Написано же, что overload тут.


 
oxffff ©   (2007-10-12 10:30) [6]


> Rouse_ ©   (12.10.07 10:25) [4]
> > А мне как раз и нужно с overload.
> Тебе шашечки или ехать?


Сейчас мне вообще Oracle.

Меня интересует конкретно твое мнение является ли это багом с твоей точки зрения?
:)
Если да.
То я напишу им пусть правят.


 
oxffff ©   (2007-10-12 10:32) [7]


> tesseract ©   (12.10.07 10:29) [5]
>
> > [Error] Unit1.pas(45): Ambiguous overloaded call to "create"
>
>
> Написано же, что overload тут.


А это для кого написано?

+
>Интересно!!!
>Если поменять
>constructor create(const Components:array of Tcomponent;const b:array of >tobject);overload;
>на
>constructor create(const Components:array of Tobject;const b:array of >tobject);overload;
>то все нормально.

там тоже overload и работает.
Сменился только тип параметра.


 
Однокамушкин   (2007-10-12 10:35) [8]


> procedure TForm1.Button1Click(Sender: TObject);
> var a:TClass2;
> begin
> a.create([],[]);
> end;

Кто ж вас учил так вызывать конструкторы?


 
oxffff ©   (2007-10-12 10:36) [9]

Зы.
упростим задачку. Ошибка такая же. Теперь что.

TClass1=class
public
constructor create(const Components:array of Tobject);overload;
constructor create(const Components:array of Tcomponent;const b:array of tobject);overload;
end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

constructor TClass1.create(const Components: array of Tobject);
begin

end;

constructor TClass1.create(const Components: array of Tcomponent;
 const b: array of tobject);
begin

end;

procedure TForm1.Button1Click(Sender: TObject);
var a:TClass1;
begin
a.create([],[]);
end;


 
tesseract ©   (2007-10-12 10:36) [10]


> там тоже overload и работает. Сменился только тип параметра.


Вот это и есть баг :-)


 
oxffff ©   (2007-10-12 10:38) [11]


> Кто ж вас учил так вызывать конструкторы?


Скажите, А вы уверены, что суть поменяется?


 
Суслик   (2007-10-12 10:38) [12]

успокойся - ошибка это ошибка. у них бывает такое.


 
oxffff ©   (2007-10-12 10:39) [13]


> tesseract ©   (12.10.07 10:36) [10]
>
> > там тоже overload и работает. Сменился только тип параметра.
>
>
>
> Вот это и есть баг :-)


[9]


 
oxffff ©   (2007-10-12 10:41) [14]


> Суслик   (12.10.07 10:38) [12]
> успокойся - ошибка это ошибка. у них бывает такое.


А 2007?
Заранее благодарен.


 
Суслик   (2007-10-12 10:47) [15]


> 2007?
> Заранее благодарен.

тоже самое - ну у меня update 2. update3 только дома есть. неплохо бы на нем тоже проверить.
я думаю это баг.


 
Ins ©   (2007-10-12 12:02) [16]

Я недавно тоже интересную фишечку нашел, по крайней мере в D7. Интересно, это баг или фича? Попробуйте скомпилировать...

type
 TForm1 = class(TForm)
   Button1: StdCtrls.TButton;
 private
   { Private declarations }
 public
   { Public declarations }
 end;



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

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

Наверх




Память: 0.5 MB
Время: 0.027 c
2-1193330363
Винни-Пух-Пух-Пух
2007-10-25 20:39
2007.11.18
Почему могут не показываться Hint ы на контролах ?


2-1193115704
031178
2007-10-23 09:01
2007.11.18
Как программно выделить нужный пункт меню в TTreeView ?


8-1154587038
vladimirg88
2006-08-03 10:37
2007.11.18
Звук при загрузке формы


3-1182264642
Fredy314
2007-06-19 18:50
2007.11.18
Выборка за месяц по дням


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