问题标签 [spring4d]

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 投票
0 回答
158 浏览

delphi - 获取智能指针的 RTTI 信息

使用 Spring,当我为记录声明智能指针时

然后创建它

*顺便说一句,觉得这真的很酷。

那么我该如何在智能指针上获取 RTTI 呢?显然,我知道它基于 TPerson 记录,但是需要哪些步骤来扭转当 Spring 首先分配指针时会发生什么?

我看到创建记录指针时它使用这样的代码

然后是这样的代码

我的问题是,例如,如何使用智能指针本身获取智能指针指向的记录字段?

希望这是有道理的,也许是另一个愚蠢的问题。


为问题提供更多背景信息。我有一家工厂,它使用 RTTI 为记录字段构建控件。

哪个有效。它根据记录上的属性标签返回一个 TDateEdit

我在想也许我能做的就是这个

然后工厂将拥有连接控件所需的一切,而无需自己编写代码。

上述生产线可以由工厂处理。无论如何只是一个想法

0 投票
1 回答
311 浏览

delphi - 为什么是 Spring4D 的 IList对象更改时未触发 OnChanged 事件(而 Add 和 Remove 触发事件)?

当对象更改为使用 IList 时,我从 Notify the TObjectList 中修改了@Stefan Glienkes 示例,因为我在列表中使用了接口对象。在事件处理程序中,我可以处理 caAdded 和 caRemoved 事件,但没有发出 caChanged 信号。

这是设计使然还是我在某个地方犯了错误?

此示例显示了行为:

0 投票
1 回答
219 浏览

delphi - 为什么我对接口的 TCollections.CreateObservableList 实现不起作用?

我尝试按照@Stefan Glienke 在为什么没有触发 Spring4D 的 IList OnChanged 事件中建议的方式实现?接口的 ObservableList。

这个版本应该实现一个可观察的接口列表。编译但在运行时无法找到“更改”事件处理程序。我将一些过程参数从 TObject 更改为 IInterface。由于基类中的实现,其他一些必须是 TObject 。

谢谢你的帮助。

此示例显示了行为:

0 投票
1 回答
161 浏览

delphi - 是否有与 WillReturnDefault 对应的 Spring4D 对应函数

WillReturnDefault当您不关心函数的参数时,Delphi-Mocks有一个方法。我不知道如何使用Spring4D 模拟来做到这一点。感谢帮助!

0 投票
1 回答
280 浏览

delphi - 复制字典的正确方法是什么?

我需要检查应用程序的某个部分是否发生了变化,因此我在加载数据后对数据进行“复制”,然后进行比较。比较功能的一部分涉及检查字典中的键,例如lDict1.Keys.EqualsTo(lDict2.Keys).

虽然字典不依赖于元素的顺序,但是我没有意识到即使我用相同的数据填充两个字典,它们也不会被创建相同的元素的顺序可能会改变,所以前面的函数无法正常工作,因为它依赖于使用以下任何方法时可能不匹配的元素顺序。(我不确定为什么)

有没有办法制作字典的精确副本以便我可以比较它们?解决此问题的一种方法是创建自己的比较函数,但我想避免这种情况。

用法

0 投票
2 回答
288 浏览

delphi - 智能指针不适用于 Delphi 中的通用 TObjectlist

我正在使用 Spring4D 在 Delphi 10.3 Rio 中测试智能指针。这是我的测试程序。我创建了一个泛型TObjectList,我想使用简单TObject的 s 添加到这个列表中Shared.Make(TTestObj.Create)。问题是每当我向列表中添加一个对象时,前一个对象就会被释放。查看我的程序的输出。有谁知道如何解决这个问题?

输出

0 投票
1 回答
121 浏览

delphi - Spring4D 字段注入在 TForm 实例中不起作用

我想像下面的示例代码一样使用 1.1 版的Inject属性。Spring4D似乎 Inject 属性没有效果,因为 fMyResource 字段值在按钮单击处理程序方法中为 NIL。在我的原始代码中,类型注册在之前的 dpr 文件中得到了位置Application.CreateForm(TForm1, Form1);。我只是修改它以使代码更简洁。我应该怎么做才能使现场注入工作?

0 投票
1 回答
160 浏览

delphi - 在 Spring4D 中是否可以注册通用接口?

我有具有构造函数的类,例如

当我尝试在容器中注册 IFactory

或者

我收到一条错误消息,指出接口没有 guid。

我真的不想添加很多无意义的接口,例如

解决这个问题,但这是唯一的方法吗?

非常感谢

0 投票
1 回答
116 浏览

delphi - 编译器看不到 Spring4D TMultiMap 重载构造函数(错误 E2250)

我正在努力使用 Spring4D (1.2.2) TMultiMap 泛型类。我想调用一个重载的构造函数,编译器抱怨:

根据 Spring4D 源代码,参数是正确的类型。

我设计了一个小程序来重现错误:

在 Spring4D 源代码中,我找到了以下声明:

并且还声明了 TMultiMap acestor:

并有这个构造函数:

这是我要调用的构造函数。据我了解,我的论点 KeyComparer 具有正确的类型。但显然编译器不同意:-(

如何修复此代码?

0 投票
1 回答
194 浏览

delphi - Spring4D 无法对有序字典进行排序

我需要一个可以排序的字典。我认为 Spring4D TOrderedDictionary 是一个实现它的类,但我不能让它工作:排序不起作用。

我构建了一个小测试程序来显示我遇到的问题:

上面的代码以添加顺序显示值,而不是 - 我认为 - AComparer 应该创建的顺序。

我尝试使用相等比较器创建 OrderedDictionary:没有变化。

任何帮助表示赞赏。