1、while not Eof do//这一段是干什么用的
用于判断ADOQuery2的记录指针是不是到了末尾,这样可以遍历所有记录,她和下面的Next配合使用。
2、Result :=  Result + Fields[1].AsString + #13#10;//这一段也不明白
叠加一个得到一个字符串,#13#10表示回车换行符
3、记录可以使用简单的sql语句完成吗
这已经是相当简单的方法
      
      
—————————————————————————————————
MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
             毁誉由人,望天上云卷云舒,聚散任风。';
if Not Assigned(I) then
  I := TI.Create(Nil);
I.Maxim := MaximStr;
I.Explain := '假如上述代码中出现“OA”、“3D”等字样,改为“=”或者去掉';
I.Desire := '加不加分随你';
—————————————————————————————————
       

解决方案 »

  1.   

    哦,或者用
    listbox1.items.add(query1.fields[1].asstring);
    当然大同小异,不过这个函数我觉得能传递所用的combobox就更好了
      

  2.   

    使用TStringList进行叠加字符串最好,
    最好反回Result:=TStringList.text;
    这样速度快,如果记录有上千条,两者用的时间会有很大差别。
      

  3.   

    while not Eof do//这一段是干什么用的:
    注意前面这一句:
    with ADOQuery2 do
    结果就相当于
    while not ADOQuery2.Eof do.
      

  4.   

    不过我觉得这个函数用string返回一个列表的方式很不好用,应该改一下:
    function TForm1.GetTableList(ATableName: string): TStrings;
    begin 
      Result :=  TStringList.Create;
      try
        with ADOQuery2 do
        begin
          if Active then Close;
          SQL.Text := 'select * from ' + ATableName;
          Open; 
          First;
          while not Eof do
          begin
            Result.Add(Fields[1].AsString);
            Next;
          end;
          Close;
       except
          Result.Free;
          Raise;
       end; 
    end;