请大家帮忙看看:主要用了timer控件,每5分钟向数据库查询一次看看有没有数据。早上来了看看不能用,只用重新启动程序才能用,程序在服务器上,总不能每天都要重启呀,谢谢大家,请看看哪里有问题,难道timer会自动关闭?
procedure TForm1.Button1Click(Sender: TObject);
var
Mobile_Type:pchar;
CopyRight:pchar;
CopyRightToCOM:pchar;
begin
CopyRight:=PChar('//XXX公司,网址www.sohu.com//');
if Sms_Connection(CopyRight,StrToInt(Edit1.text),9600,Mobile_Type,CopyRightToCOM)<>0 then
begin
Label1.Caption:='连接成功,芯片为:'+Mobile_Type+'!';
end
else
Label1.Caption:='连接失败!'
end;procedure TForm1.Button2Click(Sender: TObject);
begin
Sms_Disconnection;
Label1.Caption:='已断开!';
end;procedure TForm1.Timer1Timer(Sender: TObject);
var i ,j : integer;
begin
IDList.Clear;
MobileList.Clear;
ContentList.Clear;
if mybase.RecordCount('TB_SendMessage','isSent','0') > 0 then
begin
mybase1.SQL := 'select * from TB_SendMessage where isSent = 0 ';
temQuery1 := mybase1.OpenQuery;
temQuery1.First;
for i := 0 to temQuery1.RecordCount - 1 do
begin
IDList.Add(temQuery1.fieldbyname('ID').AsString);
MobileList.Add(temQuery1.fieldbyname('receivers').AsString);
ContentList.Add(temQuery1.fieldbyname('title').AsString);
temQuery1.Next;
end;
//mybase1.DisConnetServer;
//-----------------------------------发送短信---------------------------------//
for j := 0 to IDList.Count - 1 do
begin
if Sms_Send(mobilelist[j],ContentList[j]) = 1 then
begin
myList := listView1.Items.Add;
MyList.Caption := inttostr(j);
MyList.SubItems.Add(mobilelist[j]);
Mylist.SubItems.Add(ContentList[j]);
Mylist.SubItems.Add(datetimetostr(now()));
Mylist.SubItems.Add('发送成功');
mybase2.UpdateIsSent(IDList[j]);
//mybase2.DisConnetServer;
//showmessage('发送成功!');
sleep(15000);
end else
begin
myList := listView1.Items.Add;
MyList.Caption := inttostr(j);
MyList.SubItems.Add(mobilelist[j]);
Mylist.SubItems.Add(ContentList[j]);
Mylist.SubItems.Add(datetimetostr(now()));
Mylist.SubItems.Add('发送失败');
//showmessage( IDList[j]+'shibai');
//mybase2.UpdateIsSent(IDList[j]);
//showmessage('发送失败!');
sleep(15000);
end;
end;
end;
//mybase.DisConnetServer;
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
IDList := TstringList.Create;
MobileList := TstringList.Create;
ContentList := TstringList.Create;
mybase := TDBBase.Create;
mybase1 := TDBBase.Create;
mybase2 := TDBBase.Create;
temQuery1 := TADOQuery.Create(nil); mybase.ConnetServer();
mybase1.ConnetServer();
mybase2.ConnetServer(); button1.OnClick(button1);
end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
IDList.Free;
IDList := nil;
MobileList.Free;
MobileList := nil;
ContentList.Free;
ContentList := nil;
mybase.Free;
mybase := nil;
mybase1.Free;
mybase1 := nil;
mybase2.Free;
mybase2 := nil;
//temQuery1.Free;
//temQuery1 := nil;
mylist.Free;
mylist := nil;
end;
end.
procedure TForm1.Button1Click(Sender: TObject);
var
Mobile_Type:pchar;
CopyRight:pchar;
CopyRightToCOM:pchar;
begin
CopyRight:=PChar('//XXX公司,网址www.sohu.com//');
if Sms_Connection(CopyRight,StrToInt(Edit1.text),9600,Mobile_Type,CopyRightToCOM)<>0 then
begin
Label1.Caption:='连接成功,芯片为:'+Mobile_Type+'!';
end
else
Label1.Caption:='连接失败!'
end;procedure TForm1.Button2Click(Sender: TObject);
begin
Sms_Disconnection;
Label1.Caption:='已断开!';
end;procedure TForm1.Timer1Timer(Sender: TObject);
var i ,j : integer;
begin
IDList.Clear;
MobileList.Clear;
ContentList.Clear;
if mybase.RecordCount('TB_SendMessage','isSent','0') > 0 then
begin
mybase1.SQL := 'select * from TB_SendMessage where isSent = 0 ';
temQuery1 := mybase1.OpenQuery;
temQuery1.First;
for i := 0 to temQuery1.RecordCount - 1 do
begin
IDList.Add(temQuery1.fieldbyname('ID').AsString);
MobileList.Add(temQuery1.fieldbyname('receivers').AsString);
ContentList.Add(temQuery1.fieldbyname('title').AsString);
temQuery1.Next;
end;
//mybase1.DisConnetServer;
//-----------------------------------发送短信---------------------------------//
for j := 0 to IDList.Count - 1 do
begin
if Sms_Send(mobilelist[j],ContentList[j]) = 1 then
begin
myList := listView1.Items.Add;
MyList.Caption := inttostr(j);
MyList.SubItems.Add(mobilelist[j]);
Mylist.SubItems.Add(ContentList[j]);
Mylist.SubItems.Add(datetimetostr(now()));
Mylist.SubItems.Add('发送成功');
mybase2.UpdateIsSent(IDList[j]);
//mybase2.DisConnetServer;
//showmessage('发送成功!');
sleep(15000);
end else
begin
myList := listView1.Items.Add;
MyList.Caption := inttostr(j);
MyList.SubItems.Add(mobilelist[j]);
Mylist.SubItems.Add(ContentList[j]);
Mylist.SubItems.Add(datetimetostr(now()));
Mylist.SubItems.Add('发送失败');
//showmessage( IDList[j]+'shibai');
//mybase2.UpdateIsSent(IDList[j]);
//showmessage('发送失败!');
sleep(15000);
end;
end;
end;
//mybase.DisConnetServer;
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
IDList := TstringList.Create;
MobileList := TstringList.Create;
ContentList := TstringList.Create;
mybase := TDBBase.Create;
mybase1 := TDBBase.Create;
mybase2 := TDBBase.Create;
temQuery1 := TADOQuery.Create(nil); mybase.ConnetServer();
mybase1.ConnetServer();
mybase2.ConnetServer(); button1.OnClick(button1);
end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
IDList.Free;
IDList := nil;
MobileList.Free;
MobileList := nil;
ContentList.Free;
ContentList := nil;
mybase.Free;
mybase := nil;
mybase1.Free;
mybase1 := nil;
mybase2.Free;
mybase2 := nil;
//temQuery1.Free;
//temQuery1 := nil;
mylist.Free;
mylist := nil;
end;
end.
//只有这个判断语句
if mybase.RecordCount('TB_SendMessage','isSent','0') > 0 then
mybase.sql:='select * from tel';
mybase.open;
在定义器中应该执行一下mybase.requery();//重新从服务器读取数据,否则你表中的数据一起是你第一次打开时的数据。
if mybase.recor............
var
Mobile_Type:pchar;
CopyRight:pchar;
CopyRightToCOM:pchar;
begin
CopyRight:=PChar('通讯测试公司');
if Sms_Connection(CopyRight,StrToInt(Edit1.Text),9600,Mobile_Type,CopyRightToCOM)<>0 then
begin
Edit2.Text:='连接成功,芯片为:'+Mobile_Type+'!';
end
else
Edit2.Text:='连接失败!'
end;