....// Clear out the items that are emptyfor I := myList.count - 1 downto 0 dobegin if Trim(myList[I]) = '' then myList.Delete(I);end;....
从代码设计和重用的角度来看,我现在更喜欢一个更灵活的解决方案:
MyExtendedStringList = Class(TStringList) procedure RemoveEmptyStrings; end;
问:在这种情况下我可以使用类助手吗?与上面设计一个新课程相比,这会是什么样子?
解决方法 这里有一个好帮手.为了使其更广泛适用,您应该选择将帮助程序与帮助程序可以应用的派生类最少的类相关联.在这种情况下,这意味着TStrings.派生新类的巨大优势在于,您的辅助方法可用于不是由您创建的TStrings实例.明显的例子包括暴露备忘录,列表框等内容的TStrings属性.
我个人会编写一个帮助程序,使用谓词提供更一般的删除功能.例如:
type TStringsHelper = class helper for TStrings public procedure RemoveIf(const Predicate: TPredicate<string>); procedure RemoveEmptyStrings; end;procedure TStringsHelper.RemoveIf(const Predicate: TPredicate<string>);var Index: Integer;begin for Index := Count-1 downto 0 do if Predicate(Self[Index]) then Delete(Index);end;procedure TStringsHelper.RemoveEmptyStrings;begin RemoveIf( function(Item: string): Boolean begin Result := Item.IsEmpty; end; );end;
更一般地说,TStrings是一个很好的候选人.它缺少相当多的有用功能.我的助手包括:
> AddFmt方法,可以一次性格式化和添加.
> AddStrings方法,在一次调用中添加多个项目.
>一个包含IndexOf(…)<> -1的Contains方法,并为未来的代码读者提供了一种语义更有意义的方法.
>一个类型为NativeInt的Data []属性,以及包装Objects []属性的匹配AddData方法.这隐藏了TObject和NativeInt之间的强制转换.
我确信可以添加更多有用的功能.
总结以上是内存溢出为你收集整理的delphi helper类,删除空字符串全部内容,希望文章能够帮你解决delphi helper类,删除空字符串所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)