![]() |
Kann keinen Constructor aufrufen
Moin,
Ich habe aus einer C# DLL eine TLB erstellt und diese als registriert (com-visible, für com-interop), dann die TLB in Delphi hinzugefügt und nun versuche ich dort den Constructor aufzurufen:
Delphi-Quellcode:
Die TLB:
var
prozent: TDecimal; ust19: TaxRate; begin CoInitialize(self); ust19 := ust19.Create(self);
Delphi-Quellcode:
Allerdings ist das Create() ein undeklarierter Bezeichner...jemand einen Hinweis für mich?
// *********************************************************************//
// Die Klasse CoTaxRate stellt die Methoden Create und CreateRemote zur // Verfügung, um Instanzen des Standard-Interface _TaxRate, dargestellt // von CoClass TaxRate, zu erzeugen. Diese Funktionen können // von einem Client verwendet werden, der die CoClasses automatisieren // will, die von dieser Typbibliothek dargestellt werden. // *********************************************************************// CoTaxRate = class class function Create: _TaxRate; class function CreateRemote(const MachineName: string): _TaxRate; end; // *********************************************************************// // OLE-Server-Proxy-Klassendeklaration // Server-Objekt : TTaxRate // Hilfe-String : // Standard-Interface: _TaxRate // Def. Intf. DISP? : No // Ereignis-Interface: // TypeFlags : (0) // *********************************************************************// TTaxRate = class(TOleServer) private FIntf: _TaxRate; function GetDefaultInterface: _TaxRate; protected procedure InitServerData; override; function Get_ToString: WideString; function Get_type_: WideString; procedure Set_type_(const pRetVal: WideString); function Get_Category: WideString; procedure Set_Category(const pRetVal: WideString); function Get_Percentage: TDecimal; procedure Set_Percentage(pRetVal: TDecimal); public constructor Create(AOwner: TComponent); override; destructor Destroy; override; procedure Connect; override; procedure ConnectTo(svrIntf: _TaxRate); procedure Disconnect; override; function Equals(obj: OleVariant): WordBool; function GetHashCode: Integer; function GetType: _Type; property DefaultInterface: _TaxRate read GetDefaultInterface; property ToString: WideString read Get_ToString; property type_: WideString read Get_type_ write Set_type_; property Category: WideString read Get_Category write Set_Category; property Percentage: TDecimal read Get_Percentage write Set_Percentage; published end; Danke! |
AW: Kann keinen Constructor aufrufen
Hast Du das T bei TTaxRate nur hier vergessen, oder auch in Deinem Code?
Zitat:
|
AW: Kann keinen Constructor aufrufen
Auch in meinem Code...danke.
|
AW: Kann keinen Constructor aufrufen
Nichtsdestotrotz bleibt dieser Aufruf falsch:
Delphi-Quellcode:
. Richtig wäre:
ust19 := ust19.Create(self);
Delphi-Quellcode:
ust19 := TTaxRate.Create(self);
|
AW: Kann keinen Constructor aufrufen
Japp, das ist schon korrigiert...ist halt nicht immer ein Vorteil in 3 Sprachen gleichzeitig unterwegs zu sein :roll:
|
AW: Kann keinen Constructor aufrufen
Create ist eine "Funktion", wenn es vom Objekt aufgerufen wird und erstellt vorher keinen Speicher, es initialisiert den Speicher nur ... macht Delphi bloß dann, wenn es über die Klasse aufgerufen wird (vor dem Ausführen der Create-Methode)
Delphi-Quellcode:
:duck:
ust19 := TTaxRate(TTaxRate.NewInstance); // ODER TObject(ust19) := TTaxRate.NewInstance;
ust19.Create(Self); |
AW: Kann keinen Constructor aufrufen
Danke für den Hinweis!
|
AW: Kann keinen Constructor aufrufen
Delphi nutzt das an einer Stelle, also im Application.CreateForm in der DPR.
Dadurch kann die Instanz schon vor dem Create in die globale Variable geschrieben werden, falls dann beim Laden der DFM oder im Constructor auf diese globale Variable zugegriffen wird. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz