问题标签 [delphi-10.4-sydney]

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

object - Delphi Sydney Object Inspector 意外消隐

在我的新 Delphi Sydney 中,Object Inspector 有时会变为浅蓝色,显示我是否处于设计模式。右侧有蓝色区域的图像图像跨越两个监视器:您在监视器 1 的左侧看到一些表单,该表单上升到项目/调色板窗口的右边缘,在右侧您可以看到监视器 2 的一些带有浅蓝色空白对象检查器的表单。我可以看到它的大小,因为它覆盖了监视器 2 上的其他窗口,但它是空白的,因此对我来说毫无用处。

这是一个错误还是我做错了什么?

麦克风

0 投票
1 回答
1051 浏览

sql-server - 通过 ODBC Driver 17 而不是 SQL Server Native Client 将 FireDAC 连接到 SQL Server

我想使用适用于 SQL Server 17 的最新 Microsoft ODBC 驱动程序连接我的 FireDAC 应用程序,但我的连接始终使用 SQL Server Native Client 11 驱动程序。

这是我试图指示所需驱动程序的代码:

为了检查使用的驱动程序,我提出了一个异常并阅读了错误消息:

[FireDAC][Phys][ODBC][Microsoft] [SQL Server Native Client 11.0][SQL Server]Error de conversión al convertir el valor varchar 'X' al tipo de datos int.

告诉 FireDAC 使用 SQL Server 17 的 ODBC 驱动程序的正确方法是什么?另外,我还可以告诉 FireDAC 在设计时使用最新的 ODBC 驱动程序而不是本机客户端吗?

谢谢你。

0 投票
1 回答
237 浏览

delphi - FireDAC ApplyUpdates 不清除 Delta

是否可以在缓存更新模式下调用 FireDAC 查询上的 Applyupdates 而不清除其 Delta ?

这样做的原因是因为我有 4 个 FDQuery,我想将它们一起保存或一起取消,如果它们中的任何一个出现错误。如果发生任何问题,我可以使用单个事务来回滚所有更改,但这会使每个应用更新成功的 FDQuery 的 Delta 为空。

所以我想调用某种不会清除 Delta 的 ApplyUpdates,并且只有当所有 FDQuery 的 ApplyUpdates 都成功时,我才会提交事务并在每个 FDQuery 上调用 CommitUpdates 以清除它们的 Delta。但是,如果其中一个失败,每个 FDQuery 的更改仍将保留在它们的 Delta 中,因此我回滚事务并且用户仍然可以修复数据并尝试再次保存它们。

更新:正如@Brian 评论的那样,将属性 UpdateOptions.AutoCommitUpdates 设置为 False 可以解决问题并且不会清除 Delta。

0 投票
0 回答
204 浏览

delphi - 将文本绘制为路径。Bahnschrift 字体的问题

我的应用程序允许用户在画布上创建文本对象。该对象可以保存到项目文件中以便以后加载。

为了在各种平台上加载后对象看起来相同,我将文本对象实现为路径。这也允许用户使用下载的字体,然后在没有该字体的不同设备上打开项目文件 - 而不会改变文本的外观。

路径是使用创建TTextLayout.ConvertToPath和绘制的TCanvas.FillPath。这适用于大多数字体,但对其他字体有问题。

下图显示了使用 Bahnschrift 字体的结果(顶部)。底部显示了使用 MS Paint 的外观。这种字体似乎有相交的路径,我认为问题在于 FillPath 正在使用另一种填充模式,这似乎不是一个可以改变的选项。

我还通过创建文本并将其转换为路径,在 Inkscape 中测试了与 SVG 相同的字体,但它绘制正确。Delphi 和 Inkscape 创建的路径数据基本相同(t 由 2 个相互交叉的封闭区域组成),因此它们的绘制方式必须不同。

任何人都可以建议解决这个问题吗?

在此处输入图像描述

这是代码

0 投票
2 回答
258 浏览

delphi - Delphi 组件自定义属性不保存在 DFM 文件中

我不想保存在 DFM 文件中的自定义组件上有一个属性。我已经重写了 DefineProperties 方法以不提供 ReadData 和 WriteData 过程,期望它不会保存它的值,但它仍然可以。

不保存此属性的原因是因为我已经将一个项目从 ADO 移植到 FireDAC,并且我创建了“假”属性,允许某些 ADO 代码原样运行,并将其重定向到其对应的 FireDAC 属性。

为了兼容性起见,保留这些“假”属性的正确方法是如何不让它们用无用的真实属性副本填充 DFM 文件?

谢谢你。

0 投票
1 回答
281 浏览

delphi - 在 Delphi RAD Server 内置用户端点中更改用户名

我使用带有补丁 1,2 和 3 的 Delphi RAD Server 10.4,我创建了端点来使用身份验证和安全组件 TBackEndAuth 和 TBackendUser 组件来管理 RAD 用户。

我可以使用这些组件成功注册一个新用户并登录,现在我正在尝试更新用户信息,但在更新字段username时我无法管理错误。

在代码中查看方法UpdateUser。运行时,它会引发错误:

{ "error": "Error", "description": "EMS 错误:错误请求。操作无法完成,因为一个或多个动态名称与静态名称冲突。冲突:用户名" }

如果我注释行lobjUser.AddPair('username',lusername_new); 然后它工作正常。但我也希望能够更新用户名。

非常欢迎任何帮助。谢了。

还有一个问题:这是在 RAD Sever 内置用户端点中更新用户信息的正确方法吗?

0 投票
1 回答
416 浏览

image - 如何以编程方式将图像添加到 TImageCollection

我正在尝试加载我想要填充和保存的 TImageCollection,以便它可以作为数据模块(.dfm 文件)中的资源使用。此代码将图像从选定的 .png 文件添加到图像集合中,我可以看到计数增加,因此它正在填充

但我需要将其保存为资源。可以这样做吗?

0 投票
0 回答
254 浏览

sql-server - 使用标量函数的 SQL Server 查询在 FireDAC 上非常慢,并且仅在 FireDAC 上

我有一个 SQL Server 查询,它在 SQL Server Management Studio 或 TADOQuery 上以毫秒为单位运行,但在 TFDQuery 上运行需要 17 秒。

默认情况下,我使用所有选项在新的 TFDConnection 和 TFDQuery 上运行它们。SET TRANSACTION ISOLATION LEVEL READ COMMITTED我确保它在与 SQL Server Management Studio 相同的隔离级别上运行。我into #DADES强制不返回任何数据(而是将其复制到临时表中),因此我可以丢弃任何潜在的问题并延迟将数据提取到本地缓冲区。最后,WITH(RECOMPILE)我强制 SQL Server 重新评估查询的执行计划(以防止使用一些带有过时统计信息的旧计划)。

此外,我还尝试禁用 TFDConnection 的 ResourceOptions 上的所有命令文本处理选项,但没有任何改进。

问题似乎与dbo.f_pes_linia_comanda()函数有关,因为用表达式替换它会使相同的查询在毫秒内正确运行。就像是 :

所以我的问题是,是否有人知道为什么 FireDAC 在具有一些标量函数时运行查询速度较慢?为什么他们使用不同的执行计划而不是直接向 SQL Server Management Studio 上的引擎发送完全相同的查询?一种获取用于 TFDQuery 的执行计划的方法,这样我就可以看到它出了什么问题并尝试解决它?

谢谢你。

0 投票
0 回答
947 浏览

rest - RESTRequest.Execute 错误 - 目标多字节代码页中不存在 Unicode 字符的映射

我在 Windows 10 64bit 上使用 Delphi 10.4(带有补丁 1、2 和 3)来构建 VCL Web 客户端应用程序。

我有一个在 RAD 服务器上运行的 API,我可以使用下面的 VCL Webclient 应用程序毫无问题地从中获取信息。但是,当我尝试通过方法将数据插入 API 资源时,我从方法调用POST中收到以下错误消息:TRESRequest.Execute()

目标多字节代码页中不存在 Unicode 字符的映射

虽然我收到此错误消息,但 JSON 数据正在发送到 API 并正确保存到数据库中。似乎在该Execute()方法的某个时刻,在将数据发送到服务器后会产生错误。

我已经尝试过TEncoding.UTF8.GetBytes(),TEncoding.ASCII.GetBytes()Unicode, 没有成功。

这是我的代码:

服务器端代码:

REST 组件的配置如下:

新的服务器端代码(工作正常)

所以现在,出现了新的问题:

  1. 为什么相同的程序在 Windows 7 下的 Delphi 10.3.1 Tokyo 中运行良好,但现在在 Windows 10 上的 Delphi 10.4 Sydney(补丁 1、2、3)中它需要 UTF-8 编码?是 Delphi 10.4 的问题吗?是 Windows 10 的问题吗?

  2. 在我的原始服务器端代码中,我有许多端点使用命令发送响应 AResponse.Body.SetValue(myJSONObject, True);我应该用两个新命令替换所有端点吗?

发生错误的 REST.Client 单元的代码:

0 投票
2 回答
170 浏览

delphi - 视图工具栏上的图标没有响应

视图工具栏上的图标不再起作用。
如果我单击它们,它们会改变颜色,但不会打开任何对话框,或者非可视组件的可见性不会切换。

在此处输入图像描述

这是 Delphi 10.4 Update 1。IIRC 更新没有发生,但后来发生了。
我尝试拖动它,隐藏它,结合“保存桌面”,重新启动,都没有成功。

其他信息:

  • 它也发生在全新的 Win32 项目中(我只做 Win32)
  • 操作系统是Win10
  • 它不特定于表单/单元
  • 没有安装插件

任何想法如何重新赋予它生命?