问题标签 [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 投票
1 回答
342 浏览

delphi - Spring4d - 具有服务名称的自动工厂

我正在尝试使用Spring4d. 不过,我希望能够在工厂函数中传递ServiceName我想要解决的问题。Build()像这样:AFactory.Build(AServiceName)

例如

我希望工厂解决TMyComponent1when AServiceName = 'Service1'TMyComponent2whenAServiceName = 'Service2'等。

我怎样才能做到这一点?

0 投票
1 回答
269 浏览

delphi - 如何将对象注入未在容器中注册的类?

我有三个班。TA 类使用 TB,TB 类使用 TC。

在我注册了TA和TC的容器中,TB不需要注册。

类定义:

如果TB不是由容器管理的,我想将TC实例注入TB实例怎么办?不注册TB可以吗?

0 投票
2 回答
153 浏览

delphi - 继承自 IOrderedDictionary

我正在尝试从 IOrderedDictionary 继承一个接口并实现继承的接口,见下文:

此代码无法编译,在 TNodeContens 中,编译器错过了 Spring.Collections.IDictionary.GetItem 的实现(除了一些其他但不是所有成员)。

这看起来很奇怪,当我直接在单元中定义通用接口时,代码符合得很好(见下文)。

0 投票
1 回答
312 浏览

delphi - 列表当 T 是事件处理程序时崩溃?

在我看来, IList 不能将事件处理程序作为其元素。程序在程序退出时访问冲突 $C00000005。

如果我使用 Delphi RTL 的 TList,一切都很好。

访问冲突发生在 32 位和 64 位构建中。当它发生时,它似乎停止在 Spring4D 的以下行:

以下示例程序可以在 Windows 上使用 RAD Studio Tokyo 10.2.3 复制访问冲突。

0 投票
1 回答
113 浏览

delphi-10.1-berlin - 将 spring.Nullable 与 DUnitX 一起使用时的内存问题

最近在我的公司,我们尝试使用 DUnitX 来测试我们编写的类。由于这些类反映了数据库中的实体,所有字段都必须接受空值以及特定类型(例如整数或字符串)。

由于 spring4d 已经有了我们尝试使用它们的那些:

执行此代码时,我们得到 AV 异常First chance exception at $00000000. Exception class $C0000005 with message 'access violation at 0x00000000: access of address 0x00000000'. Process Tests.exe (6556)

最终我们将这个问题缩小到System.Rtti单元中的移动过程,TValueDataImpl.ExtractRawDataNoCopy函数:当 Length(FData) 小于或等于 8 时,当 Length(FData) 在System单元 ( FISTP QWORD PTR [EDX+8] {Save Second 8}) 的第 5905 行的 9 到 32 之间时,它工作正常整个调用堆栈消失在旁边两行(我们不确定它是否相关,但它看起来不是好兆头),在到达最顶层的函数(根据调用堆栈)之后,我们得到错误。

“保存第二个 8”之前的调用堆栈

“保存第二个 8”后调用堆栈

是我们的错还是 system/spring/dunitx 单元有问题?我们如何同时使用可空类型和测试?

0 投票
2 回答
306 浏览

delphi - 如何使用 RTTI 分配 OleVariant?// 将 OleVariant 或 Variant 转换为具有特定 TTypeKind 或 TRTTIType 的 TValue?

我有一个OleVariantVariant值,例如,用 读取IXMLNode.GetAttributeNS,使其成为“字符串”(varOleStrvarString),我想用 写该值,例如,TRTTIField.SetValue需要与 的TValue赋值兼容TRTTIField.FieldType: TRTTIType

对于基本类型(以及TVarType和),我不是将TRTTIType.TypeKind: TTypeKind每个单独的案例:case VarType(Value) and varTypeMask of varXXXX: ... endOleVariantVariantTValueTRTTIType

在 Variant 和 RTTI 世界之间转换值的方法是什么?

此外,Spring4D 库是项目的一部分,以防万一。


更新:

从技术上讲,我正在寻找Convert以下代码(在 Variant 世界中转换):

但是,我发现VariantChangeTypeEx我不知道如何关联Left.FieldType它以使后续代码正常工作。-- 我也不介意在 RTTI 世界中进行转换,而是从Temp := TValue.FromVariant(Right)( tkUString) 开始,然后以某种方式达到分配兼容性;所以Temp.Kind会变成tkEnumeration/Boolean, tkFloat,... 由Left.FieldType.TypeKind.

如何使用 RTTI 分配变体?或者,如何将 Variant 转换为 TValue 然后分配它?

注意:如果字段类型和值类型在性质上不同,RTTIField.SetValue则会失败EInvalidCast,因为 RTTI 不会尝试更改值的性质。我在这里的困难是达到分配兼容性。


更新:给定答案,以下代码概述了我的解决方案:

0 投票
1 回答
314 浏览

delphi - Spring4D最新不兼容DSharp?

我从这个链接https://bitbucket.org/sglienke/spring4d/downloads/下载了 Spring4D“sglienke-spring4d-ca8037a2fdec.zip” 。

我从这个链接下载了 DSharp “sglienke-dsharp-2eae62962442.zip” https://bitbucket.org/sglienke/dsharp/downloads/

我尝试使用 Tokyo 10.2.3 构建 DSharp,但出现以下错误 - 似乎 DSharp 与最新的 Spring4D 提交不兼容?

[dcc32 错误] DSharp.Collections.Iterators.pas(54):E2170 无法覆盖非虚拟方法

[dcc32 错误] DSharp.Collections.Iterators.pas(66):E2170 无法覆盖非虚拟方法

[dcc32 错误] DSharp.Collections.Iterators.pas(129):E2003 未声明的标识符:'fState'

[dcc32 错误] DSharp.Collections.Iterators.pas(147):E2003 未声明的标识符:'fState'

[dcc32 错误] DSharp.Collections.Iterators.pas(148):E2003 未声明的标识符:'STATE_ENUMERATOR'

[dcc32 错误] DSharp.Collections.Iterators.pas(149):E2003 未声明的标识符:'STATE_RUNNING'

[dcc32 错误] DSharp.Collections.Iterators.pas(149): E2030 Duplicate case label

[dcc32 错误] DSharp.Collections.Iterators.pas(156):E2003 未声明的标识符:'fCurrent'

[dcc32 错误] DSharp.Collections.Iterators.pas(160):E2003 未声明的标识符:'STATE_FINISHED'

[dcc32 错误] DSharp.Collections.Iterators.pas(173):E2003 未声明的标识符:'fState'

[dcc32 致命错误] DSharp.Core.dpk(38):F2063 无法编译使用的单元“DSharp.Collections.Iterators.pas”

失败经过时间:00:00:00.8

0 投票
1 回答
198 浏览

delphi - 类型的构造函数不满意

使用 Spring4D 的依赖注入框架。

目前我尝试使用 DynamicAbstractFactories。在测试中有 2 个类和工厂: IOrderShipper并且IOrderShipperFactory会工作, IDocument也会IDocumentFactory失败。

过程 TestDocument 中的代码将引发

类型不满意的构造函数:DynamicAbstractFactory.TDocument

我不明白为什么......我希望有人知道原因,我觉得我真的很愚蠢

0 投票
1 回答
192 浏览

delphi - 无法在 Spring4D 中将默认参数值与比较器一起使用

我不确定这是否是一些一般性问题,或者是因为 Spring4D 实现,但我不能使用默认参数值来创建比较器。

当我创建一个没有指定参数的列表时,我收到一条关于缺少参数的错误消息。

E2035 实际参数不足

但是,如果没有任何参数或指定所有参数,它就可以工作。有什么理由我不能这样做吗?

0 投票
1 回答
57 浏览

spring4d - 是否有任何延迟的 MultiCast-Event,它可以被中断?

我正在寻找一个可中断的、延迟的事件,我希望它已经是 Spring4D 的一部分,或者在那里很容易实现。

无论如何,实现这一目标的最佳方法是什么?

可能事件不会是正确的地方。

基本上在寻找类似的东西

Event.InvokeDelayed(1000, nil); Event.InvokeCancel;

也许我监督了一些已经可以在 S4D 中解决这个任务的东西。

罗洛