gpt4 book ai didi

delphi辅助类,删除空字符串

转载 作者:行者123 更新时间:2023-12-03 15:16:46 24 4
gpt4 key购买 nike

在上一个( remove empty strings from list )问题中,我询问了有关从字符串列表中删除空字符串的问题

....
// Clear out the items that are empty
for I := mylist.count - 1 downto 0 do
begin
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是类(class)助手的优秀候选人。它缺少很多有用的功能。我的 helper 包括:

  • AddFmt一次性格式化和添加的方法。
  • AddStrings在一次调用中添加多个项目的方法。
  • 一个Contains总结 IndexOf(...)<>-1 的方法并向 future 的代码读者提供了一种语义上更有意义的方法。
  • 一个Data[]属性,类型 NativeInt ,并匹配 AddData方法,包装 Objects[]属性(property)。这隐藏了 TObject 之间的强制转换和NativeInt .

我确信可以添加更多有用的功能。

关于delphi辅助类,删除空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22959430/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com