gpt4 book ai didi

Delphi:相同类型的不同PTypeInfo

转载 作者:行者123 更新时间:2023-12-03 18:45:23 35 4
gpt4 key购买 nike

我对 Delphi - Delphi 10 Seattle 中的 PTypeInfo(以及一般的 TypeInfo)有点困惑。

我遇到了以下问题:

我们有一个 ORM 框架(基于 Spring4D)。现在我想扩展它的映射能力:Nullable integer column to a Nullable field in model.该列包含 NULL、0 或 1。
映射函数很简单:

  • NULL->null(可空)
  • 0->假
  • 1-> 真

  • 但我相信我正在研究 ORM 并不重要。问题的核心是使用 TValue 传递值,并且在通过 RTTI 将最终值分配给对象的字段之前进行了一些强制转换操作。在那里我可以看到我能够轻松重现的问题:

    映射引擎为字段提供 PTypeInfo 指针。例子:
    class declaration
    ...
    MyBooleanField : Nullable<Boolean>;

    在代码中的某处:
    LMyBooleanField.GetTypeInfo ... result is PTypeInfo to Nullable<System.Boolean>.

    现在如果我写:
    LMyBooleanField.GetTypeInfo = TypeInfo(Nullable<Boolean>)

    结果是假的。我的终极问题是为什么?我确信类型是平等的。他们都返回 'Nullable<System.Boolean>'正如它的名字一样。

    最佳答案

    我认为你有点回答你自己的问题。尽管 TypeInfo 和 PTypeInfo 都是指针,但它们并不是一回事。 PTypeInfo 是指向包含 TypeInfo 类型指针的位置的指针。所以 LMyBooleanField.GetTypeInfo 返回一个指向 Nullable 的字段的指针,而不是指向 Nullable 本身的指针。

    关于Delphi:相同类型的不同PTypeInfo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35632071/

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