问题:如何将一个字符串(如:'abcd')转换成一个变量名???
代码:
procedure XXX();
var aString1: String;
    aString2: String;
    aString3: String;
    aString4: String;
    aIndex: Integer;
begin
  for aIndex := 1 to 4 do
  begin
    转换函数(Format('aString%d',[aIndex])) := IntToStr(aIndex);
  end;
end;
得到的结果是:
aString1的值是1
aString2的值是2
aString3的值是3
aString4的值是4
您的答案:  ???

解决方案 »

  1.   

    脚本解析?IFPS或RemObject Pascal Script吧http://lysoft.7u7.net
      

  2.   

    用数组或用List之类的解决就失去意义了!
      

  3.   

    用RTTI也得不到变量的字符串名称啊?,除了脚本没有其他方式么?期待中
      

  4.   

    楼主的意思不用脚本解析,
    用数组和List能够解决?请贴出来学习一下
      

  5.   

    不可能的,在delphi中任何标识符(包括变量名、类名、过程名、标签、接口、包名等)都需要事先声明然后才能使用。delphi规定,必须在var 关键字后声明变量。
      

  6.   

    这个问题我也遇到过。当时的情况是,知道某个控件的Name,想要让Delphi把他认为是一个对象,以便对这个Name标示的控件进行操作。但实际上Delphi中没有什么函数能做到这一点。分析原因,是思考的方向错了。应该是先用名字找到与其对应的控件,然后再去访问控件。你可以试着这样做:利用窗体的Components属性,从头到尾遍历一次窗体所拥有的所有控件,用你知道的控件的名字字符串查找以这个字符串命名的控件,然后用Components[i](即以序号的形式)访问这个控件。这样做的缺点是耗时,窗体上的控件越多,遍历的控件也越多。当然,如果你能知道这个控件是某个控件的子控件(如某个Panel的子控件),还可以使用其父控件的Controls属性,这样找得会比较快。
      

  7.   

    楼上儿歌兄!你所提及的问题和我所提到的问题有些差异,不过可以给你提供个更好的方法去把一个字符串转换为控件对象,那就是FindComponent,看一下帮助文件,这个要比你的遍历省事得多,效率也高!但我的问题仍无法解决,因为我所要转换的结果不是类或类的实例,而是一个一般类型变量名,所以仍在寻找答案中......
      

  8.   

    procedure XXX();
    var aString1: String;
        aString2: String;
        aString3: String;
        aString4: String;
        aIndex: Integer;
    begin
      for aIndex := 1 to 4 do
      begin
        转换函数(Format('aString%d',[aIndex])) := IntToStr(aIndex);
      end;
    end;
    仅仅对以上过程作点修改
    procedure XXX();
    var aString:array[1..4] of String;
        aIndex: Integer;
    begin
      for aIndex := 1 to 4 do
      begin
        aString[aIndex]:= IntToStr(aIndex);
      end;
    end;
      

  9.   

    不是有人已经说了嘛,还寻找什么?--------------------------
    脚本解析?IFPS或RemObject Pascal Script吧
    --------------------------你所说的"用数组或用List之类的"也只是自己解析器的具体实现技术在“如何将一个字符串(如:'abcd')转换成一个变量名”这个问题上,
    用一个解析器,这就是你问题的答案。别浪费时间去“寻找”了,
    还是想想怎么调用其他解析器,或者想想怎么自己写一个解析器
      

  10.   

    变量名只是一个助记符号,就是编译器它也需要一个对照表来实现助记符号跟实际变量空间进行对应。
    你不让用数组,当然可以用Property方式来实现。
    不过对于局部变量,采用Property方式是没什么大的意义的。