发信人: 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 |
|