在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
https://www.cnblogs.com/xalion/p/4283491.html
delphi xe7 中对数组操作做了很多扩充,比如加入了类似字符串处理的功能。 例如,数组相加
数组插入
数组删除
数组连接
为什么在xe7 中要对数组做这么大的变化呢,当然首先肯定是方便数组编程,其实更深层的原因是因为ansistring 在移动平台上的缺失, 很多过去的代码,由于都是把byte 当作ansichar 处理的,到了移动平台上,这些代码都跑不起来了。而且很难改造。 那么只有使用Tbytes 里替换传统的ansistring. 因此对数组操作增加了这么多方法来解决这个传统问题。 那现在问题来了,传统的pos 功能却没加入,导致大量的是使用pos 的操作无法改造。 不知道会在xe? 里面加入?现在临时的办法就是自己做一个find(pos)函数来解决这个问题。 为了不与以后的pos 冲突,函数名就叫find, 功能是在一个数组里面查找另一个数组,并返回位置。
这样就可以用这个替换原来的ansistring 的pos 操作了。
其实也可以做成helper 更方便用。 TBytesHelper = record helper for Tbytes public procedure setlength(len:integer); function Find(const sub:TBytes): Integer; procedure add(const buff:TBytes); end; procedure TBytesHelper.add(const buff: TBytes); begin self:=self+buff; end; function TBytesHelper.Find(const sub: TBytes): Integer; var len: Integer; begin len:= Length(sub); if len>0 then for Result := low(self) to high(self)-(len-1) do if CompareMem(@self[Result], sub, len) then exit; Result := -1; end; procedure TBytesHelper.setlength(len: integer); begin System.setlength(self,len); end;
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论