-3

実行時に名前で変数を見つけて、その値を設定および取得するにはどうすればよいですか?

ユーザーが変数の名前を入力する編集が 1 つあります。(ユーザーが存在する変数の名前を入力すると仮定します。) プログラムが名前で変数を検索し、値を返す必要があります。また、変数の値を変更したいと思います。

架空の関数名を使用した例を次に示します。

// Display value of variable whose name is given by Edit1.Text
ShowMessage(GetValueOfVariable(Edit1.Text));

SetValueToVariable(Edit1.Text, 'NewValueToVariable'); //Set new value to variable.
4

2 に答える 2

3

変数とは、コーディングによって宣言した変数を意味する場合、希望することは不可能です。

変数とは、コンポーネントのフィールドに格納されている値(たとえば、編集ボックスに格納されているテキスト)を意味する場合、このアプローチを試すことができます。メインフォームのすべてのコンポーネントは親として持っています...まあ、メインフォーム。また、編集ボックスなどの「コンポーネントの保存」を含む各コンポーネントにも名前が付いています。「ストレージコンポーネント」に賢明な名前を付けて、メインフォームを親として持つコンポーネントのリストを循環させることができます。このようなもの:

for i := 0 to MainForm.ComponentCount do
begin
  if MainForm.Components[i] is TEdit then
    if MainForm.Components[i].Name = '{the name you seek for}' then
      ShowMessage(MainForm.Components[i].Text)
end;

英語では、フォーム内のすべてのコンポーネントを循環します。コンポーネントが編集フィールドであり、希望する名前が付いている場合は、その値を表示します。

于 2013-02-14T11:56:28.773 に答える
0

ローカル変数を名前で参照したいことをコメントで明確にします。これは、Delphi のすべてのバージョンで不可能です。

名前で値を参照できるようにしたい場合は、ローカル変数を使用して値を保存するのをやめる必要があります。代わりに辞書を使用してください。Delphi では次のようになります。

TDictionary<string, YourValueDataType>

これは、Generics.Collections ユニットで定義されたジェネリック クラスです。

たとえば、値が整数の場合は、次を使用します

TDictionary<string, Integer>
于 2013-02-14T18:39:14.973 に答える