![]() |
Delphi-Version: 5
RTTI und EComponentError beim Auslesen der Eigenschaften
Ich spiele gerade ein wenig mit dem RTTI und wollte alle Eigenschaften eines TForm ausgeben. Dabei bekomme ich bei der Eigenschaft 'ComObject' einen EComponentError mit der Medung 'TForm1' wurde nicht als COM-Klasse registriert.
Folgenden Code führe ich auf einer MainForm mit einem TMemo aus:
Delphi-Quellcode:
Gibt es eine Möglichkeit den Fehler zu vermeiden, bzw. sollte lval nicht einfach (empty) zurückliefern?
procedure TForm1.FormCreate(Sender: TObject);
var ctx: TRttiContext; lty: TRttiType; lprops: TArray<TRttiProperty>; lprop: TRttiProperty; lval: TValue; begin IntValue := 1234; StrValue := 'Hello world'; // ctx := TRttiContext.Create; lty := ctx.GetType(ClassType); lprops := lty.GetProperties; for lprop in lprops do begin if lprop.IsReadable then begin lval := lprop.GetValue(Self); // EComponentError bei ComObject memo1.lines.Add(format('%s = %s', [lprop.Name, lval.ToString])); end else memo1.lines.Add(format('%s', [lprop.Name])); end; ctx.Free; end; |
AW: RTTI und EComponentError beim Auslesen der Eigenschaften
Zitat:
|
AW: RTTI und EComponentError beim Auslesen der Eigenschaften
Zitat:
Delphi-Quellcode:
als Lösung übrig.
try/except
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:24 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