首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

用短信猫写了一个程序,今天早上来了不能发短信了,为什么?解决思路

2012-02-14 
用短信猫写了一个程序,今天早上来了不能发短信了,为什么?请大家帮忙看看:主要用了timer控件,每5分钟向数据

用短信猫写了一个程序,今天早上来了不能发短信了,为什么?
请大家帮忙看看:主要用了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.

[解决办法]
网络的问题吧
[解决办法]
你的定时器里没有看到刷新数据的语句。如:mybase.requery;
//只有这个判断语句
if mybase.RecordCount('TB_SendMessage','isSent','0') > 0 then

[解决办法]
没有看到你的表mybase的SQL语句及刷新语句

正常的情况下:
mybase.sql:='select * from tel';
mybase.open;
在定义器中应该执行一下

mybase.requery();//重新从服务器读取数据,否则你表中的数据一起是你第一次打开时的数据。
if mybase.recor............

热点排行