var 
  str1,str2,str3,str4,str5:string;
  i:integer;
  s:array[1..5] of string;
begin
  str1:='dfdsfdsf';
  str2:='adsdfdsfdsf';
  str3:='dfdsfddfdsfsf';
  str4:='dfdsdsfdffdsf';  
  str5:='sdfdsfdfdsfdsf';
  for i:=1  to 5  do 
  begin
    s[i]:='str'+inttostr(i);  //?想把 s[1]:=str1;s[2]:=str2;s[3]:=str3实现;  
  end;
end;

解决方案 »

  1.   

    s[i]:='str'+#39+inttostr(i)+#39;
    试试这个,应该有效的。
      

  2.   

    为什么不把Str做成一个数组呢?这样就不需要这种用法了
    可以参考:http://www.china-askpro.com/msg21/qa27.shtml
      

  3.   

    to gytyl(丘山) 
      肯定不行,这样是  str'3'
      

  4.   

    楼主,你这样只能这么写var 
      str3:string;
    function getvarvalue(s:string):string;
    begin
     if s='str3' then 
      result:=str3;
    end;
    begin
       str3:='dfdsfddfdsfsf';
       s[3]:=getvarvalue('str'+inttostr(3)); 
       
    end;
      

  5.   

    你说的是不是像vfp下的&变量的做法。
    如是,你一定很失望,不行。
      

  6.   

    变量名只是在原代码中才存在的,编译后就不存在了,全都以指针形式存在.做个结构
    type t=record
      name: string;
      value: string;
    end;var tt: array of t;在程序里循环检查tt[i].name='str1',取出对应的tt[i].value