![]() |
Ist string eine Enumeration?
Hallo,
ich habe zur Laufzeit einen String wie z.B. 'TFontStyle' oder 'TObject'. Ich benötige nun eine Funktion, die mir zurückgibt ob der String eine Enumeration ist oder nicht. Wie kann ich das prüfen? In einem Beispiel soll bei 'TFontStyle' true und 'TObject' false zurückgegeben werden. Danke! |
AW: Ist string eine Enumeration?
// Edit:
Kommando zurück, für dein Beispiel mit TFontStyle scheint es nicht zu funktionieren da keine ausreichenden RTTI-Informationen vorhanden sind. Schade.
Delphi-Quellcode:
ergibt
// JCL_DEBUG_EXPERT_GENERATEJDBG OFF
// JCL_DEBUG_EXPERT_INSERTJDBG OFF program Project7; {$APPTYPE CONSOLE} {$R *.res} uses System.SysUtils, System.Rtti, System.StrUtils; type TEnumerations = TArray<TRttiEnumerationType>; function getAllEnumerations(): TEnumerations; var context: TRttiContext; rttiType: TRttiType; begin Result := []; context := TRttiContext.Create(); for rttiType in context.GetTypes() do if (rttiType is TRttiEnumerationType) then Result := Result + [rttiType as TRttiEnumerationType]; end; procedure printEnumerations(const enumerations: TEnumerations); inline; var enumeration: TRttiEnumerationType; begin for enumeration in enumerations do WriteLn(enumeration.ToString()); end; procedure checkForEnumString( const enumeration: TRttiEnumerationType; const stringValue: String ); begin if System.StrUtils.MatchStr(stringValue, enumeration.GetNames()) then WriteLn(stringValue, ' is a value of ', enumeration.ToString()); end; procedure p(); const someEnumString = 'dkStatic'; var enumeration: TRttiEnumerationType; begin for enumeration in getAllEnumerations() do checkForEnumString(enumeration, someEnumString); end; begin try p(); except on E: Exception do Writeln(E.ClassName, ': ', E.Message); end; readln; end.
Code:
dkStatis is a value of TDispatchKind
|
AW: Ist string eine Enumeration?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:04 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