delphi之分割字符串

因为喜欢用文本来记录数据,比如帐号密码等等,一个游戏帐户一行

帐号1,密码1,游戏区11

帐号2,密码2,游戏区11

需要用到分割字符串函数。

delphi的Classes有ExtractStrings函数,感觉用起来不好,后来网上找了个,如下

function SplitString(pString:Pchar;psubString:PChar):TStringList;
var
   nSize,SubStringSize:DWord;
   intI,intJ,intK:DWORD;
   ts:TStringList;
   curChar:Char;
   strString:string;
   strsearchSubStr:string;
begin
   nSize:=strLen(pString);
   SubStringSize:=strLen(PSubString);
   ts:=TStringList.Create;
   strstring:='';
   inti:=0;
   while intI<=(nSize-1) do
   begin
      if (nsize-inti)>= substringSize then
      begin
          if ((PString+intI)^=pSubString^) then
          begin
             intk:=inti;
            strSearchSubStr:='';
            curchar:=(pstring+intk)^;
            strsearchSubStr:=strSearchSubStr+Curchar;
            intk:=intk+1;
            for intj:= 1 to SubStringSize-1  do
            begin
               if ((pString+intk)^=(PSubString+intj)^) then
               begin
                  curchar:=(pstring+intk)^;
                  intk:=intk+1;
                  strsearchSubStr:=strSearchSubStr+Curchar;
            end
            else begin
              inti:=intk;
              strString:=strString+strSearchSubStr;
              break; //不匹配 退出FOR
            end;
        end;
         if (intJ=substringSize) or (SubStringSize=1) then
         begin
            inti:=intk;
            ts.add(strstring);
            strstring:='';
         end;
      end
      else begin
         curChar:=(pString+inti)^;
         strstring:=strstring+curchar;
         inti:=inti+1;
      end;
      if inti=nsize then
      begin
         ts.Add(strString);
         strString:='';
       end;
     end
     else begin //将剩下的字符给作为一个字符串复制给字符串集合
        strString:=strstring+string(pString+inti);
        ts.Add(strstring);
        inti:=nsize;
     end;
   end;
   Result:=ts;

end;
用起来比较顺手,就一直用它了,感谢原作者。

posted @ 2010-08-23 17:38  devlyn  阅读(1353)  评论(5编辑  收藏  举报