TD3DModel = class (TObject)
public
constructor Create(AOwner: TObject); overide;//праверь правильность написания overide
end;
метод Create
TD3DModel = class (TObject)//акцент на то что класс исходит от самого начала
public
constructor Create(Param:integer);
end;
......
constructor TD3DModel.Create(Param: integer);
begin
.........
end;
компилируется нормально только правильно ли это?
Правильно, а какие проблемы? В таком классе все нужно делать самому и Destructor не забыть поставить.
Не совсем правильно, если я правильно помню, то метод Create ещё в TObject записан и вызываться при создании будет именно он. Ты всего то новый сонструктор добавил, вызвать который сможет только тобой написанный код.
Если тебе новый конструктор нужен, то пишы своё название к примеру MyCreate.
Если тебе тот заменить требуется, то надо так писать:
Код:
У тебя правильно с точки зрения синтаксиса языка, но не правильно с точьки зрения конструкции VCL
цитата
[COLOR="Red"]Не совсем правильно[/COLOR]
правильно, правильно.
цитата
[COLOR="red"]У тебя правильно с точки зрения синтаксиса языка, но не правильно с точьки зрения конструкции VCL[/COLOR]
С любой точки. В TObject Create всего лишь создает объект, а человеку требуется создать компонент. И запись:
TD3DModel = class (TObject)
равносильна
TD3DModel = class
и override здесь не требуется. Но если так сильно хочется, можно добавить inherited. но это тоже так больше для красоты. Достаточно посмотреть исходники того же VCL.
inherited не нужен по той простой причине, что в TObject Create объявлен с пустым телом, и вызывать его смысла нет (хотя, скорее всего оптимизатор и так уберет этот "лишний" вызов).
а чё тему не закрыли? :)