官方 ISO 下载 在线安装下载 更新说明暂时官方未公布。 如果是使用在线安装版本,Windows 7 或 Windows Server 2008 R2 需要打上最新的补丁,否则无法下载可选安装内容(Window 7/Server 2008 R2 最后的更新日期截止为 2024 年 4 月 26 日,在此之后,其扩展安
分类: C++ Builder
[教程] Delphi 12 Winapi.EdgeUtils.CheckWebview2Loaded 函数的一处错误处理
Winapi.EdgeUtils.pas 的第 161 行: @_GetCoreWebView2BrowserVersionString := GetProcAddress(hWebView2, ‘GetCoreWebView2BrowserVersionString’); 应修改为: webview2Loader.d
[教程]TToolBar.TToolButton 不同按钮下拉菜单使用同一个TPopupMenu
我只是不想放那么多 TPopupMenu ,可能别人早知道,可以略过不看。 1、按钮设置样式为 tbsDropDown。 2、放一个 TPopupMenu,添加一级菜单和子菜单,二级子菜单才是我们要呈现的内容。如果要显示图标,就让 TPopupMenu 和 TToolBar 关联到同一个 TImageList,然后设置
[教程]程序保存数据的防断电处理策略
虽然现代社会,电力供应没有那么紧张,但每年因为线路或计划检修等原因,正常和非断电的情况还是有的。另外,室内电源接触不良,掉落等因素也会出现异常断电的情况。如果在此时,恰好数据写入一半,就可能造成程序数据写入异常,下次程序启动时,如果调用这种数据就可能出现某些非预期的错误。 实际上解决这类问题,有一个简单的策略: 1、将
[译]RAD Studio 11 更新说明
原文链接:官方文档 官方ISO下载 Bug修复列表 注:本文为简译 IDE 高DPI支持 IDE 所有窗口都支持高 DPI 了,解决了高 DPI 缩放造成的模糊问题,有高分显示器,而且使用高 DPI 的开发者值得一试 VCL 窗口设计器支持定制 DPI(自动/96/自定义)缩放,FMX 本来就支持高 DPI 缩放 Op
[教程]修复 TNetHttpClient Windows 下Header 中包含UTF8编码字符时乱码的问题
[修复思路] 将编码转换回 ACP,然后再用 UTF-8 编码转换回来。 [修复代码] 如果引用 QString 单元,则直接 QString.Utf8Decode(PQCharA(QString.AnsiDecode(Value)),-1) 转换下就可以。 [问题原因] 该问题是由于 Windows 的 WinHtt
【教程】对 TEvent 的一处增强
对于 TEvent 来说,如果是调用 WaitFor 等待超时时,如果程序退出时,事件仍在等待状态,就需要等待超时才能退出,造成程序退出时等待很长时间。要改进这一点,我们需要新版的 QWorker,它实现了一个 TAbortableEvent 的记录类型,然后支持取消操作。 TAbortableEvent 的增强在于:
[教程]如果在 Delphi /C++ Builder 中调试单元初始化时的错误
有时候,我们程序在进入 Main 函数入口前,就开始报错,比如 Acesss volation at XXX read at yyyy 一类的错误。这类错误一般是由于单元之间的引用关系和初始化顺序不一致造成的。比如单元 A 的初始化代码调用了单元 B 的函数,但单元 B 此时尚未初始化,所以其使用到的一些全局或静态变量
[教程]QJSON 如何生成数组类型JSON数据
目标样式:[{“a”:123}, {“b”:123}, {“c”:123}] 首先,我们来看它的层级,第一层是一个数组,第二层为一个对象,所以,使用 QJSON 生成时,也就是下面的形式了: 最终生成的结果就如上面一样。如果遇到需要转义中文字符的场
[分享]一种将 Delphi 组件属性信息保存到JSON的方法
此代码支持 Delphi 2007+,使用 QJSON 做为序列化的支持库。你可以自己改为使用其它的 JSON库(注:此文写法未完善,仅为示意)。 使用示例: 如上面的示例,由于写成了 class helper,所以保存到 Json 里,直接调用组件实例的 SaveToJson 就可以了,而从 Json 中恢复则直接调
[Bug] Delphi System.Net.HttpClient.Win 单元的一处Bug
[问题函数]System.Net.HttpClient.Win.ReadHeader[影响版本]自有这个单元开始到10.4,包括打完最新的 patch3。[问题描述]WinHttpQueryHeaders 返回 LSize 如果等于 2,则 SetLength 得到的结果是将 Result 设置对应的字符串缓冲区被设置
[教程] Delphi 中 TJpegImage 中的一处问题修复
Delphi 中检测 JPEG 图片格式流的原始代码如下: 同时检查了 soi 和 marker,但是 marker 的值实际上是没有保证的。所以正确的做法是去掉对 marker 的检查。修正后的代码如下:
RAD Studio 10.3.3 更新内容简介
注意:10.3.3 要求全新安装。 【10.3.3中的新功能】 Delphi 支持 Android 64 支持 iOS 13 和 macOS Catalina 支持 Rad Server Docker 部署 企业和架构师版本中增加 Enterprise Connector (企业连接器?) [关键修复和显着增强] Ap
[教程]基于 RTTI 创建特定类型的实例
在 Delphi 人群中,有些人总想通过名称,然后动态创建指定类的实例而不得其门而入,不得不将类型先注册,然后再回调解决这个问题。实际上,通过 RTTI 来创建实例是有办法的。下面是基本的步骤: 1、找到类型对应的 TRttiType 信息。这里有几个方法: GetType 方法,这个需要知道目标类型的 TClass/
使用 QDAC 创建 Linux 守护进程
上一篇文章中介绍了如何在 Delphi 中创建 Linux 守护进程,而这篇文章则试图将上文的操作简单化,不要再去考虑那么多事事非非。 【基础入门】 1、引入 qconsole_looper.pas 单元,这个单元本身原来是为了能够在控制台程序中运行主线程函数而引入的,换句话说,引用它后可以保证 QWorker 在控制
在 Delphi 中创建 Linux 守护程序(服务进程)
本文意译自 原文链接,语言上做了精炼和排版的变更,以便更简洁明了。 Delphi 开始支持 Linux 平台为 Delphi 开发人员开辟了创建 Linux 服务器应用程序的可能。但遗憾的是,目前 RAD Studio IDE 并不包括创建 Linux 守护程序()服务)。 【注意】本文假设您已经能够配置好 Linux
使用 ProcessExplorer 查看 Delphi/C++ Builder 的线程调用栈
ProcessExplorer 可以查看运行中进程的各种信息,包括特定线程的堆栈信息。这在我们程序出现死循环或者无响应时等问题时,除了在客户机器上重装一套环境或Remote Debugger 之外(吐槽下 PAServer/RemoteDebugger 在 Windows 下真心不太好用),另外一种在客户机器上能够找到
[QHttpRequest]使用自定义 DNS 来应对 DNS 劫持
为了保证业务的稳定性,避免在由于用户的 DNS 服务器返回错误的 IP 地址,造成程序无法正常运行的情况,QHttpRequest 新增了一个 OnDnsLookup 事件,以便让用户自己处理 DNS 请求。 举个例子:我们要获取 https://blog.qdac.cc 的内容,如果我们指定了 OnDnsLookup
[教程]使用 Delphi 获取当前操作系统的时区
嗯,这段代码实际上已经集成到 QString 单元了,所以你可以直接调用 GetTimezone 函数来获得时区了。用 GetTimezoneText 可以获得时区的字符串表示。 代码不长,用起来也简单,它实际上返回的时区对应的分钟数,比如北京时间是480,也就是 8 小时,其它依次类推。使用 GetTimezonTe
[FMX]为 TControl 增加 DisableAlign 和 EnableAlign 方法
官方没有提供这两个方法,但我们有时候需要调整 FMX 的布局,而这一切都需要修改 FDisableAlign 这个受保护的成员的值,而要修改它的值,在以前的文章中提供了好几种方法,当然最简单的是直接加 class helper。这里我们就采用这一办法。 代码很简单,不需要解释,上面的函数都是返回之前是否允许对齐。要禁止