AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

RTTI {$M+}bei TObject

Ein Thema von Gruber_Hans_12345 · begonnen am 8. Mär 2007 · letzter Beitrag vom 8. Mär 2007
Antwort Antwort
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.439 Beiträge
 
Delphi 2007 Professional
 
#1

RTTI {$M+}bei TObject

  Alt 8. Mär 2007, 20:01
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?
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: RTTI {$M+}bei TObject

  Alt 8. Mär 2007, 20:48


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
Angehängte Dateien
Dateityp: rar project1_252.rar (3,5 KB, 1x aufgerufen)
Christian
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.439 Beiträge
 
Delphi 2007 Professional
 
#3

Re: RTTI {$M+}bei TObject

  Alt 8. Mär 2007, 20:56
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 ...
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: RTTI {$M+}bei TObject

  Alt 8. Mär 2007, 21:01
Hmm, hab das gerade in einem etwas größerem getestet und es funktioniert auch da...

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
Christian
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.439 Beiträge
 
Delphi 2007 Professional
 
#5

Re: RTTI {$M+}bei TObject

  Alt 8. Mär 2007, 21:03
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 ....
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.439 Beiträge
 
Delphi 2007 Professional
 
#6

Re: RTTI {$M+}bei TObject

  Alt 8. Mär 2007, 21:26
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 ...
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: RTTI {$M+}bei TObject

  Alt 8. Mär 2007, 21:29
Ah, gut möglich...

Schön zu wissen


Bye Christian
Christian
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:47 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