D
delhpi
Unregistered / Unconfirmed
GUEST, unregistred user!
对于取得分割字符串中的特定部分,下面两个函数代码,哪个在运行效率上更高?
比如有一个二维表格式的文本文件,以3000行为例,每行的各个字段用 逗号分割,各个字段的内容长度大约在20个字左右,一行相当于一条记录,每行大约10个字段。
我要将其加载到stringgrid中时,要用函数取得一行的每个字段,以便赋值给cells[col,row]。
第二个是,我刚学D几天时复制别人的,当时是如获至宝。
第一个是,我学了一个月时间后,就是最近,自己写的,但不知道效率如何?
请大家看看,究竟该用哪个,哪个效率高?
//getonestr('你,我,他',0)
//='你'
function GetOnestr(Sourcestr: widestring
PartIndex: integer): widestring;
var
strlist: tstringlist;
i: integer;
begin
result := '';
strlist := tstringlist.Create;
try
strlist.Delimiter := ',';
strlist.DelimitedText := sourcestr;
if (partindex <= strlist.Count - 1) and (partindex >= 0) then
result := strlist[partindex];
finally
strlist.Free;
end
end;
////////////////
//fngetpartstring('你,我,他',1)
//=你
function FnGetPartString(aSource: string
nPart: Integer
aSeparator: string = ','): string;
var
lnfor: integer;
lsstr: string;
begin
lnfor := Pos(aSeparator, aSource);
if (lnfor = 0) then
begin
Result := aSource;
exit;
end;
if nPart > 1 then
begin
aSource := Copy(aSource, lnfor + 1, length(aSource));
lsstr := FnGetPartString(aSource, nPart - 1, aSeparator);
end
else if nPart = 1 then
lsstr := copy(aSource, 1, lnfor - 1);
result := lsstr;
end;
富翁名称: delhpi
专 家 分: 6
可用积分: 30
给25分。
比如有一个二维表格式的文本文件,以3000行为例,每行的各个字段用 逗号分割,各个字段的内容长度大约在20个字左右,一行相当于一条记录,每行大约10个字段。
我要将其加载到stringgrid中时,要用函数取得一行的每个字段,以便赋值给cells[col,row]。
第二个是,我刚学D几天时复制别人的,当时是如获至宝。
第一个是,我学了一个月时间后,就是最近,自己写的,但不知道效率如何?
请大家看看,究竟该用哪个,哪个效率高?
//getonestr('你,我,他',0)
//='你'
function GetOnestr(Sourcestr: widestring
PartIndex: integer): widestring;
var
strlist: tstringlist;
i: integer;
begin
result := '';
strlist := tstringlist.Create;
try
strlist.Delimiter := ',';
strlist.DelimitedText := sourcestr;
if (partindex <= strlist.Count - 1) and (partindex >= 0) then
result := strlist[partindex];
finally
strlist.Free;
end
end;
////////////////
//fngetpartstring('你,我,他',1)
//=你
function FnGetPartString(aSource: string
nPart: Integer
aSeparator: string = ','): string;
var
lnfor: integer;
lsstr: string;
begin
lnfor := Pos(aSeparator, aSource);
if (lnfor = 0) then
begin
Result := aSource;
exit;
end;
if nPart > 1 then
begin
aSource := Copy(aSource, lnfor + 1, length(aSource));
lsstr := FnGetPartString(aSource, nPart - 1, aSeparator);
end
else if nPart = 1 then
lsstr := copy(aSource, 1, lnfor - 1);
result := lsstr;
end;
富翁名称: delhpi
专 家 分: 6
可用积分: 30
给25分。