Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi RTTI {$M+}bei TObject (https://www.delphipraxis.net/88007-rtti-%7B%24m-%7Dbei-tobject.html)

Gruber_Hans_12345 8. Mär 2007 19:01


RTTI {$M+}bei TObject
 
hi

ich versuche gerade meinem Objekt (von TList) abgeleitet published properties beizubringen, die ich dann mit CalssInfo und co auslesen kann.

Ich dachte ich muß die Klasse nur mit {$M+} kompilierne und schon gibts ne ClassInfo für mein Objekt ... aber pustekuchen ClassInfo ist immer nil

Delphi-Quellcode:
type
{$M+}
  TTest = class(TList)
  private
    fTT : integer;
  published
    property TT : integer read fTT write fTT;
  end;
{$M-}
muß ich sonst noch was beachten?

Kedariodakon 8. Mär 2007 19:48

Re: RTTI {$M+}bei TObject
 
Liste der Anhänge anzeigen (Anzahl: 1)
:shock:

Komisch, bei mir tuts das...

Delphi-Quellcode:
Unit Unit1;

Interface

Uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;

Type
  {$M+}
  TTest = Class( TList )                  
  Private
    { Private-Deklarationen }
    FTT: Integer;
  Published
    { Published-Deklarationen }
    Property TT: Integer Read FTT Write FTT;
  End;
  {$M-}

  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
    FTe: TTest;
  public
    { Public-Deklarationen }
    Property Te: TTest Read FTe Write FTe;  
  End;

Var Form1: TForm1;

Implementation

{$R *.dfm}

Procedure TForm1.FormCreate( Sender: TObject );
Begin
  Te := TTest.Create;
End;

Procedure TForm1.FormDestroy( Sender: TObject );
Begin
  If Assigned( Te ) Then FreeAndNil( FTe );
End;

Procedure TForm1.Button1Click( Sender: TObject );
Begin
  Edit1.Text := IntToStr( Integer( Te.ClassInfo ) );
End;

end.

Bye Christian

Gruber_Hans_12345 8. Mär 2007 19:56

Re: RTTI {$M+}bei TObject
 
hmmmm ... bei so einem kleinen testprogramm funkt es auch bei mir, aber bei meiner großen applikation nicht ... so ein mist

gibt es da noch sonstige sachen, die da reinpfuschen können? (globable compilerdirektiven?)

... werde noch ein paar tests machen ...

Kedariodakon 8. Mär 2007 20:01

Re: RTTI {$M+}bei TObject
 
Hmm, hab das gerade in einem etwas größerem getestet und es funktioniert auch da... :duck:

Da ich eigendlich weiter nie mit der RTTI gearbeitet habe, kann ich dir das auch nicht sagen...
hast du mal statt TObject mal TPersistent getestet?

Bye Christian

Gruber_Hans_12345 8. Mär 2007 20:03

Re: RTTI {$M+}bei TObject
 
also bei TPersistent wird funktionieren, das hats ja schon von haus aus das +M, aber ich brauche es für eine TList, und will diese nicht extra neu machen und von TPersistent ableiten ....

ich probiere jetzt mal die kleine Testklasse in meinem großen projekt, dann weiss ich wenigstens, obs an compilerdirektiven oder an der klasse liegt ....

Gruber_Hans_12345 8. Mär 2007 20:26

Re: RTTI {$M+}bei TObject
 
habs schon ...

Delphi-Quellcode:
type
  TTest = class;  << hier merkt er sich anscheinend schon, das er KEINE Typeinfo braucht

...


{$M+}
  TTest = class(TList)
  private
    fTT : integer;
  published
    property TT : integer read fTT write fTT;
  end;
{$M-}
hab die erste vordefinition (oder wie nennt man das?) der klasse übersehen, und da war noch kein M+ definiert.

hab das M+ ganz nach oben gestellt und nun funkts ...

Kedariodakon 8. Mär 2007 20:29

Re: RTTI {$M+}bei TObject
 
Ah, gut möglich...

Schön zu wissen :-D


Bye Christian


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:59 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz