如下:const 
    qustring:='datamodule1.query1.fieldbyname('ab').asstring';
我想在stringlist里添加上面那个常量,实际是要添加'ab'字段的值。
即  strlst.add(qustring)添加的是字段'ab'的值。

解决方案 »

  1.   

    procedure TFormMain.BitBtn2Click(Sender: TObject);
    var
      strlst,strlstfield:Tstringlist;
      i,j:integer;
      tempqueryfields:string;
    begin
           strlst:=tstringlist.Create;
           strlstfield:=tstringlist.Create;
           strlst.Add(stringreplace(selectedfields,',',' ',[rfReplaceAll]));
           strlstfield.Add(selectedfields);
           strlstfield.Delimiter:=',';
           strlstfield.DelimitedText:=selectedfields;
             for i:=0 to strlstfield.Count-1 do
               begin
                tempqueryfields:=tempqueryfields+datamodule1.ADOQuerydata.fieldbyname(strlstfield.Strings[i]).AsString+#9;
               end;
             for j:=0 to datamodule1.ADOQuerydata.RecordCount-1 do
                begin
                  strlst.Add(tempqueryfields);
                  datamodule1.ADOQuerydata.Next;
                end;
    我想让这个tempqueryfields变量在上一个循环取到值后再到下一个循环里作为变量再次添加到strlst里。
      

  2.   

    可以,这样(打开{$J+}编绎指令):
    procedure TFormMain.BitBtn2Click(Sender: TObject);
    var
      strlst,strlstfield:Tstringlist;
      i,j:integer;
    {$J+}
    const
      tempqueryfields: string = '';
    {$J-}
    begin
      ....
    end;///////
    这样你给了这个值后,在下次用回这个常量时就是上一次操作的值了..
      

  3.   

    我想让这个tempqueryfields变量在上一个循环取到值后再到下一个循环里作为变量再次添加到strlst里。
    ///////////////////////
    或者用全局的变量也行啊...
      

  4.   

    刚才贴错了。:procedure  TFormMain.BitBtn2Click(Sender:  TObject);  
    var  
       strlst,strlstfield:Tstringlist;  
       i,j:integer;  
       tempqueryfields:string;  
    begin  
                 strlst:=tstringlist.Create;  
                 strlstfield:=tstringlist.Create;  
                 strlst.Add(stringreplace(selectedfields,',','            ',[rfReplaceAll]));  
                 strlstfield.Add(selectedfields);  
                 strlstfield.Delimiter:=',';  
                 strlstfield.DelimitedText:=selectedfields;  
                     for  i:=0  to  strlstfield.Count-1  do  
                         begin  
                           tempqueryfields:=tempqueryfields+'datamodule1.ADOQuerydata.fieldbyname('''+strlstfield.Strings[i]+''').AsString'+#9;  
                         end;  
                     for  j:=0  to  datamodule1.ADOQuerydata.RecordCount-1  do  
                           begin  
                               strlst.Add(tempqueryfields);  
                               datamodule1.ADOQuerydata.Next;  
                           end;  
      

  5.   

    正常来讲我是想.strlst.add(datamodule1.ADOQuerydata.fieldbyname(strlstfield.Strings[‘fieldname’]).AsString);
    但是我上面那样出来的结果则是:strlst.add('datamodule1.ADOQuerydata.fieldbyname(strlstfield.Strings[‘fieldname’]).AsString');
    它把这一句当一个字符串了。