Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   RTTI - Rad 2007 (https://www.delphipraxis.net/153374-rtti-rad-2007-a.html)

Highttower 30. Jul 2010 12:38

Delphi-Version: 2005

RTTI - Rad 2007
 
Hallo zusammen,

gibt es eine Möglichkeit, public-Properties (nicht PUBLISHED) mit Hilfe einer wie auch immer gearteten RTTI auszulesen? Mit Rad 2010 ist das ja nicht das große Problem... allerdings bin ich grade mit dem Rad Studio 2007 beschäftigt. Hier gibt es einen Unit Typinfo, diese ermöglicht es mir auf published Properties zu zu greifen. Weder

Hier im Forum suchenTypinfo public

noch

Bei Google suchenTypinfo public

haben bisher zufrieden stellende Ansätze zu Tage gefördert.

Ein reines durchsuchen nach RTTI hilft mir auch nicht viel ... ihr glaubt gar nicht wieviel startTime(s) es gibt :(.

Bin langsam echt verzweifelt ... falls das nicht geht, gibt es eine schickere Möglichkeit public in published zu wandeln? Vllt per Compilerschalter oder so?

Vielen Dank,

Tobi

Alter Mann 30. Jul 2010 12:49

AW: RTTI - Rad 2007
 
Hallo

suche mal nach FindPropInfo.

Highttower 30. Jul 2010 13:10

AW: RTTI - Rad 2007
 
Hallo,

das klappt nicht zum einen konnt ich erst nicht drauf zu greifen, daher musste ich mir die in die Unit kopieren ....

Zum anderen findet auch diese Methode nur Published-Eigenschaften. Hier mal mein Code zum austesten:

Delphi-Quellcode:
  type

  TForm4 = class(TForm)
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    FValue : Integer;
    { Private-Deklarationen }
    procedure Foo(AObject : TObject);


  public

    property Scaleunit: Integer read FValue write FValue ;
    { Public-Deklarationen }
  end;
Delphi-Quellcode:
function FindPropInfo(Instance: TObject; const PropName: string): PPropInfo;
begin
  Result := GetPropInfo(Instance, PropName);
  if Result = nil then
    raise Exception.Create('Prop konnte nicht gefunden werden: '+PropName);
end;

procedure TForm4.Foo(AObject: TObject);
begin
  ShowMessage(  AObject.ClassName);
  ShowMessage(IntToStr( GetOrdProp(GetObjectProp(AObject,'Font'), 'Size')));
 // ReadProp(AObject, 'Value');
  if FindPropInfo(AObject, 'Value') = nil then
    ShowMessage('funzt');
end;

procedure TForm4.FormCreate(Sender: TObject);
begin
    FValue := 23;
    Foo(Self);
end;
Noch mal vielen Dank,

Tobi

himitsu 30. Jul 2010 13:30

AW: RTTI - Rad 2007
 
RTTI ... das ist doch der Unterschied zwischen Public und Published

Zitat:

Zitat von Highttower (Beitrag 1038616)
das klappt nicht zum einen konnt ich erst nicht drauf zu greifen, daher musste ich mir die in die Unit kopieren ....

Ich dachte man fügt, in soeinem Fall, einen passenden Suchpfad hinzu?

Highttower 30. Jul 2010 13:35

AW: RTTI - Rad 2007
 
Zitat:

Zitat von himitsu (Beitrag 1038621)
RTTI ... das ist doch der Unterschied zwischen Public und Published

grml, ja ... stimmt mist das hab ich heute morgen auch irgendwo gelesen... ich glaub es ging darum wie der Objektinspektor funktioniert ... gibt es den irgendein Möglichkeit das zu verschieben ... naja ich glaub nicht dran...

Vielen dank nochmal,

wenn noch jemand was weiß, würd mich freun wenn ich nach meinem Urlaub in 2 Wochen hier noch was finden würde ;).

Viele Grüße,

Tobi

himitsu 30. Jul 2010 13:52

AW: RTTI - Rad 2007
 
Was willst du eigentlich damit erreichen?

PS: eventuell hilft ja auch schon
Delphi-Quellcode:
{$M+}
, bzw.
Delphi-Quellcode:
{$TYPEINFO ON}

Daniel 30. Jul 2010 14:17

AW: RTTI - Rad 2007
 
Zitat:

Zitat von Highttower (Beitrag 1038607)
Ein reines durchsuchen nach RTTI hilft mir auch nicht viel ... ihr glaubt gar nicht wieviel startTime(s) es gibt :(.

Suchen Sie doch mal nach "RTTI" (mit Anführungszeichen). :stupid:
Die Suchtags machen das derzeit leider nicht mit, aber die URL funktioniert: http://www.delphipraxis.net/dp_searc...ch_matchmode=0

Highttower 30. Jul 2010 14:34

AW: RTTI - Rad 2007
 
Zitat:

Zitat von himitsu (Beitrag 1038631)
Was willst du eigentlich damit erreichen?

Ich will bestimmte Eigenschaften, verschiedener Klassen auf CSS Befehle(Eigenschaften) mappen. In D2010 geht das wunderbar, nur in D2007 halt nicht :( ... und es wäre schön wenn das irgendwie geht, im Notfall muss ich halt doch typisiert jede Klasse abklappern :(.

Naja in 10 Stunden geht der Flieger und ich bin erst mal weg. Vielleicht komm ich ja nach dem Urlaub auf die zündene Idee.

Aber ich hab mich schon drauf ein gerichtet das ich erst mal ein paar Tage mit
Delphi-Quellcode:
if AObj is TClass then begin ...
beschäftigen darf.

Vielen dank und viele Grüße,

Tobi


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:22 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