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

Go to full version