是否有用于 TCaptions 的 StringHelper?

Is there a StringHelper for TCaptions?

我可以添加一个单元来为 TCaption 提供 StringHelper 吗?

使用 Edit1.Text.TrimEdit1.Text.ToInteger 等比 Trim(Edit1.Text)StrToInt(Edit1.Text) 等更整洁

TCaption没有class助手,没有

TCaption 是与 string 不同的类型,具有用于 DFM 目的的自己的 RTTI,因此标准 TStringHelper 不会将其识别为 string

我希望像 TCaption 这样的类型别名能够访问其基类型的助手,但是,事实并非如此。 QualityPortal 中已经有关于此问题的报告:RSP-13736, RSP-16486, RSP-36474,等等

与此同时,您最好将 TCaption 转换为 string,例如:

string(Edit1.Text).Trim
string(Edit1.Text).ToInteger
...

否则,您必须为 TCaption 编写自己的 class 助手,将其工作委托给标准 string 助手。

很遗憾没有。

TCaption 定义为

type
  TCaption = type string;

这使得它与 string 不同(因为第二个 type)所以 TStringHelper 不会用于 TCaption。并且没有 TCaptionHelper = record helper for TCaption(理想情况下与 TStringHelper 相同)。

在这种情况下这很烦人,但是语言的这种行为使我可以定义自己的 TShoeSize = type Integer 并添加自己的 TShoeSizeHelper = record helper for TShoeSize 而不会丢失 [=22] =] 助手.

我个人在 Embarcadero Jira 中建议了一个功能,可以让您复制或继承记录助手;在这种情况下,您可以使用这样的功能来告诉 Delphi TCaption 应该具有与 string.

相同的助手

但是在语言发生变化之前——或者有人只是 copy-pastes TStringHelper 变成了 TCaptionHelper——你能做的最好的事情是:

ShowMessage(string(Edit1.Text).ToUpper)

但要注意这是危险的!

不小心写错了怎么办

ShowMessage(string(Edit1).ToUpper)

那会编译(指针就是指针...)。