问题标签 [delphi-10.2-tokyo]

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

android - Delphi 10.2 Tokyo Firemonkey Multi Device Project ShowModal 不会在 Android 中关闭表单

我正在尝试将我的多设备应用程序从 Delphi 10 Seattle 升级到 Delphi 10.2 Tokyo。

只是现在我在使用 ShowModal 表单的 Android 上遇到了一些奇怪的行为。该表单确实获得了模态结果,但没有关闭显示模态表单。我怎样才能解决这个问题?

下面的代码示例:

我需要以不同的方式释放/关闭表单还是需要设置一些表单属性或其他东西?

更新

我已经进行了一些其他测试,现在似乎使用 TCloseAction.caFree 在 Android 上不再适用于释放表单了。

我的测试:

那么我应该如何关闭并释放 Delphi 10.2 的表单呢?奇怪的是,使用 Android 硬件后退按钮确实会关闭表单,并且还会调用 Form.Close 事件。并且使用标准的 WindowClose 操作也不起作用。

0 投票
2 回答
2773 浏览

delphi - Delphi - 试图获取 StackTrace 的异常

我有一个异常记录器,它将所有异常记录到一个日志文件中:

要启用Exception.StackTrace,我正在使用 JCLDebug,如下所述:https ://blog.gurock.com/working-with-delphis-new-exception-stacktrace 。

我在项目选项中启用了以下选项:

编译:调试信息、本地符号、符号引用信息、使用调试.dcus、使用导入的数据引用

链接:调试信息

但是,当我触发异常时,即使触发了异常,也GetExceptionStackInfoProc始终Exception.StackInfo是空字符串。关于我可能缺少什么的任何想法?

更新 20170504:感谢 Stefan Glienke 的解决方案。为了完整起见,我在此处GetExceptionStackInfoProc包含了包含他的解决方案的更改过程的代码:

0 投票
1 回答
942 浏览

forms - Delphi 10.2 Tokyo 透明表格未在 Firemonkey 多设备项目中显示

我正在将我的应用程序(Android、iOS)从 Delphi 10 Seattle 更新到 Delphi 10.2 Tokyo。我有一些使用透明度的表格。我用它来创建像屏幕一样的小弹出窗口,它仍然在透明表单下方的背景中显示先前表单的一部分。

我现在的问题是透明度属性设置为 True 的表单根本不显示。似乎调用透明表单的原始表单在它之上。

在 Windows 上,表单运行正常,在 iOS 上,我可以看到一些组件,有些组件的大小/位置错误。

我该如何解决这个问题?

下面的代码示例:

TFrmTransParentForm 表单是一个普通表单,只有一个按钮在屏幕中心对齐,并且表单属性透明度设置为 true。

0 投票
0 回答
672 浏览

delphi - Firemonkey 手势平移和面板位置

我有一个TpanelFiremonkey android 表单和一个网络浏览器控件,当我将手指移动到右侧屏幕时,我尝试动态设置它position.x,我执行以下操作tpanel

但是 panel1 的位置似乎根本没有改变我做错了什么?

我已经放下TGestureManager并设置了手势平移和 webbrowser Touch 属性

0 投票
1 回答
541 浏览

delphi - 另一个 Delphi 无效指针操作

这个 VCL Form 程序生成 Invalid Pointer Operation 通知:

该代码工作正常,并在 Richedit 组件中生成项目列表。我怀疑我正在释放一个已经被处理的对象,但不清楚具体原因是什么。有人可以解释一下吗?

0 投票
3 回答
759 浏览

delphi - 如何阻止我的应用在 Virtualbox 上运行?

我已经尝试过这个单元来检测我的应用程序是否在 Oracle VirtualBox 中运行,但它没有检测到 VirtualBox。

我已经在 VirtualBox 中安装了 Windows 7 对其进行了测试。

有什么有效的方法可以防止我的 VCL 应用程序在 VirtualBox 中运行?

0 投票
3 回答
1659 浏览

delphi - Dll 在 Delphi 10.2 中崩溃,但仅在调试模式下

我最近从 Delphi 2010 升级到 Delphi 10.2 Tokyo 许多第 3 方库已经开始在调试模式下抛出异常,并且仅在调试模式下。最常见的错误是 $C0000005 一般保护故障。这些是我多年来一直在使用的库,并且非常完善。

这些是第 3 方库,我无权访问源代码。

这包括 jvm.dll 和 msxml 之类的东西

有什么线索吗?解决方法?这些问题是一致且持久的,并且有问题的应用程序在未调试时运行得非常愉快。

在我看到的每一种情况下,库都是动态链接的,而不是静态链接的。我怀疑这个问题与调试模式下的不同权限有关。

编辑:我跟踪了一个 DLL 调用,结果发现它正试图写入 DLL 的本地内存 DATA 或 BSS。在 Delphi 2010 中,它非常愉快地允许这样做。在东京,它会抛出 $C0000005 错误。我假设这是最新的 Delphi 调试器的错误或设置问题。

编辑 2:我已经设法提取了一个最小的应用程序来重现该问题。https://www.dropbox.com/s/uy8e9rw0qjxspie/testdll.zip?dl=0 下载包含一个最小的 32 位可执行文件 (testdll)。它静态链接到第 3 方 dll mirixafind.dll。这是一个旧的 dll,我无权访问源代码。如果您单独运行 testdll 或不进行调试,点击“Mirixa”按钮会在屏幕上打印一些行并停止。如果您运行 WITH 调试,它将失败并出现 $C0000005 错误,试图将字符串写入似乎是 dll 的 DATA(或可能的 BSS)段的一部分的内存部分。一位同事在单独的安装中复制了它。它不会发生在 Delphi 2010 中。

编辑 3:堆栈跟踪:

dll 的 Tdump 提供以下信息:

据我所知,在这种情况下 0x00974409 应该是一个完全合法的地址。

0 投票
1 回答
256 浏览

delphi - 从 ClientSocket (Mobile) 向 ServerSocket (Server) 发送数据时数据丢失

我在 Delphi 10.1 Berlin 中使用 FireMonkey 开发 Android 移动客户端应用程序,我在 Delphi 10.1 Berlin 中使用 VCL 开发 Windows 服务器应用程序。

在移动应用程序中,我TIdTCPClient用于发送以下记录:

我已经用数据填充了数据包,并使用以下代码发送数据包:

在服务器应用程序中读取数据时,我无法读取Value5Value6Value7字段。下面是读取数据的代码:

为了接收从客户端套接字发送的数据,我使用了 TIDTcpServer 并在 Execute 方法中处理了以下代码:

在此之后,我正在处理来自 Queue 的数据以及我在下面提到的处理方法:

在此我无法读取 Value5、Value6 和 Value7 字段。

通过下面的链接,我发现了一些优化的技术以及如何正确处理数据包而不会丢失任何数据包。请帮我解决这个问题。

通过套接字发送正确的记录大小

0 投票
1 回答
1697 浏览

delphi - 如何在 TTabcontrol 中隐藏多个选项卡

我的程序有三个下拉菜单和一个 ttabcontrol,它有 5 个选项卡。我需要知道的是,如果下拉菜单选择了特定项目,我如何隐藏所有选项卡并重新设置它们的可见性。例如我的下拉列表有索引项。A , B , C , A+B , A+C TabControl 有以下标签。ABC 现在我需要隐藏所有选项卡并取消隐藏选项卡 A 如果下拉选择了 a 或 a & b 如果下拉选择为 A + B。

0 投票
0 回答
383 浏览

delphi-7 - TGauge 在运行时不会改变值

首先,请耐心等待,因为我对 Delphi 世界还很陌生。我是一名前 C++、C# 和嵌入式开发人员。

我在 Windows 7 64 位上安装了 Delphi 7 和 Delphi RAD Studio 10.2 Starter。

TGauge在两个版本中都尝试过该组件,因为它在 Delphi 中是标准的(我认为)。

因此,问题是当我尝试Progress在运行时使用值设置属性时,它并没有反映在 GUI 上。但是,如果我在设计时从 Object Inspector 设置一个值,它会反映应有的值,并且 Gauge 会正确绘制百分比。

测试此行为的步骤:

  1. TGauge将组件从“示例”面板拖放到表单上。

  2. 我在对象检查器中设置MaxValue = 100和。MinValue = 0

  3. 我在txtValue表单上创建了一个文本框 ( )。

  4. btnSetValueClick我在表单上创建了一个按钮 ( ) 并使用了以下代码:

    /li>

所以,我期待仪表会显示输入的值,但事实并非如此。当我调试代码时,它会命中btnSetValueClick()并设置里面的值。

我在这里想念什么?

编辑:(这是表格中的代码。)

编辑:

我创建了一个新项目并从头开始。我把它放在TGauge不改变它的任何单一属性的情况下。它已经开始起作用了,尽管我仍然没有看到差异会导致这种行为。至少这可能会提供一个线索,该组件可能会在没有明显原因的情况下出错,尤其是对于像我这样的初学者。

请考虑此案已结案。谢谢你。