こんにちわ
エディットボックスに文字列が入って場合に
その文字列を表示させ
もし定数と同じだったら
定数を表示させるみたいな処理を作りたいんですけど
文字列から定数とか変数を取り出す関数とかってありますか?
こんな感じに進めてみたんですけど
IF文だと定数が増えた時に大変だと思って(^^;;
初心者の質問ですいませんが
どなたか教えていただけないでしょうか?
unit Unit1;
const Error='エラーが発生しました';
Success='成功しました';
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
if Edit1.Text='Error' then
begin
Showmessage(Error);
end
else
begin
if Edit1.Text ='Success' then
begin
ShowMessage(Success);
end
else
begin
ShowMessage(Edit1.text);
end;
end;
end;
end.
定数の変数名は、コンパイル時に展開されるのでなくなります。
たとえばTStringListを使って、連想配列のようにするのはどうでしょう。
var
ConstList: TStringList;
procedure TForm1.Form1Create(Sender: TObject);
begin
ConstList['Error'] := 'エラー定数';
constList['Success'] := 'サクセス定数';
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(ConstList[Edit1.Text]);
end;
initialization
ConstList := TStringList.Create;
finalization
FreeAndNil(ConstList);
西野さま
返答ありがとうございます。
>定数の変数名は、コンパイル時に展開されるのでなくなります。
「なくなる」というのはどういうことなんでしょうか?
また、先ほどのプログラムをテストさせていただいたのですが、
> ConstList['Error'] := 'エラー定数';
> constList['Success'] := 'サクセス定数';
どうもString型を入れるとエラーが出てきます。(^^;;;
連想配列ってはじめて聞いた言葉なので、今調べているのですが、
お時間があればまた教えていただけないでしょうか?
※Valuesが必要です。
下記ならうまくいきました。
procedure TForm1.FormCreate(Sender: TObject);
begin
ConstList.Values['Error'] := 'エラー定数';
ConstList.Values['Success'] := 'サクセス定数';
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(ConstList.Values[Edit1.Text]);
end;
西野さま
ウォレスさま
教えていただきありがとうございます。
確かに、よく考えれば分かることですね(^^;;;;;
すいません。よく考えずに質問ばかりしてしまって。
西野さま
>「なくなる」というのはどういうことなんでしょうか?
直球すぎて何が何が分からないかが分かりません(?)ね
あと凄く偉そうなレスでした。申し訳ありませんでした。
西野さま、ウォレスさま。大変助かりました。ありがとうございました。
ツイート | ![]() |