![]() |
{M+} Vererbung
Hi,
Habe gerade eine Klasse in einer Unit der ich {M+} verpasst habe. Wenn ich nun eine Klasse von dieser Klasse ableite dann muss ich dieser aber wieder M+ geben. Bei TPersistent geht das doch anscheined auch irgendwie oder mach ich was verkehrt? Gruß Neutral General |
Re: {M+} Vererbung
Da geht es nicht nur irgendwie. Das ist direkt so vorgesehen. Irgendetwas machst du da verkehrt :gruebel:
Edit: Steht ja auch in der Hilfe. Und bei der Entwicklung ![]() Vielleicht dieser Hinweis auf Forward-Deklarationen? |
Re: {$M+} Vererbung
Hi,
Das ganze sieht so aus.
Delphi-Quellcode:
unit NVCLForms;
{$M+} TNVCLForm = class(TNVCLControl) //... end; {$M-}
Delphi-Quellcode:
procedure Wasweißich(Sender: TBlubb);
unit Unit1;
uses NVCLForms; type TForm1 = class(TNVCLForm) procedure Wasweißich(Sender: TBlubb); private //... public end; wird nicht per RTTI gespeichert. Erst wenn ich {$M+} hinzufüge klappts. Gruß Neutral General |
Re: {M+} Vererbung
Kann mir keiner helfen ? :|
|
Re: {M+} Vererbung
Ich kann dir soviel sagen, dass dies hier funktioniert:
Delphi-Quellcode:
unit Unit2;
interface {$M+} type TTest=class(TObject); {$M-} implementation end.
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Unit2, StdCtrls; type TTest2=class(TTest) procedure Wasweissich(x:integer); procedure wasweissichnoch; end; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TTest2.Wasweissich(x:integer); begin showmessage('Anzahl Methoden: '+inttostr(x)); end; procedure TTest2.Wasweissichnoch; begin showmessage('nix'); end; procedure TForm1.Button1Click(Sender: TObject); var x:TTest2; p:pointer; count:pword; begin x:=TTest2.Create; p:=ppointer(x)^; count:=ppointer(integer(p)+vmtmethodtable)^; x.Wasweissich(count^); x.free; end; end. |
Re: {M+} Vererbung
Hi,
Ok ich muss auch bei forward deklarationen {$M+} schreiben...
Delphi-Quellcode:
Wobei es eben auch zwischendurch ganz seltsame Fehler und Erscheinungen gab die es aber jetzt nichtmehr gibt komischerweise.. :gruebel:
type
{$M+} TNVCLForm = class; {$M-} // .. {$M+} TNVCLForm = class(TNVCLControl) //.. end; {$M-} |
Re: {M+} Vererbung
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:38 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-2025 by Thomas Breitkreuz