UClient1.Port :=9927;//设置对方IP
if(label4.Caption='1') then
begin
form9.BitBtn1.Click;
end;
if length(Memo1.lines.GetText)>0 then
begin
UClient1.Send(memo1.Lines .GetText);//将短信内容发出
接受短信用到的udpsever onudpread函数
Stream:=Tstringstream.creat('');//创建一个字符串流
Stream.CopyFrom(AData,AData.Size);//将接收到的内容拷贝进字符串流
str:=Stream.DataString;//转换成字符串
form11.show;
s:=ExtractFilePath(paramstr(0))+trim('wav\1.wav');//播放当前程序wav文件夹下声音文件
sndPlaySound(PChar(s), SND_LOOP or SND_ASYNC);//短信响铃
form11.Memo1.Clear;
form11.memo1.Lines.Insert(0,str);//显示信息
form11.Label1.Caption:= ABinding.PeerIP;//显示对方联系方式
sleep(1000);//让响铃播放结束
sndPlaySound(nil, 0);//停止响铃
以下为写信功能与收到短信的截图
图 6.2 编辑短信并发送 图6.3 收到短信并显示
6.2.2 短信记录功能的实现
短信能有记录的前提是先要有储存,本课题通过ADOquery控件执行SQL语句的插入功能,将短信存储进数据库,使得记录存在。短信的记录功能主要考虑到了三个方面,即收件箱,发件箱,草稿箱,收件箱有查看和回复以及转发三项功能,发件箱有查看与转发两项功能,而草稿箱有查看和发送两项功能,考虑到各个功能细节不尽相同,本课题使用了三个form来实现这些功能,关于短信的提取显示,本课题主用利用到了DBgrid,DataSource,ADOquery,ADOConnection,四个数据库操作控件,其中ADOConnection主要负责连接到SQL Server数据库,ADOquery控件负责执行SQL语句,DBgrid控件负责SQL语句结果的内容显示,DataSource控件负责ADOquery和DBgrid的连接。为了实现查看短信的功能,除了要显示短信内容,还应当有联系人信息,而联系人信息分为号码和姓名两部分,要把短信中的联系人号码和联系人姓名对应起来,本课题用到了SQL语句的外连接,即,在查阅短信时,可以同时看到通讯录中已存联系人的姓名。最后还需要添加删除记录的功能,这个部分需要用到SQL语句的delete功能,详细代码如下:
存储功能以发件箱为例
Adoquery1.insert;
Adoquery1.FieldByname('text').AsString:=memo1.Text ;//存入短信内容
Adoquery1.FieldByname('number').AsString:=Edit2.Text;//存入联系方式
Adoquery1.FieldByname('time').Asstring:=DateTimeToStr(Now());//存入时间
Adoquery1.FieldByname('flag').Asinteger:=2;//代表为发出信息
Adoquery1.post;
信息记录的显示,SQL语句的外连接
SQL.Add('select b.name as 姓名,a.number as 号码,a.text as 内容 ,a.time as 时间 from 通讯录 as b ') ;
SQL.Add('right outer join 短信 as a on a.number=b.number where a.flag=''3''') ;//通讯录表外连接到短信表,以显示短信联系人姓名
显示结果如下