问题标签 [delphi-10.1-berlin]
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 10 Seattle 中,我可以使用以下代码来解决过于严格的可见性限制。
如何访问私有变量?
以及如何访问普通或虚拟私有方法?
在 Delphi 10.1 Berlin 中,类助手不再可以访问主题类或记录的私有成员。
是否有其他方法可以访问私人成员?
delphi - Delphi 10 相当于 DesignIntf 是什么?
刚刚更新了 Delphi 10.1 Berlin 的 SynEdit RunTime 模块,但现在我需要更新 DesignTime 模块...... Delphi XE 版本的 Designer 单元似乎在 10.1 中不可用。
什么是推荐的设计编辑器和界面模块来替换旧的 Delphi 设计器?
我在想会有内置的 XAML 设计器,因为新的 Delphi 支持 .NETCore。
是否有替代设计师可用于 FMX 和跨平台项目?
找到的示例...需要 FMX.Types 单元和类上的标题 https://delphihaven.wordpress.com/2013/02/03/writing-a-simple-firemonkey-tlistlayout-implementation/
以下是我如何更改 XE、Delphi 10 和 Firemonkey 的标题
而新的控件现在是这样开始的......
android - 在运行时 Delphi 10.1 Berlin 更改 ListView 图像
德尔福 10.1 柏林。ListView.ItemAppearance=动态外观。我想在运行时更改 ListViewItem 中的图像。
我的代码:
结尾;
结果:所有图片都是红色的(也是Image1)。
我究竟做错了什么?
delphi - 在 Delphi 中处理循环强引用
我有两个类(在我的示例中为 TObject1 和 TObject2),它们通过接口(IObject1、IObject2)相互认识。正如您在 Delphi 中可能知道的那样,这将导致内存泄漏,因为两个引用计数器都将始终保持在零以上。通常的解决方案是将一个引用声明为弱引用。这在大多数情况下都有效,因为您通常知道哪个会首先被销毁,或者一旦被销毁就不一定需要弱引用后面的对象。
这就是说我试图以两种对象都保持活动状态直到不再引用它们的方式来解决问题:(Delphi 10.1 需要,因为我使用 [unsafe] 属性)
这确实有效.. 函数 Test1 和 Test2 各自创建一个相互引用的 TObject1 和 TObject2 实例,一旦 o1 和 o2 超出范围,所有实例都会被销毁。该解决方案基于将引用计数转发给“控制器”(在本例中为 TObject1)的 TContainedObject。
现在我知道这个解决方案有缺陷,这就是我的问题开始的地方:
- “TContainedObject(FObj2).Free;” 有点味道,但我没有更好的解决方案,因为我需要使用一个接口来引用 TObject2(生产代码为此包含一些继承)。有什么想法可以清理吗?
- 您很容易忘记将 2 个类之间的所有引用声明为弱和 ..
- 类似的问题随着更多的类而开始出现:让 TObject3 被一个引用并引用另一个:内存泄漏。我也可以通过让它从 TContainedObject 下降来处理它,但是对于遗留代码,这可能不是一件容易的事。
我觉得这个解决方案不能被普遍应用,并希望有一个可以 - 或者可能是一个答案来描述为什么很难甚至不可能有一个易于使用的 100% 解决方案来管理这种情况。恕我直言,拥有有限数量的对象并不会太复杂,一旦它们没有从其域外引用,它们就会相互破坏,而不必仔细考虑该域内的每个引用。
delphi - Delphi Berlin:FMX-TListView,在 Windows 和 Android 之间切换
我在 Delphi 10.1 Berlin 中使用 Windows 作为主视图创建了一个应用程序。我在表单上放置了一个 TListView 并使用新的切换设计模式对其进行了自定义。我添加了一个 TImageObjectAppearance 和几个 TTextObjectAppearance 项目。我添加了代码来设置 TImageObjectAppearance 的图像,并且文本项具有各种字体大小和样式。我在表单上还有 3 个 TImage 组件,用于根据值分配给 TImageObjectAppearance.Bitmap。
当我为 Win32 编译它并运行它时,一切看起来都很棒。位图图像根据 TListView 每一行的值显示。当我将样式切换到 Android 并将视图切换到 Android 10" 平板电脑时,IDE 会抛出此错误:
“无法将 TAppearanceObjectItem 分配给 TAppearanceObjectItem。”
View 仍然显示 Android 10" Tablet 但表单上的实际视图仍然是 Windows 表单。所以我的第一个问题是这个错误到底是什么?我认为 Delphi 应该能够编译到所有这些不同的目标/devices 使用相同的代码。这肯定不会发生。但是等等,还有更多......
所以我切换回 Style: Windows 和 View: Master。我点击了表单上的 TImageObjectAppearance 项并按下了 Delete 键,我得到了这个错误:
“无法从设计器中删除持久引用。”
但是,如果您单击“结构”窗口中的项目并按“删除”,它就可以删除了。漏洞?我会这么说。无论如何,还有更多。我从结构窗口中删除了 TImageObjectAppearance 项,然后切换回样式:Android 和视图:Android 10" 平板电脑,猜猜看……我得到了同样的错误。但是表单上没有 TImageObjectAppearance!因此,我完全删除了 Windows | Master 视图中的 TListView 自定义项,并使用 Android 10" 平板电脑视图重新开始。我添加了所有自定义外观对象,包括 TImageObjectAppearnce。但是当我为 10" Android 平板电脑编译它并在我的 Galaxy Tab S2 上运行它时,1) 没有图像出现。这是我为设置图像而编写的代码。(那里是我用于 TImageObjectAppearance 项目的表单上的 3 个 TImage 组件。
我的第二个(第三个或第四个)问题是为什么上面的代码在为 Android 编译时不起作用,以及在代码中将图像分配给 TImageObjectAppearance 的正确方法是什么?
谢谢-巴里
delphi - Delphi 2007->10.1 Berlin Port:解决 E2251 对 StrLen 的模糊重载调用
背景:将我的代码移植到 Delphi 10.1 Berlin 并通过第三方库工作。有些不再可用,所以我将尝试修复代码...
以下代码(将参数从程序的一个实例传递到另一个实例)引发对 StrLen 的 E2251 模糊重载调用。我明白为什么,我只是不知道解决它的最佳方法。
谢谢
delphi - 如何在 Firebird 3 OO Api 中使用事务参数块
我一直在使用 Firebird 3 中包含的新 Firebird.pas 界面。当我尝试使用自定义事务参数块时遇到问题。如果我向块中添加任何标签,我似乎总是收到错误“事务参数块的格式无效”。我见过的唯一一个关于如何做到这一点的例子是 Firebird 3 中包含的“Using_OO_API.html”文档。这里是重现错误的代码。任何建议表示赞赏!
delphi - 为什么 IE11 会用参数转换我的 URL?
我有一个使用以下 url 调用的 intraweb 应用程序,其中包含 1 个参数。
当我在 IE11 中输入 URL 时,它会转换为以下内容。
它在 Chrome 和 Opera 中工作,将原始形式的参数传递给应用程序。有什么想法可以阻止 IE11 转换参数吗?
我正在使用 IE11、Delphi 10.1 Berlin 和 Intraweb 14.0.53。
delphi - 是否可以使用具有不同 Delphi 版本的 FMX 表单工作?
我使用 Delphi 10.1 Berlin。我的一个朋友得到了Delphi XE4。
我想修改属于 FMX 表单的代码。代码和表单是用 XE4 编写的,需要在 XE4 中保持可编译。如果我在 10.1 IDE 中编辑代码并保存更改,Delphi 会修改源代码(添加单位)并将表单(FMX 文件)转换为新格式。如果在 XE4 中编译此修改后的表单,则会导致几个错误。
是否可以告诉 Delphi 不要进行这些修改?
顺便提一句:
- 如果我在 IDE 之外编辑代码,一切似乎都可以正常工作。
Delphi 10.1 正在添加单位(例如
FMX.ComboEdit, FMX.ScrollBox, FMX.Controls.Presentation
),即使这些已经存在但 ifdefed,例如:被修改为
导致编译器错误:
/li>
android - 如何绕过Android设备上表单(自定义视图)显示的自动选择?
是否有可能以某种方式以编程方式绕过Android设备上表单(自定义视图)显示的自动选择?
如果我使用自动选择,Delphi 并不总是能正确确定 Android 设备的分辨率和大小:
让我举几个例子:
GT-I8160P(对角线尺寸 3.8",分辨率 480x800 [320x533])被归类为 5.0" LgXhdpiPh 设备。
Z220(对角线尺寸 4.0",分辨率 480x800 [320x533])被归类为 3.5" SmXhdpiPh 设备。
SM-G360F(对角线尺寸 4.5",分辨率 480x800 [320x533])被归类为 4.0" NmXhdpiPh 设备。
有人建议我如何绕过自动选择并提供自定义(自己的)视图选择?