问题标签 [delphi-xe8]

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 回答
1082 浏览

delphi - TabControl 导航按钮/确定选项卡是否可见

我正在尝试添加像 Notepad++ 这样的 tabcontrol 导航按钮。

我在 Delphi-XE8 中使用 Firemonkey。

记事本++

我首先必须确定是否所有选项卡都可见。

所以这里是表格:

带标签的表单

如果我调整它的大小,第三个标签就消失了:

没有标签的表格

我尝试过的方法无法检查选项卡是否可见:

或者也许有人知道实现 tabcontrol 按钮的更好方法?

0 投票
1 回答
148 浏览

delphi - 我可以使用 generics.defaults 比较 Real48 吗?

以下用于比较两个 Real48(6 字节浮点数)的代码编译并运行,但要么生成无意义的结果,要么生成 AV。

它应该输出 0,但如果它没有先炸弹,它会输出-92或其他一些不正确的值。

这个错误是否仍然存在于最新的 XE8 中?如果是这样,之前是否有报道过,我在https://quality.embarcadero.com
上找不到任何内容,但如果有较旧的 QC,我想参考一下。

最后....我如何REAL48使用 比较两种类型TComparer<something>

编辑:
这是我解决的问题:

0 投票
0 回答
95 浏览

delphi - 拆分字符串与拆分差异

考虑这个比较StrUtils.SplitStringSysUtils.TStringHelper.Split 的示例程序:

输出是:

谁能解释其中的区别?

我希望结果是 2 个空字符串。

0 投票
1 回答
687 浏览

android - 为什么文本文件的编码从 UTF-8 更改为 ANSI(以及如何解决这个问题)?

我正在使用 Indy 从 Android 设备发送一个 .txt 文件作为附件。

当我下载此文件时,.txt 文件的编码已从 UTF-8 更改为 ANSI,并在彼此相邻的行中显示其内容,而不是在彼此下方。

那么我做错了什么,如何解决这个问题?

用于发送邮件的功能代码:

感谢您的时间。

0 投票
2 回答
1477 浏览

delphi - 如何处理TListBox一直滚动到Delphi XE8中的最后一个TListBoxItem?

我正在尝试制作一个最初在其中加载 15 个 TListBoxItems 的 TListBox,并且每次您一直滚动到 TListBoxItem 的底部时,都会再添加 15 个 TListBoxItems。在 Delphi XE8 的 firemonkey 多设备项目中。

现在我不知道如何知道用户是否在 TListBox 中一直向下滚动。我已经尝试过 TListBox 的每个事件,但似乎没有一个能做到。

0 投票
1 回答
542 浏览

delphi - Delphi XE8 在应用程序启动时优雅地处理 ETetheringException

Delphi 应用程序共享管理器在 2020-2039 年期间保留 20 个端口来启动其通信线程。我想知道当第 21 个应用程序在同一台计算机上启动时会发生什么。事实证明,这个应用程序只是挂起无响应,直到它被杀死,而且我还没有找到一种优雅地终止它的方法。

要重现,只需将 TTetheringManager 和 TTetheringProfile 放在一个空表单上,将配置文件连接到 Manager,编译,在 IDE 外启动应用程序 20 次,最后在 IDE 中启动第 21 个实例。

这是我到目前为止发现的:

System.Tether.NetworkAdapter 中:过程 TTetheringNetworkManagerCommunicationThread.Execute;当TCP 或 UDP 通信服务器无法启动时,将引发ETetheringException.Create(SManagerNetworkCreation) 。到目前为止,一切都很好。

此异常显示在调试器中。当我继续并逐步执行以下代码时,应用程序最终挂在System: 函数 AcquireExceptionObject 中并且永远不会返回。

由于应用程序是在 Application.Run 期间引发的,我尝试通过以下方式捕获异常:

但这没有用。有什么建议我可以捕捉(或防止)这个异常吗?

0 投票
0 回答
492 浏览

android - Delphi Android Text 渲染错误?

所以我在Android上使用Delphi XE-8,使用线程在后台工作。而且我有一个计时器从主线程更新时钟的标签(也许有更有效的方法来做到这一点)。

现在,当我在 Android 上启动我的应用程序时,时钟的字符会随机缩小或放置在字符应位于的上方或下方。在应用程序的生命周期内,相同的字符会发生这种情况,当我关闭并重新启动应用程序时,它可能是不同的字符。通常一个数字有一个指数的大小,有时这个字符根本就没有。还有一次,这个错误根本没有出现......它发生了大约 4-5 次中的 1 次。

在图片(下)中,“5”被放置在标签的中间位置,2 是不可见的(可能完全在可见标签的上方或下方)。

在此处输入图像描述

时钟代码如下所示:

所以我尝试了多种方法。1. 将时钟放在一个线程中,使用同步调用更新到 UI。2. 使用位图而不是标签(同样的问题)。3. 调整标签的设置,labelsize,textsize,fonts,textAlignment,margin,padding 等。但都无济于事。

我正在使用具有所需(其中一些不是)处理器的多个 Android 设备,并且所有这些设备上都出现了该错误。

是否有合乎逻辑的解释(我做错了什么)以及如何解决这个问题?

感谢您的时间和精力。

编辑:XE6 和 XE7 也会发生这种情况... Edit2:我也尝试过使用:

没有人改善这种情况。

0 投票
3 回答
1723 浏览

delphi - Delphi Xe8,如何获取安卓设备令牌?

我注册了谷歌云消息(GCM)系统。我正在使用德尔福 Xe8 。

我需要获取 android 设备令牌以使用 gcm 发送通知。

但我不知道设备令牌。

如何获取设备令牌?

0 投票
1 回答
1806 浏览

delphi - 异步 TADOQuery 的 OnFetchComplete 未同步到主线程

当使用TADOQuerywith[eoAsyncFetchNonBlocking]并附加到OnFetchComplete事件时,我发现它OnFetchComplete没有在主线程中执行(在 XE4 和 XE8 中测试)。我认为这是一个错误*,因为我们大多数人都会在 UI 中处理这些类型的事件。我相信这是大型项目中一些问题的根源,我需要一个解决方法。

[编辑] *阅读 ADO 文档后,我承认这可能不是错误,但多线程问题仍然存在。

有没有一种优雅的方法可以强制让这个处理程序中的代码在主线程上执行?我不想使用计时器(但如果这是我会接受的唯一解决方案)。或者,是否有一个我可以在这里等待的 ADO 同步对象或向 ADO 提供者发送某种其他形式的信号?

这是一个简化的示例,显示了该问题。我的项目更复杂,工厂创建和填充这些数据集,但这里类似于将数据集附加到内部的网格ADOQuery1FetchComplete

dfm 只是简单地设置ExecuteOptions = [eoAsyncFetchNonBlocking]OnFetchComplete处理查询。

[编辑] 建议使用TThread.Sychronize,但这不是 Delphi 线程。

如果GetCurrentThreadId没有足够的证据表明处理程序是从另一个线程调用的,那么这里是主线程和有问题的线程的调用堆栈(我在主线程中添加了一个睡眠以进行良好的测量)

主线程休眠

调用处理程序的其他线程

0 投票
3 回答
1762 浏览

android - 带有Delphi XE8的Android中TListBoxItem前面的TSearchBox

我在 Delphi XE8 中有一个 firemonkey 多设备项目,我在其中向我的 TListBox 添加了一个 TSearchBox。只有在 Android 上,SearchBox 才会放在我的 TListBoxItems 前面。在 Windows 和 iOS 上,它会在所有 lisboxitems 上方显示搜索框,即使您向下滚动,它也始终保持在顶部。

我正在使用带有 android 5.1.1 的 Nexus 7

在下图中,您可以看到顶部列表框项前面的搜索框: 搜索框添加到 fmx

我如何用android得到这个?

更新

我在 TListBox 上方创建了一个工具栏,并在运行时向其中添加了一个 searchBox。这样,searchBox 总是在 Items 之上,但我无法在 listBox 中搜索。如何设置它来检查 ListBoxItems 的文本?

更新 2

我制作了一个新的测试项目,它似乎在该项目中正常工作。现在我已经用我使用的自定义样式进行了一些测试,这似乎是问题所在。唯一的问题是我使用 Stylebook 设置项目中的所有样式,我不知道如何排除 ListBox 及其项目。

更新 3

我已从我在样书中使用的 .style 文件中删除了 listbox 和 listboxitem 样式。这解决了这个问题。我现在唯一的问题是显示了 TListBoxItem 文本。我用标签制作自定义列表框项,以便以我想要的某种方式对齐它们,如下图所示。但为了能够搜索项目,我需要设置项目的文本。所以文本显示在我在项目中设置的标签上方。

有没有办法将 listboxitem 文本设置为不可见?我已经尝试将颜色更改为与背景相同的颜色,但这不起作用,并且还将字体大小设置为 0,这也不起作用。