问题标签 [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.
delphi - Spring4d - 具有服务名称的自动工厂
我正在尝试使用Spring4d
. 不过,我希望能够在工厂函数中传递ServiceName
我想要解决的问题。Build()
像这样:AFactory.Build(AServiceName)
例如
我希望工厂解决TMyComponent1
when AServiceName = 'Service1'
,TMyComponent2
whenAServiceName = 'Service2'
等。
我怎样才能做到这一点?
delphi - 如何将对象注入未在容器中注册的类?
我有三个班。TA 类使用 TB,TB 类使用 TC。
在我注册了TA和TC的容器中,TB不需要注册。
类定义:
如果TB不是由容器管理的,我想将TC实例注入TB实例怎么办?不注册TB可以吗?
delphi - 继承自 IOrderedDictionary
我正在尝试从 IOrderedDictionary 继承一个接口并实现继承的接口,见下文:
此代码无法编译,在 TNodeContens 中,编译器错过了 Spring.Collections.IDictionary.GetItem 的实现(除了一些其他但不是所有成员)。
这看起来很奇怪,当我直接在单元中定义通用接口时,代码符合得很好(见下文)。
delphi - 列表当 T 是事件处理程序时崩溃?
在我看来, IList 不能将事件处理程序作为其元素。程序在程序退出时访问冲突 $C00000005。
如果我使用 Delphi RTL 的 TList,一切都很好。
访问冲突发生在 32 位和 64 位构建中。当它发生时,它似乎停止在 Spring4D 的以下行:
以下示例程序可以在 Windows 上使用 RAD Studio Tokyo 10.2.3 复制访问冲突。
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 之间时,它工作正常整个调用堆栈消失在旁边两行(我们不确定它是否相关,但它看起来不是好兆头),在到达最顶层的函数(根据调用堆栈)之后,我们得到错误。
是我们的错还是 system/spring/dunitx 单元有问题?我们如何同时使用可空类型和测试?
delphi - 如何使用 RTTI 分配 OleVariant?// 将 OleVariant 或 Variant 转换为具有特定 TTypeKind 或 TRTTIType 的 TValue?
我有一个OleVariant
或Variant
值,例如,用 读取IXMLNode.GetAttributeNS
,使其成为“字符串”(varOleStr
或varString
),我想用 写该值,例如,TRTTIField.SetValue
需要与 的TValue
赋值兼容TRTTIField.FieldType: TRTTIType
。
对于基本类型(以及TVarType
和),我不是将TRTTIType.TypeKind: TTypeKind
每个单独的案例:case VarType(Value) and varTypeMask of varXXXX: ... end
OleVariant
Variant
TValue
TRTTIType
在 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 不会尝试更改值的性质。我在这里的困难是达到分配兼容性。
更新:给定答案,以下代码概述了我的解决方案:
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
delphi - 类型的构造函数不满意
使用 Spring4D 的依赖注入框架。
目前我尝试使用 DynamicAbstractFactories。在测试中有 2 个类和工厂:
IOrderShipper
并且IOrderShipperFactory
会工作,
IDocument
也会IDocumentFactory
失败。
过程 TestDocument 中的代码将引发
类型不满意的构造函数:DynamicAbstractFactory.TDocument
我不明白为什么......我希望有人知道原因,我觉得我真的很愚蠢
delphi - 无法在 Spring4D 中将默认参数值与比较器一起使用
我不确定这是否是一些一般性问题,或者是因为 Spring4D 实现,但我不能使用默认参数值来创建比较器。
当我创建一个没有指定参数的列表时,我收到一条关于缺少参数的错误消息。
E2035 实际参数不足
但是,如果没有任何参数或指定所有参数,它就可以工作。有什么理由我不能这样做吗?
spring4d - 是否有任何延迟的 MultiCast-Event,它可以被中断?
我正在寻找一个可中断的、延迟的事件,我希望它已经是 Spring4D 的一部分,或者在那里很容易实现。
无论如何,实现这一目标的最佳方法是什么?
可能事件不会是正确的地方。
基本上在寻找类似的东西
Event.InvokeDelayed(1000, nil); 和 Event.InvokeCancel;
也许我监督了一些已经可以在 S4D 中解决这个任务的东西。
罗洛