“对象打开时,不允许操作”,该怎么解决

“对象打开时,不允许操作”
“对象打开时,不允许操作”,该怎么解决

从ini文件中循环读取三条数据配置信息,第二次循环就报这个错,然后我改为只读一条信息不用循环,然后又发现点第二次查询按钮时报这个错。求助怎么解决? qry1.Close;
      qry1.Open;就这两行报错。

------解决方案--------------------
ini对象需要释放过程,示意如下
----------------------------------------
ini := Tinifile.create(FileName);
try
  //调用ini的过程
finally
  ini.free;//释放ini
end;



引用:
另外再问下,我那样处理异常合理吗?


你的代码中可能的异常点有三个, 你需要分别处理(或者对异常信息进行分析):
1 ini相关
   ini文件不存在时
   ini文件中相关键值不存在时
2 conn1连接失败时
3 qry1.open事件执行失败时(比如sql语句错误)  

------解决方案--------------------
既然循环引用,记得要释放:
ini.Destroy;//释放资源
------解决方案--------------------
我倒是觉得你的con.connectstring:=  这一句前面应该加上 con.connect:=false;  要不是连接打开时是无法重新写connectsting的
------解决方案--------------------
 qry1.Close;//放connectionstring 上面;
qry1.connectiongstring:='...';
      qry1.Open;

“对象打开时,不允许操作”,该怎么解决
------解决方案--------------------
把关闭放到最上面!
还有这种读取ini文件的方式我还是第一次见,看不出有什么好处!
------解决方案--------------------
把 qry1.Close;往前挪吧。
------解决方案--------------------
似乎没有 con1.connection:=true;
------解决方案--------------------
楼主是哪个版本的delphi?

------解决方案--------------------
LZ的delphi是怎麼改變背景色的??
------解决方案--------------------
引用:
LZ的delphi是怎麼改變背景色的??

“对象打开时,不允许操作”,该怎么解决
------解决方案--------------------
Qry1先关闭再Open有点另类,是要处理之前的Qry1没有被上次正常关闭吗,加个判断是否已经打开,否则Qry1.Close肯定要触发异常。
ini的释放应该是放在Finally里吧,
------解决方案--------------------
引用:
我倒是觉得你的con.connectstring:=  这一句前面应该加上 con.connect:=false;  要不是连接打开时是无法重新写connectsting的

+1.
LZ应当是将con绑定到qry1的Connection上了吧。所以当qry1执行open了之后con就自动被打开了,于是下一次再修改connectstring时报错。