-3

如何在运行时按名称查找变量并设置和获取它们的值?

我有一个编辑,用户输入变量的名称。(假设用户输入了一个存在的变量的名称。)我需要程序按名称找到变量并返回值。我还想更改变量的值。

这是一个带有假设函数名称的示例:

// 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 中都是不可能的。

如果您希望能够通过名称引用值,那么您将不得不停止使用局部变量来存储您的值。而是使用字典。在德尔福是:

TDictionary<string, YourValueDataType>

这是在 Generics.Collections 单元中定义的泛型类。

因此,如果您的值是整数,例如,您将使用

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