请大侠们帮忙用 汇编 实现'AB|DE|3L|3L'字串分拆函数.(这个函数大家都常要用到) ( 积分: 100 )

  • 主题发起人 主题发起人 狂迷
  • 开始时间 开始时间

狂迷

Unregistered / Unconfirmed
GUEST, unregistred user!
分拆字串函数大家都常要用到,
function SplitStr(const S : String
const Delimiter : String='|') : TStrings;

我用 PosEx + Copy 来实现, 但觉得用汇编会更有效率,希望有会汇编的前辈练练功,帮忙写一个.谢谢
 
分拆字串函数大家都常要用到,
function SplitStr(const S : String
const Delimiter : String='|') : TStrings;

我用 PosEx + Copy 来实现, 但觉得用汇编会更有效率,希望有会汇编的前辈练练功,帮忙写一个.谢谢
 
写倒很简单,可没什么太大的必要,用汇编效率未必能提高多少。
 
N年不用汇编了,有些谈忘了。但是这在当初的确是很简单的题目[:(]
 
既然Delimiter是一个字符('|'),所以直接从S[1],到S[Length(S]比较下去就可以了.
 
用汇编效率不会差多少的,我自己写了个觉得用 array 比 TStrings 方便,
http://www.delphibbs.com/keylife/iblog_show.asp?xid=11539
 
savetime:
看了一下代码 ReadStrValues 不如用 Copy + PosEx 快,
 
你是看一下代码知道的结果还是测试的结果?
我那个链接里有人做过测试,还是 ReadStrValues 快些,不过我也没太注意性能
方面,我想这么简单的一次遍历操作,再优化也不会快多少吧。
 
我处理的办法比较笨,不过代码很清晰:
[blue]
function SplitStr(const S : String
const Delimiter : String='|') : TStrings;
begin
result := TStringList.Create;
result.Text := StringReplace(S, Delimiter, #13, [rfReplaceAll]);
end;
[/blue]
简单的说,全部使用了Delphi自带的代码。
 
后退
顶部