问题标签 [tvalue]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3021 浏览

delphi - Delphi 2010 RTTI:使用 TValue 存储数据

我希望能够使用 TValue 将数据存储在 TList<> 中。像 :

稍后,在主程序中,我使用我的“流利的”xml builder,如下所示:

在第二次调用时,程序引发访问冲突异常。

看起来第一个 TValue 已被“释放”。真的可以使用 TValue 在运行时存储“变体”数据吗?

我知道 Delphi 中存在变体。我的 XML 构建器将用于使用 RTTI 将本机 delphi 对象(反)序列化为 XML,因此我将在任何地方使用 TValue。

问候,

——皮埃尔·雅格

0 投票
4 回答
9942 浏览

delphi - 使用 TValue 将字符串转换为枚举类型?

我想使用 TValue 将字符串转换为枚举类型,我用谷歌搜索但我没有找到如何做到这一点。

它不起作用。那一定是我没有看到的愚蠢的东西——但我没有找到它。我做错了什么?

我知道如何使用 GetEnumValue。

编辑:@Warren,它放在这里,因为这更容易发布代码:

用法:

0 投票
2 回答
1202 浏览

delphi - Delphi 2010 中的 Rtti 数据操作和一致性

有谁知道,我如何使用对原始数据的引用来制作 TValue ?在我的序列化项目中,我使用(如XML-Serialization中所建议的)一个通用序列化程序,它将 TValues 存储在内部树结构中(类似于示例中的 MemberMap)。

此成员树还应该用于创建动态设置表单和操作数据。我的想法是为数据定义一个属性:

GetData、SetData 方法的实现:

不幸的是,TValue.From 方法总是复制原始数据。因此,每当应用程序更改数据时,DataModel 都不会更新,反之亦然,如果我以动态形式更改 DataModel,原始数据不会受到影响。当然,我总是可以在更改任何内容之前和之后使用 Data 属性,但是由于我在 DataModel 中使用了很多 Rtti,我真的不想在任何时候这样做。

也许有人有更好的建议?

0 投票
1 回答
2182 浏览

delphi - RTTI Delphi 创建一个 n 维矩阵作为 TValue

再会,

TValue是 Delphi-2010 及更高版本的 RTTI 功能。

继我之前的问题之后,我尝试制作循环函数以将 TValue 作为 n 维返回。矩阵(2D、3D、4D...)

例如,此过程将显示一个 n 维矩阵(它将列出 n 维矩阵中的所有元素作为 TValue 变量):

我不明白如何创建一个函数来从 TValue 创建一个 n 维矩阵。例如我需要一个函数 CreateDynArray(Dimensions:array of integer; Kind:TTypeKind):TValue; 并且该函数将返回一个 TValue ,它是一个动态数组,如何包含维度,例如:

Return=CreateDynArray([2,3],tkInteger); 将 TValue 作为 tkDynArray 返回,如果我将显示(返回)将列出

未终止。从 TValue 我尝试创建一个具有 n 维的 DynArray

理念

非常感谢您,祝您有美好的一天!

0 投票
1 回答
1675 浏览

delphi - Delphi XE:我的 TValue.Equals() 在哪里?

在我看来,TValue 中似乎缺少一种强制方法;TValue.Equals(TValue)。

那么,比较 2 个 TValue 的快速和体面的方法是什么,最好不使用 TValue.ToString(),它允许变体、记录等之间的错误匹配。

0 投票
1 回答
247 浏览

delphi - 自动验证 TEditBox.data 为 TValue.TypeInfo

我有一个 FMX 编辑框,并且想将输入的值 ( TEdit.Data)分配给TValue某个对象的属性。该对象还包含一个TypeInfo指针,该指针指定在编辑框中输入的数据应该是哪种类型。

我想要完成的是,我可以将输入的数据分配给 TAttrib.Value,然后根据 WantedType 验证输入的数据是否采用正确的格式,如下所示:

这失败了,因为Value它始终是字符串类型,并且TryCast不会从字符串转换为扩展的 ie,即使输入的字符串可以很好地转换为 ieStrToFloat()

我怎样才能做到这一点?

0 投票
1 回答
1103 浏览

delphi - 将 TValue 转换为 TDateTime

如何在 TDateTime 中转换 TValue?

我看到有 AsInteger、AsDouble 等方法,但 TDateTime 没有。

0 投票
1 回答
262 浏览

delphi - 用作 TValue 时,TCheckBox.Data 类型转换无效

重现步骤:

-新的firemonkey应用程序

- 将 TCheckBox 添加到表单中

现在使用以下代码创建一个方法:

使用 lVal 的演员可以毫无问题地运行,但是 checkbox1.data 即使它也是一个 TValue,也会在调用AsInteger. 改为使用时会出现相同的错误checkbox1.data.AsType<Integer>

TCheckBox.Data在这里滥用还是这是某种错误?

0 投票
1 回答
602 浏览

delphi - Delphi:相同类型的不同PTypeInfo

我对 Delphi 中的 PTypeInfo(以及一般的 TypeInfo)有点困惑——确切地说是 Delphi 10 Seattle。

我遇到了以下问题:

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

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

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

映射引擎为字段提供 PTypeInfo 指针。例子:

在代码中的某处:

现在如果我写:

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

0 投票
1 回答
1330 浏览

delphi - TValue 转换为其他类型

我有

两次我都收到消息说它无法投射,但为什么呢?我看不出有什么不对。