发信人: plenilune88(望月) 
整理人: soaringbird(2002-02-02 09:05:14), 站内信件
 | 
 
 
这是Delphi中字符串与数组之间的转换处理函数,提供类似于VB中的相关函数功能
 
 function StrToDim(S,Separator:string):Variant;
                                         //字符串转换为数组
 function DimToStr(d:Variant;Separator:string):string;
                                         //数组合成字符串
 function IsDim(d:Variant):boolean;      //判断是否为数据变量
 function DimLBound(d:Variant):integer;  //数组下限
 function DimHBound(d:Variant):integer;  //数祖上限
 function DimCount(d:Variant):integer;   //数组长度
 
 //-----------------------------------------------------
 function StrExistsCount(S,Sub:string;CanRepeat:boolean;IsCaseSensitive:boolean):integer;
 var i,j:integer;
     s1:string;
     len:integer;
 begin  //一个字符串在另一个字符串中出现的次数
   Result:=0;
   if length(s)<length(sub) then exit;
   j:=0;
   len:=length(sub);
   if IsCaseSensitive then
     s1:=sub
   else
     s1:=LowerCase(sub);
 
   if CanRepeat then
     begin
       for i:=1 to length(s)-len+1 do
       begin
         if IsCaseSensitive then
           begin
             if copy(s,i,len)=s1 then inc(j)
           end
         else
           begin
             if LowerCase(copy(s,i,len))=s1 then inc(j)
           end;
       end;
     end
   else
     begin
       i:=1;
       while i<=length(s)-len+1 do
       begin
         if IsCaseSensitive then
           begin
             if copy(s,i,len)=s1 then
               begin
                 inc(j);
                 i:=i+len;
                 Continue;
               end;
           end
         else
           begin
             if LowerCase(copy(s,i,len))=s1 then
               begin
                 inc(j);
                 i:=i+len;
                 Continue;
               end;
           end;
         inc(i);  
       end;
     end;
   Result:=j;
 end;
 
 function StrToDim(S,Separator:string):Variant;
 var d:Variant;
     i,j,k,len,len1,l:integer;
 begin  //字符串转换为数组
   Result:=Null;
   if s='' then exit;
   s:=s+separator;
   l:=StrExistsCount(s,separator,false,false);
   separator:=LowerCase(separator);
   len:=length(s);
   len1:=length(Separator);
   k:=0;
   d:=VarArrayCreate([0,l],varVariant);
   i:=1;
   while i<=len-len1 do
   begin
     for j:=i to len do
     if LowerCase(Copy(s,j,len1))=separator then
     begin
       d[k]:=copy(s,i,j-i);
       inc(k);
       break;
     end;
     i:=j+len1;
   end;
   Result:=d;
 end;
 
 function DimToStr(d:Variant;Separator:string):string;
 var i:integer;
     s:string;
 begin  //数组合成字符串
   s:='';
   if VarIsArray(d) then
     for i:=DimLBound(d) to DimHBound(d) do
       s:=s+String(d[i])+Separator;
   if s<>'' then s:=','+s;
   Result:=s;
 end;
 
 function IsDim(d:Variant):boolean;
 begin  //判断是否为数据变量
   Result:=VarIsArray(d);
 end;
 
 function DimLBound(d:Variant):integer;
 begin  //数组下限
   if VarIsArray(d) then
     Result:=VarArrayLowBound(d,1)
   else
     Result:=-1;  
 end;
 
 function DimHBound(d:Variant):integer;
 begin  //数祖上限
   if VarIsArray(d) then
     Result:=VarArrayHighBound(d,1)
   else
     Result:=-1;  
 end;
 
 function DimCount(d:Variant):integer;
 begin  //数组长度
   Result:=VarArrayDimCount(d);
 end;
 
 //中大方略版权所有
 //www.cnflag.net
 
  ----                 .-'''''-.
              .'         `.
             :             :
            :               :
            :      _/|      :
             :   =/_/      :
              `._/ |     .'
           (   /  ,|...-'
            \_/^\/||__
         _/~  `""~`"` \_
      __/  -'/  `-._ `\_\__
    /     /-'`  `\   \  \-.\ 
 
 孤意望月 血泪无痕 
 
 http://plenilune.top263.net
 http://www.cnflag.net   | 
 
 
 |