Forum > Portuguese
Problema instanciar objeto de uma variável TClass, construtor não é chamado
(1/1)
Tebo Software:
Bom dia pessoal
estou com um problema em relação a chamar um construtor de uma variável do tipo TClass, não é executado o construtor padrão da classe que foi passada:
--- Code: Pascal [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} ---type ITeste = interface ['{6F797283-07D1-4BD8-8D9D-7F1B05023857}'] procedure executar; end; { TTeste } TTeste = class(TInterfacedObject, ITeste) private FMensagem : String; public constructor Create; overload; constructor Create(aMensagem : String); reintroduce; overload; procedure executar; end;
No caso onde ou chamar tem uma varíavel do tipo TClass e eu tentei chamar FClassType.Create e não é chamado o construtor.
Alguém sabe como resolver isso, ou se eu consigo através de RTTI obter o método construtor?
Tebo Software:
Bom dia
Para deixar registrado o problema:
A class TObject tem um construtor não virtual e com isso quando é chamado a variável do tipo TClass o método Create é chamado do TObject.
Para contornar, eu peguei e criei uma classe com o construtor virtual e os meus objetos estão herdando dela e também criei um tipo TClass para essa minha classe:
--- Code: Pascal [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} ---unit uDefaultClass; {$mode ObjFPC}{$H+} interface uses Classes, SysUtils; type { TDefaultClass } TDefaultClass = class(TInterfacedPersistent, IUnknown) public constructor Create; virtual; end; TDefaultClassType = class of TDefaultClass; implementation { TDefaultClass } constructor TDefaultClass.Create;begin end; end.
Navigation
[0] Message Index