![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Здравствуйте.
Не работает перегрузка функций. Пример. Всё время вызывается перегруженная функция TBase.Create(Value: LongWord), вне зависимости от передаваемого параметра в Delphi 10.4.2 Sydney, в Delphi 7 всё работает корректно, т.е. в зависимости от передаваемого параметра вызывается соответствующая перегруженная функция. Код:
TTypeFunc = function: LongWord of object;
TBase=class
protected
fFuncValue: TTypeFunc;
fValue: LongWord;
public
constructor Create (Func: TTypeFunc); overload;
constructor Create (Value: LongWord); overload;
end;
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
fBaseProp: TBase;
function getValue: LongWord;
public
end;
constructor TBase.Create(Func:TTypeFunc);
begin
fFuncValue := Func;
fValue := 0;
end;
constructor TBase.Create(Value: LongWord);
begin
fFuncValue := nil;
fValue := Value;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
//!!! Идет вызов TBase.Create(Value: LongWord) а не
//TBase.Create(Func:TTypeFunc)
fBitProp := TBase.Create(getDParams);
end;Последний раз редактировалось Admin, 22.09.2022 в 11:51. |
|
#2
|
|||
|
|||
|
На самом деле сначала вызывается твоя функция getDParams, а уже с результатом ее вызова вызывается конструктор. Попробуй вызвать так:
Код:
fBitProp := TBase.Create(@getDParams); |