问题标签 [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.
rest - 如何使用 EMS 文档属性创建 YAML 文档
我刚刚开始尝试使用 RAD 服务器。使投资具有吸引力的功能之一是自记录 API 的功能,这将在支持外部合作伙伴连接到我们的 REST 接口方面节省大量工作,并且无需维护单独的接口规范文档,这总是会落后的发展。
我已按照 wiki 中的教程创建自己的第一个 EMS 资源,一直到部署到测试 EMS 服务器。这工作正常,没有任何障碍。
但是,当我到达自定义 API 文档教程时,它根本不起作用。
我看过 Stephen Ball 在SWAGGER / YAML 和 SELF DOCUMENTING RESTFUL API'S上的帖子。不幸的是,他使用了 RAD Studio EMS Sample 项目,即使对我来说也能完美运行。但是,当我尝试将相同的属性应用于我自己的 EMS 包裹时,它就不起作用了。
当我调用 htt://localhost:8080/api/apidoc.yaml 时,服务器返回:
EMS 开发服务器具有以下相应的日志条目:
这是教程中我的代码片段:
看起来示例项目中的某些内容在 RAD Studio EMS 包向导生成的代码中缺失。
我想知道是否有人能够使用新的 EMS 文档属性从他们自己的 EMS 包创建 YAML 文档——而不是 RAD Studio 提供的示例项目?
有没有其他人经历过这个?是否可能 get 方法尚未完全实现。有解决办法吗(我刚刚更新到 RAD Studio 10.2.1)?
delphi - Delphi REST 请求异步无法填充 TList
我已经声明了这些新类型:
我在数据模块中有一个如下所示的过程:
如果您想知道,这是 JSON 字符串:
在主窗体中,我可以通过这种方式调用该过程:
我有以下问题。该变量myList: TRacersList
在表单的 OnCreate 和 OnDestroy 事件中创建和释放。如果您尝试运行此代码:
结果为 0。相反,如果我将异步请求放在aList.Add(tmp);
外部(例如,在参数设置之前),则计数为 1。
这意味着当列表在完成处理程序之外时正在填充列表,ExecuteAsync
但当列表在内部时则不会。任何想法?
我已经确认默认情况下同步设置为 True,所以添加
将是无用的。我应该怎么办?我想在数据模块中有这个解析/休息的东西,这样我就可以把互联网的东西与我的应用程序实现分开。
delphi - 无法将 TMS 异步组件添加到 win32 firemonkey 程序
我有一个仅针对 win32 的 firemonkey 应用程序。我想添加 tms 异步串行通信组件。当我这样做并尝试构建它时,尝试编译 tms 源代码会感到不安。更改 tms 源代码并非易事。
它在哪里获取源代码的库路径?如果我删除该路径,它将使用现有.dcu
文件并工作吗?还有其他建议吗?
delphi - FireDAC 下的 Params.asBlob 分配给了 W1058
FireDAC 示例项目(演示 ArrayDML)在编译时对用指示的分配c:\Users\Public\Documents\Embarcadero\Studio\19.0\Samples\Object Pascal\Database\FireDAC\Samples\Comp Layer\TFDQuery\ExecSQL\Batch\Batch.dproj
有两个// W1058 Implicit string cast with potential data loss from string to rawbytestring
警告:Params[2].AsBlobs
//W 1058
解决这个问题的正确方法是什么?(在 FireDAC 下,AsBlobs 在 Windows 下已更改为TFDByteString
= RawByteString
)。强制转换为RawByteString()
或Params[2].Value
赋值都会使编译器警告消失,但我不确定这不会导致潜在问题......
linux - Delphi Tokyo for Linux:将文件内容流式传输到标准输出(控制台输出)
我一直在寻找如何将文件内容(在本例中为 excel 文件)流式传输到控制台输出的问题。在为 Windows 编译时,使用 aTHandleStream
与 STDOUT(控制台输出)的句柄组合起来就像在公园里散步。它使用 Win32 API,因此在为 Linux (顺便说一下 Debian)编译时显然不起作用。
我正在寻找与此等效的:
更新:以下似乎适用于 Windows,但是一旦我切换到 Linux,它就无法编译,因为PAnsiChar
未知。
你能找出一些可能有帮助的东西吗?
更新:
嗨,雷米,
再次感谢您的帮助!我快到了,还在为最后一点挣扎。你提到我应该能够对 system.output 做一个 BlockWrite 。但是,BlockWrite 期望 var F: File 作为第一个参数,而 System.Output 的类型是 TEXT ?
此外,我正在使用“字节文件”而不是“文件”来读取我正在阅读的文件,我不确定如何正确转换为输出到控制台?
这是这个 linux POC 的当前状态:
这部分工作正常:阅读 details.xlsx 并将内容写入 test.xlsx(基本上是副本)。目标文件与源文件相同。
这部分还没有工作,但最终是我需要的:将 details.xlsx 的内容写入标准输出:
最终更新:
delphi - FDManager.DeleteConnectionDef 不删除连接定义
我的应用程序有一个设计TFDConnection
时间,当它连接到另一个数据库(类型)时会被重用。
我还从其设置中派生了一个池连接,并将其注册FDManager.AddConnectionDef
为在多线程时使用(如这里)。
第二次设置时,我不小心AddConnectionDef
用相同的 ConnectionDefName 再次调用。文档说:
该名称在 ConnectionDefs 列表中的其他连接定义中必须是唯一的,否则会引发异常。
这不会发生。没有例外,我最终得到了两个同名的 ConnectionDef。
对于那些好奇的人:下一个代码块演示了这种行为(质量门户上的 RSP-19107)。这不是我的直接问题,因为我想好吧,然后我DeleteConnectionDef
先删除旧的。
但事实证明,这也行不通。请参阅第二个代码块。
下面是演示DeleteConnectionDef
失败的示例代码。请注意,我什至不使用或打开TFDConnection
.
那么这里会发生什么,我该如何解决这个问题?
这是 Delphi Tokyo 10.2.1
如果您想运行此代码,请在表单上放置一个TFDPhysFBDriverLink
和。TFDPhysMSSQLDriverLink
我尝试在那些上调用 .Release,但这并没有帮助。
更正:运行代码不需要放置 TFDPhysxxxDriverLink 组件。我留下这句话是因为它们相关单元的存在对于 AddConnectionDefinition 错误是必不可少的(请参阅批准的答案)。
已解决的问题:该RSP-19107链接上的补丁FireDAC.Stan.Def.pas
和FireDAC.Comp.Client.pas
可用的补丁。
delphi - H2077 inside try finally block with goto - 是东京的编译器缺陷吗?
升级到 10.2 Tokyo 后,第三方组件之一开始引发大量异常。调试显示有问题的部分代码,可以用这个(希望是)最少的代码来表示:
将编译器选项中的 优化设置为
- True ( Release 配置的默认值) -
foo(1)
返回False
- False(调试配置的默认值) -
foo(1)
返回True
XE7不会出现这样的问题。这个解释东京编译器变化的答案可能是相关的 - 但也许修复了一些新引入的问题。
我的问题是: 这是东京的编译器缺陷吗?我很确定是这样,但我是 Delphi 编程的新手,如果能从更有经验的用户那里得到确认,那就太好了。
如果是编译器的缺陷,那么我有一个后续问题:有没有快速修复此代码的方法?我知道如何goto
用简单的语句在我的 MCVE中删除if then else
,但实际代码要复杂得多:
并且一些if
块还包含带有 inner 的循环goto
。我知道如何将所有这些逻辑重写为嵌套if then else
块,但也许有一种更简单的方法来修复它,而无需等待编译器的缺陷或第三方组件被修复(我知道这些都不会很快发生)。
delphi - Delphi 发布接口指针
我在 Delphi 的接口上苦苦挣扎。这个问题可能是微不足道的,但我是德尔福的新手,所以请原谅。
我有一个带有自定义节点的 TreeView,它包含一个对象的接口(本质上,就像这里提出的那样:Storing interface pointer inside tree view nodes)。
问题是,一旦我删除了一个节点(为了重绘树视图)并将接口变量设置为 nil(由于某种我还没有完全理解的原因,释放不会与接口有关),最奇怪的事情就会发生:
在我的对象中,它包含一个列表、一个整数和一个字符串变量,字符串和列表将设置为空,而整数保持不变。
我无法解释这一点。有谁知道解决方法或这种行为的可能原因?顺便说一句,我使用的是 Delphi 10.2 Tokyo。
这是我相当不起眼的破坏方法:
编辑:这是我的代码的简化版本:
我指的对象:(我有几个类似的类,它们看起来像 obj 但略有不同,我不知道接口中会存储哪一个,但都共享这些变量)
我定制的treeNode:
在我的班级里面管理 TreeView:
macos - 我可以在 Windows 中编写 Delphi 应用程序并稍后在 Mac OS X 中测试它们吗?
在离开 Delphi (2006) 几年后,我正在考虑返回,尝试跨平台 Windows-OS X 开发。我有一台旧的 Mac Mini,双启动 Win10 和 OS X。我发现讨论跨平台 Delphi 的所有内容都涉及两个操作系统同时运行的配置,两台机器或一台机器+一台虚拟机。(对于 4G 的 RAM,我认为我没有后一种选择的内存。)
我想知道我是否可以在 Win10 中开发(不运行 MacOS)、编译、推送到源代码控制等,然后再将文件拉到 MacOS 中进行测试(不运行 Win10)?