如何在运行时按名称查找变量并设置并获取其值?
我有一个编辑,用户输入变量的名称。 (假设用户输入存在的变量的名称。) 我需要程序按名称查找变量并返回值。 我还想改变变量的值。
以下是假设函数名称的示例:
// Display value of variable whose name is given by Edit1.Text
ShowMessage(GetValueOfVariable(Edit1.Text));
SetValueToVariable(Edit1.Text, 'NewValueToVariable'); //Set new value to variable.
答案 0 :(得分: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;
在英语中,您可以遍历表单中的每个组件。如果某个组件是一个编辑字段,并且它具有您想要的名称,那么您将显示其值。
答案 1 :(得分:0)
您在评论中澄清您希望按名称引用本地变量。这在Delphi的所有版本中都是不可能的。
如果您希望能够按名称引用值,则必须停止使用局部变量来存储值。而是使用字典。在Delphi中:
TDictionary<string, YourValueDataType>
这是Generics.Collections单元中定义的泛型类。
因此,如果您的值是整数,则可以使用
TDictionary<string, Integer>