⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.pas

📁 利用delphi编写的手机短信发送程序
💻 PAS
📖 第 1 页 / 共 2 页
字号:
        end;
   end;
   s_status := 1;
   sleep ( 5000 );
   init_port_test_0 (ApdComPort1);

   timer1.Interval := 4000;
   timer1.Enabled := true;
end;

procedure TForm1.Timer2Timer(Sender: TObject);
VAR i : integer;
  isfound : integer;
begin
  if s_issend = 0 then begin
    s_issend := 1 ;
    if ( s_status = 2 ) then begin
      if ( e = 0 ) then begin
        self.ADODataSet1.Requery() ;
        self.ADODataSet1.First ;
        i := 0 ; isfound := 0;
        for i := 0 to self.ADODataSet1.RecordCount do begin
                if self.ADODataSet1.Fields[3].Value = '未发' then begin
                        self.Label4.Caption :=self.ADODataSet1.Fields[1].Value;
                        isfound := 1;
                        cur_id := self.ADODataSet1.Fields[0].Value ;
                        break;
                end;
                self.ADODataSet1.Next ;
        end;
        if isfound = 1 then begin
          send_num := trim(self.ADODataSet1.Fields[1].Value);
          send_text:= trim( self.ADODataSet1.Fields[2].Value );
        end else begin
          send_num := '';
          send_text := '';
        end;
      end;
      if send_num <> '' then begin
        self.StatusBar1.Panels[2].Text := '正在发送 ' + trim(self.ADODataSet1.Fields[1].Value);
        T_send ( ApdComPort1, send_num, send_text );
        //if e = trys then begin e := 0; end;
      end else begin
        s_issend := 0;        
      end;
    end;
    //s_issend := 0;
  end;
end;

procedure TForm1.ToolButton4Click(Sender: TObject);
var s:string;
begin
    SELF.Timer2.Enabled := TRUE;
    str ( self.ADODataSet1.Recordset.RecordCount , s);
    showMessage (s );

end;

procedure TForm1.update_status ( i : integer; j : integer );
begin
 //update T_SEND set asdlkfjasdkfas
  if j = 0 then begin
  self.ADODataSet1.Filtered := false;
  self.ADODataSet1.Filter := 'ID = ' + inttostr(i );
  //Seek( i );
  self.ADODataSet1.Filtered := true;
  self.ADODataSet1.FindFirst ;
  self.ADODataSet1.Edit;
  self.ADODataSet1.Fields[3].Value := '已发';
  self.ADODataSet1.Fields[4].Value := FormatDateTime('yyyy-mm-dd hh:mm:ss', Now );
  self.ADODataSet1.Post ;
  self.StatusBar1.Panels[2].Text := ADODataSet1.Fields[1].Text + ' ' + '已发。';
  self.ADODataSet1.Filtered := false;
  end;
  if j = 1 then begin
  self.ADODataSet1.Filtered := false;
  self.ADODataSet1.Filter := 'ID = ' + inttostr(i );
  //Seek( i );
  self.ADODataSet1.Filtered := true;
  self.ADODataSet1.FindFirst ;
  self.ADODataSet1.Edit;
  self.ADODataSet1.Fields[3].Value := '失败';
  self.ADODataSet1.Fields[4].Value := FormatDateTime('yyyy-mm-dd hh:mm:ss', Now );
  self.ADODataSet1.Post ;
  self.StatusBar1.Panels[2].Text := ADODataSet1.Fields[1].Text + ' ' + '发送失败。';
  self.ADODataSet1.Filtered := false;
  end;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
   screen.Cursor := crHourGlass;
   sleep ( 1000 );
   init_port_test_0 (ApdComPort1);
   timer1.Interval := 4000;
   timer1.Enabled := true;
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
  self.StatusBar1.Panels[1].Text := '<发送>';
  timer2.Enabled := true;
  
end;

procedure TForm1.FormResize(Sender: TObject);
begin
  //showmessage ( 'asdfsadf' );
end;

procedure TForm1.PageControl1Change(Sender: TObject);
begin
  if self.PageControl1.ActivePageIndex = 1 then begin
    self.ADODataSet2.Requery();
    self.DBGrid2.Refresh ;
  end;
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
  self.StatusBar1.Panels[1].Text := '<停止>';
  timer2.Enabled := false;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Shell_NotifyIcon(NIM_DELETE,@tnd);
end;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
  var s : string;
begin
  s := Socket.ReceiveText;
  self.StatusBar1.Panels[2].Text := s;
end;
{
procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
var s: string;
begin

  s := AThread.Connection.ReadLn ( chr(26) ) ; //'</msg>' );
  self.StatusBar1.Panels[2].Text := s ;
  AThread.Connection.Disconnect;
  insert_rec ( s );
end;

procedure TForm1.Insert_rec ( s : string );
var s1, s2 : string;
begin
  if StrPos ( pchar(s), Pchar( '<num>' ) ) = NIL then begin
    ShowMessage ( '收到的信息格式不对。' );
    exit;
  end;
  if StrPos ( pchar(s), Pchar( '<\num>' ) ) = NIL then begin
    ShowMessage ( '收到的信息格式不对。' );
    exit;
  end;
  if StrPos ( pchar(s), Pchar( '<msg>' ) ) = NIL then begin
    ShowMessage ( '收到的信息格式不对。' );
    exit;
  end;
  if StrPos ( pchar(s), Pchar( '<\msg>' ) ) = NIL then begin
    ShowMessage ( '收到的信息格式不对。' );
    exit;
  end;
  s1 := copy ( s, 6, pos ( '</num>', s )-6 );
  s2 := copy ( s, pos ( '<msg>', s )+5,  pos( '</msg>', s ) - pos ( '<msg>', s ) - 5 );
  self.ADODataSet1.InsertRecord([nil,s1,s2,'未发'] ); 
end;
}

procedure TForm1.DBGrid1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var p : TPoint;
begin
  if button = mbRight then begin
    p := DBGrid1.ClientToScreen(Point(x,y));
    self.PopupMenu1.Popup ( p.X, p.Y );

  end;
end;

procedure TForm1.N1Click(Sender: TObject);
var i : integer;
// S: STRING;
// d : Tdatasource;
begin
  if timer2.Enabled = true then begin
    ShowMessage ( '请先停止发送再清除记录。' );
    exit;
  end;

  {self.ADODataSet1.Filtered := false;
  self.ADODataSet1.Filter := 'STATUS = ' + ''''+'已发'+'''';
  self.ADODataSet1.Filtered := true;
  self.ADODataSet1.DeleteRecords( arFiltered );
  self.ADODataSet1.UpdateBatch();
  exit;}

  screen.Cursor := crHourGlass;
  for i := 1 to 10 do begin
    self.ADODataSet1.Requery();
    self.ADODataSet1.First ;
    while not self.ADODataSet1.Eof do begin
      if self.ADODataSet1.Fields[3].Value = '已发' then begin
        self.ADODataSet1.Delete ; //Records( arCurrent );
        self.ADODataSet1.UpdateBatch; //(arCurrent) ;
      end;
      self.ADODataSet1.Next;
    end;
    self.ADODataSet1.UpdateBatch();
  end;
  
  //self.ADODataSet1.UpdateRecord;
  self.ADODataSet1.Requery();
  self.ADODataSet1.Refresh;
  self.DBGrid1.Update;
  self.DBGrid1.Refresh;
  screen.Cursor := crArrow;
exit;
  
  screen.Cursor := crHourGlass;
  self.DBGrid1.DataSource := nil;
  self.DBGrid1.Refresh;
  self.DataSource1.DataSet.Close ;
  self.ADODataSet1.Close ;
  i := self.ADOQuery1.ExecSQL;
  self.DataSource1.DataSet.Open ;
  self.DataSource1.DataSet.Resync([rmExact]);
  
  self.ADODataSet1.Open ;
  self.ADODataSet1.Requery();
  self.ADODataSet1.Refresh;
  self.ADODataSet1.Refresh;
  self.DBGrid1.DataSource := self.DataSource1;

  self.DBGrid1.Refresh;
  self.DBGrid1.Refresh;
  screen.Cursor := crArrow;
  exit;
  
  sleep ( 1000 );
    screen.Cursor := crHourGlass;
  i := self.ADOQuery1.ExecSQL;
   i := self.ADOQuery1.ExecSQL;
     i := self.ADOQuery1.ExecSQL;
  //self.ADODataSet1.UpdateBatch ();
  self.ADODataSet1.Requery();
  self.ADODataSet1.Refresh;
  self.DBGrid1.Invalidate;
  self.DBGrid1.InitiateAction;
  self.DBGrid1.Update;
  self.DBGrid1.Refresh;
  screen.Cursor := crArrow;

end;

procedure TForm1.qc1Click(Sender: TObject);
begin
  while not self.ADODataSet1.Eof do begin
  //DeleteRecords( arFiltered );
    self.ADODataSet1.Delete ;
    self.ADODataSet1.Next;
  end;
  self.ADODataSet1.Filtered := false;
end;

procedure TForm1.N2Click(Sender: TObject);
var i : integer;
begin
  if timer2.Enabled = true then begin
    ShowMessage ( '请先停止发送再清除记录。' );
    exit;
  end;

  screen.Cursor := crHourGlass;
  for i := 1 to 10 do begin
    self.ADODataSet2.Requery();
    self.ADODataSet2.First ;
    while not self.ADODataSet2.Eof do begin
      if self.ADODataSet2.Fields[3].Value = '失败' then begin
        self.ADODataSet2.Delete ; //Records( arCurrent );
        self.ADODataSet2.UpdateBatch; //(arCurrent) ;
      end;
      self.ADODataSet2.Next;
    end;
    self.ADODataSet2.UpdateBatch();
  end;
  
  //self.ADODataSet1.UpdateRecord;
  self.ADODataSet2.Requery();
  self.ADODataSet2.Refresh;
  self.DBGrid2.Update;
  self.DBGrid2.Refresh;
  screen.Cursor := crArrow;
end;

procedure TForm1.DBGrid2MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var p : TPoint;
begin
  if button = mbRight then begin
    p := DBGrid1.ClientToScreen(Point(x,y));
    self.PopupMenu2.Popup ( p.X, p.Y );
  end;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -