文字列から変数を取り出せる?

解決


まこと  2005-07-04 22:07:26  No: 16170

こんにちわ

エディットボックスに文字列が入って場合に
その文字列を表示させ
もし定数と同じだったら
定数を表示させるみたいな処理を作りたいんですけど
文字列から定数とか変数を取り出す関数とかってありますか?

こんな感じに進めてみたんですけど
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.


にしの  2005-07-04 22:49:21  No: 16171

定数の変数名は、コンパイル時に展開されるのでなくなります。
たとえば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);


まこと  2005-07-05 02:01:39  No: 16172

西野さま

返答ありがとうございます。
>定数の変数名は、コンパイル時に展開されるのでなくなります。
「なくなる」というのはどういうことなんでしょうか?

また、先ほどのプログラムをテストさせていただいたのですが、

>  ConstList['Error'] := 'エラー定数';
>  constList['Success'] := 'サクセス定数';

どうもString型を入れるとエラーが出てきます。(^^;;;

連想配列ってはじめて聞いた言葉なので、今調べているのですが、
お時間があればまた教えていただけないでしょうか?


ウォレス  2005-07-05 02:14:10  No: 16173

※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;


まこと  2005-07-05 02:30:54  No: 16174

西野さま
ウォレスさま

教えていただきありがとうございます。

確かに、よく考えれば分かることですね(^^;;;;;
すいません。よく考えずに質問ばかりしてしまって。

西野さま
>「なくなる」というのはどういうことなんでしょうか?
直球すぎて何が何が分からないかが分かりません(?)ね
あと凄く偉そうなレスでした。申し訳ありませんでした。

西野さま、ウォレスさま。大変助かりました。ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加