问题标签 [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.
delphi - Delphi 2010 RTTI:使用 TValue 存储数据
我希望能够使用 TValue 将数据存储在 TList<> 中。像 :
稍后,在主程序中,我使用我的“流利的”xml builder,如下所示:
在第二次调用时,程序引发访问冲突异常。
看起来第一个 TValue 已被“释放”。真的可以使用 TValue 在运行时存储“变体”数据吗?
我知道 Delphi 中存在变体。我的 XML 构建器将用于使用 RTTI 将本机 delphi 对象(反)序列化为 XML,因此我将在任何地方使用 TValue。
问候,
——皮埃尔·雅格
delphi - 使用 TValue 将字符串转换为枚举类型?
我想使用 TValue 将字符串转换为枚举类型,我用谷歌搜索但我没有找到如何做到这一点。
它不起作用。那一定是我没有看到的愚蠢的东西——但我没有找到它。我做错了什么?
我知道如何使用 GetEnumValue。
编辑:@Warren,它放在这里,因为这更容易发布代码:
用法:
delphi - Delphi 2010 中的 Rtti 数据操作和一致性
有谁知道,我如何使用对原始数据的引用来制作 TValue ?在我的序列化项目中,我使用(如XML-Serialization中所建议的)一个通用序列化程序,它将 TValues 存储在内部树结构中(类似于示例中的 MemberMap)。
此成员树还应该用于创建动态设置表单和操作数据。我的想法是为数据定义一个属性:
GetData、SetData 方法的实现:
不幸的是,TValue.From 方法总是复制原始数据。因此,每当应用程序更改数据时,DataModel 都不会更新,反之亦然,如果我以动态形式更改 DataModel,原始数据不会受到影响。当然,我总是可以在更改任何内容之前和之后使用 Data 属性,但是由于我在 DataModel 中使用了很多 Rtti,我真的不想在任何时候这样做。
也许有人有更好的建议?
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
非常感谢您,祝您有美好的一天!
delphi - Delphi XE:我的 TValue.Equals() 在哪里?
在我看来,TValue 中似乎缺少一种强制方法;TValue.Equals(TValue)。
那么,比较 2 个 TValue 的快速和体面的方法是什么,最好不使用 TValue.ToString(),它允许变体、记录等之间的错误匹配。
delphi - 自动验证 TEditBox.data 为 TValue.TypeInfo
我有一个 FMX 编辑框,并且想将输入的值 ( TEdit.Data
)分配给TValue
某个对象的属性。该对象还包含一个TypeInfo
指针,该指针指定在编辑框中输入的数据应该是哪种类型。
我想要完成的是,我可以将输入的数据分配给 TAttrib.Value,然后根据 WantedType 验证输入的数据是否采用正确的格式,如下所示:
这失败了,因为Value
它始终是字符串类型,并且TryCast
不会从字符串转换为扩展的 ie,即使输入的字符串可以很好地转换为 ieStrToFloat()
我怎样才能做到这一点?
delphi - 将 TValue 转换为 TDateTime
如何在 TDateTime 中转换 TValue?
我看到有 AsInteger、AsDouble 等方法,但 TDateTime 没有。
delphi - 用作 TValue 时,TCheckBox.Data 类型转换无效
重现步骤:
-新的firemonkey应用程序
- 将 TCheckBox 添加到表单中
现在使用以下代码创建一个方法:
使用 lVal 的演员可以毫无问题地运行,但是 checkbox1.data 即使它也是一个 TValue,也会在调用AsInteger
. 改为使用时会出现相同的错误checkbox1.data.AsType<Integer>
。
我TCheckBox.Data
在这里滥用还是这是某种错误?
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>'
他们都以它的名字返回。
delphi - TValue 转换为其他类型
我有
两次我都收到消息说它无法投射,但为什么呢?我看不出有什么不对。