Delphi 分隔GSMModem接收到的短信字符串

Delphi 分隔GSMModem接收到的短信字符串

 

function TForm1.SplitStr(const SourceStr, SplitChar: AnsiString): TStringList;
var
temp:AnsiString;
i:Integer;
cStr:AnsiString;
begin
Result:=TStringList.Create;
//如果是空字符串则返回空列表
if SourceStr='' then exit;
temp:=SourceStr;
i:=pos(SplitChar,SourceStr); //返回位置 从1开始
while i<>0 do
begin
cStr:=Copy(Temp,1,i-1);
if cStr<>'' then
//Copy(Str,StartIdx,CopyLength);返回包括StartIdx的CopyLength的长度字符串
Result.add(CStr);
//Delete(Str,StartIdx,DelLength);删除包括StartIdx的DelLength的长度字符串
Delete(temp,1,i);
i:=pos(SplitChar,temp);
end;
Result.add(temp);//加入最后一条

end;

 

procedure TForm1.BitBtn1Click(Sender: TObject);
var
str:AnsiString;
StrList:TStringList;
SubStr:TStringList;
i,j:Integer;

begin
//
Memo1.Clear;

// GSMModem从飞信接收到的信息如下:

str:='|1#44#1252002613683681364#(02/02)询10086#11-06-12 18:04:45|4#04#1252013683681364#明天会更好:你好呀 ,。#11-06-12 18:10:24|6#04#1252013683681364#明天会更好:飞信发给。#11-06-12 18:12:43';


StrList:=TStringList.Create;
SubStr:=TStringList.Create;

try
StrList.Assign(SplitStr(str,'|'));

for i:=0 to StrList.Count-1 do
begin
Memo1.Lines.Add(StrList.Strings[i]);

SubStr.Assign(SplitStr(StrList.Strings[i],'#'));
for j := 0 to SubStr.Count - 1 do
begin
Memo1.Lines.Add(SubStr.Strings[j]);
end;

end;
finally
freeandnil(StrList);
freeAndNil(SubStr);
end;
end;

 

//输出结果

1#44#1252002613683681364#(02/02)询10086#11-06-12 18:04:45
1
44
1252002613683681364
(02/02)询10086
11-06-12 18:04:45
4#04#1252013683681364#明天会更好:你好呀 ,。#11-06-12 18:10:24
4
04
1252013683681364
明天会更好:你好呀 ,。
11-06-12 18:10:24
6#04#1252013683681364#明天会更好:飞信发给。#11-06-12 18:12:43
6
04
1252013683681364
明天会更好:飞信发给。
11-06-12 18:12:43

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值