Delphi 分隔GSMModem接收到的短信字符串
2011-06-20 10:37
405 查看
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
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
相关文章推荐
- Delphi 分隔GSMModem接收到的短信字符串
- Delphi内的字符串分隔
- delphi 7 分隔字符串(完整实例)
- Delphi中怎样将字符串按给定字符分隔(类似split函数的功能)
- Delphi 7下分隔逗号字符串!
- Delphi字符串分隔(似split函数功能)
- delphi字符串分隔函数用法实例
- 存储过程接收多个值(用分隔符号的字符串参数)的用in查询
- 存储过程接收多个值(用分隔符号的字符串参数)的用in查询
- Delphi判断字符串中是否包含汉字,并返回汉字位置
- Cookie中字符串分隔问题
- Java编写一个简单的TCP通信程序。服务器发送一条字符串,客户端接收该信息并显示。
- Delphi 判断字符串是不是有效的时间
- JAVA字符串处理(首字母大写、反转、数字字母_分隔)
- [原创]关于PDU模式接收短信,千万可别被误导
- C# at命令发送&&接收短信测试程序
- Android4.4 Telephony流程分析——短信(SMS)接收过程
- delphi字符串操作函数一览
- android 短信的接收!
- 在SqlServer中把字符串以某个字符分隔,相当于其他编程语言中的split函数,把结果存储到临时表中,用游标逐行读取