新手请教一个Timer的问题和一个数据库程序发布的问题
问题1:Timer的Interval设置为10000;
程序如下
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
Sleep(5000);
Edit1->Text=StrToInt(Edit1->Text)+1;
}
Edit->Text的初始值是0
为何:Edit->Text从0变成1是15秒,后面的从1变成2,从2变成3……都是10秒?Timer的执行过程到底是怎样的?
问题2:我在c++ builder下用access开发的数据库程序,开发的时候是在access下手动创建数据库文件和表,然后通过控制面板-管理工具-数据源(ODBC)创建数据库别名。程序发布到其他电脑上的时候,是不是安装程序后,还得手动创建一下数据库别名。如何能够避免这种手动创建,实现程序直接安装完毕就能使用?用TQuery或ADO可以避免吗?
请麻烦给讲一讲
谢谢
[解决办法]
记得以前带我的一个师傅说,当你用TIMER控件时,里面慎用Sleep函数,事实上在后来我的实例中,如果这样使用的话还会带来意想不到的结果,比如定时器卡住不动(后来也没查原因了,事实是定时器卡住不计时,原因不解);
我是用SQLITE3,想必实现过程应该是一样,打开程序后自动创建个数据库即可,如果有的话就是打开数据库,等待写入。
[解决办法]
就算没有Sleep,Timer的定时时间也不精确的。进程并不会总是能得到CPU时间片的。
解决方式:1、自动创建ODBC数据源;2、不使用ODBC。
[解决办法]
没必要使用sleep。至于access,用ADO就挺好。