![]() |
Strings bei einer Case-Abfrage nutzen
Viele stört es, dass man nur Variablen vom Typ Char in einer Case-Abfrage nutzen kann. Aber: in Delphi braucht man keine Hundert-if-Abfragen zu machen. Und so gehts:
Delphi-Quellcode:
Dabei ist die Groß- und Kleinschreibung egal!
uses {...}, TypInfo, {...};
type TSuchmaschine = (tcv_Lycos, tcv_Google, tcv_Yahoo, tcv_Fireball); procedure TForm1.Button1Click(Sender: TObject); var s: string; begin s := ComboBox1.Text; case TSuchmaschine(GetEnumValue(TypeInfo(TSuchmaschine), 'tcv_' + S)) of tcv_Lycos: ShowMessage('http://www.lycos.de'); tcv_Google: ShowMessage('http://www.google.de'); tcv_Yahoo: ShowMessage('http://www.yahoo.de'); tcv_Fireball: ShowMessage('http://www.fireball.de'); else ShowMessage('Keine Suchmaschine angegeben'); end; end; Quelle: ![]() Chris1308 |
Na da kenne ich eine Lösung mit weniger Programmieraufwand.
Delphi-Quellcode:
Und das ganze case-insensitive:
function CaseStringOf(const Value: string; const Args: array of string): string;
begin for Result := High(Args) downto 0 do if Value = Args[Result] then Break; end;
Delphi-Quellcode:
Diese ist
function CaseStringIOf(const Value: string; const Args: array of string): string;
begin for Result := High(Args) downto 0 do if CompareText(Value, Args[Result]) = 0 then Break; end; 1. Schneller, da nicht die RTTI benötigt wird 2. Einfache zu handhaben:
Delphi-Quellcode:
case CaseStringOf(S, ['Str1', 'Str2', 'Str3']) of
0: // Str1 1: // Str2 2: // Str3 else ... end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:54 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