掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
文字列分岐のCase文について (ID:148993)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
順序型以外でcaseの分岐はできないですね。 やるとすると、いったん列挙型に変換して、それでcaseの分岐、という感じかなと思います。 uses System.TypInfo, System.SysConst, type TFoo = (ABC, DEF, GHI); TFooHelper = record helper for TFoo class function FromString(const S: String): TFoo; static; end; class function TFooHelper.FromString(const S: String): TFoo; var P: PTypeInfo; IValue: Integer; begin P := TypeInfo(TFoo); IValue := System.TypInfo.GetEnumValue(P,S); with GetTypeData(P)^ do begin if (IValue < MinValue) or (IValue > MaxValue) then begin raise ERangeError.CreateRes(@SRangeError); end; end; Result := TFoo(IValue); end; procedure TForm1.Button1Click(Sender: TObject); var Foo: TFoo; begin Foo := TFoo.FromString(Edit1.Text); case Foo of ABC: begin Label1.Caption := 'ABC'; end; DEF: begin Label1.Caption := 'DEF'; end; GHI: begin Label1.Caption := 'GHI'; end; end; end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.