复制下面的 zlib.a 到你的 SDK 本地缓存目录下的 ,一般是位于 %UserProfile%\Documents\Embarcadero\Studio\SDKs 的具体平台 sdk 子目录下,比如我本地是 C:\Users\Administrator\Documents\Embarcadero\Studio\S
分类: C++ Builder
[公告] RAD Studio 10.3 来了
官方原版下载链接:HTTP FTP 官方更新说明:原版 【官方更新说明简译】 1、Delphi 语言 支持内联变量和内联变量的类型推断,说明参考上一篇 Linux 的内存管理已经不再使用 ARC 模型了,改成和 Windows 一样,NEXTGEN 定义在 Linux 平台上已经无效了 Linux 平台支持 AnsiS
[教程]QLog 分类型记录日志和 TQLogStringsWriter 的用法简单示例
QLog 最近做了一些更新,下面演示下更新的几个地方的使用方法: 1、为 TQLogWriter 基类添加了 AcceptLevels 属性,以便将不同类型的日志输出到不同的目标中。比如,我们要将 llError,llFatal 类型的日志输出到一个单独的文件中,我们可以用类似下面的代码实现(中间省略其它代码): [c
[教程]QDialogBuilder 使用教程
【注】目前 QDialogBuilder 只支持 VCL,同时,为了兼容以前的 Delphi ,所以单元名称为 qdialog_builder。 使用 QDialogBuilder 的基本步骤如下: 1、设置搜索路径,包含 QDAC 的 Source 目录,qdialog_builder 单元位于该目录下。 2、在需要
[教程] Resource XXX not found 的解决办法
一查路径:查看程序的搜索和库文件路径中是否有重名的文件,如果资源在这些重名的文件中,链接时如果错误链接到了老版本,就有可能造成此问题。 二看定义:在 Delphi 中,如果 DFM 定义和 Pas 对应的文件不完全匹配(比如界面上有的控件,但 pas 中由于某些原因被删除了),编译时并不会提示什么问题,但实际链接到程序
[译]Idera 2018年8月路线图简译
原文:RAD Studio August 2018 Roadmap August 2018 Roadmap Commentary from Product Management 简译: 【现状】 专业版已经加入了移动开发支持 C++ Builder 支持 Make 命令行支持 新的 VCL 界面控件/布局和 FMX
[教程]FMX 下将当前控件的相对坐标转换为屏幕坐标
好吧,在 VCL 里简单的 ClientToScreen,到了 FMX 就变得不是那么简单了。这就牵涉到了 FMX 的坐标体系,咱们不在这里的展开说明,仅提供实现的介绍: 1、调用控件的 LocalToAbsolute 将控件坐标转换为绝对坐标,这个绝对坐标是相对于 Form 的,所以不要以为它是屏幕坐标,这是人很容易
[教程] 通过 Rtti 设置对象的事件响应函数
核心提示:调用 TValue.Make 函数来将事件的响应函数绑定。 示例:我们拿 TTimer 来做例子,我们知道它有一个 OnTimer 事件,但我们又不想引用 TTimer 所在的单元,而我们要修改某个实例的 OnTimer 事件响应函数(感觉好绕是吧?因为只是拿来做例子,反正看不懂就当一切在做梦,什么也没发生就
[日积月累]-2018-6-24:早期 Delphi 版本 Base64 解码需要注意的一点小问题
早期的 Delphi DecodeBase64 对于不是正常以 = 号结束的 Base64 编码内容进行解码时,结尾会解出乱码,造成程序运行时出问题,要解决这一问题,应对其进行补位,加上一定数量的 “=”,以解决此问题。需要补位的 “=” 个数的计算公式: n=( mod 4) n=0 :不需要补位 n>0:补
[教程]为 Delphi 剪贴板加入 CF_HTML 数据支持
嗯,直接上代码,需要引用 QDAC 的 QString 单元,不支持太老版本的 Delphi,使用古董版的 Delphi 的请自己改写下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
uses clipbrd, qstring; type THTMLClipboardFormatData = class helper for TClipboard private class procedure RegisterHtmlFormat; function GetAsHtml: String; procedure SetAsHtml(const Value: String); public property AsHtml: String read GetAsHtml write SetAsHtml; end; var CF_HTML: WORD = 0; //此处省略一万字 { THTMLClipboardFormatData } function THTMLClipboardFormatData.GetAsHtml: String; var AHandle: THandle; pData: PQCharA absolute AHandle; AText: QStringW; p: PWideChar; begin RegisterHtmlFormat; if Clipboard.HasFormat(CF_HTML) then begin AHandle := Clipboard.GetAsHandle(CF_HTML); try AText := Utf8Decode(pData, -1); p := PWideChar(AText); while (p^ <> '<') and (p^ <> #0) do SkipLineW(p); Result := p; finally GlobalUnlock(AHandle); end; end; end; class procedure THTMLClipboardFormatData.RegisterHtmlFormat; begin if CF_HTML = 0 then CF_HTML := RegisterClipboardFormat('HTML Format'); end; procedure THTMLClipboardFormatData.SetAsHtml(const Value: String); var S: QStringA; AText: String; AHandle: THandle; begin RegisterHtmlFormat; S := QString.Utf8Encode(Value); AText := Format('Version:0.9'#13#10 + // 'StartHTML:%08u'#13#10 + // 'EndHTML:%08u'#13#10 + // 'StartFragment:%08u'#13#10 + // 'EndFragment:%08u'#13#10 + // '<html><body>'#13#10 + // '<!--StartFragment -->'#13#10 + // '%s'#13#10 + // '<!--EndFragment-->'#13#10 + '</body></html>', [97, 172 + S.Length, 111, 136 + S.Length, Value]); S := QString.Utf8Encode(AText); AHandle := GlobalAlloc(GMEM_DDESHARE, S.Length + 1); if AHandle <> 0 then begin try Move(PQCharA(S)^, GlobalLock(AHandle)^, S.Length + 1); finally GlobalUnlock(AHandle); Clipboard.SetAsHandle(CF_HTML, AHandle); end; end; end; |
用法是直接操作 Clipboard.AsHtml 属性就可以了,例如: [crayon-62c6ba803cad
[日积月累]-20180621:[Warning] W1000 Symbol ‘%1’ is deprecated: ‘Use %2’
【译】 [警告] W1000 符号 ‘%1′ 已经被废弃:’请使用 %2’ 【问题原因】 当前版的 Delphi 已经不再使用名为 %1 的函数/变量/常量,目前的代码仍可以正常运行,但最好改成使用 %2 的替代函数/变量/常量。官方的意思是相应的符号将在后续的某个版本中
[教程]QDAC FMX VirtualTreeView 入门教程
实际上,本不想造车,可官方的车太破,而 Jam software (原Softgem)的 VirtualTreeView(后面称老VT吧) 又不知道 FMX 版要等到什么时候,本着求人不如求己的基本原则,编写了这个组件。不过,感谢的话是必需说的,这个组件的核心思想实际上与老VT的基本一致。不过我没有照扒别人东西的习惯,
[杂谈]编写 Delphi 组件时的一些小问题总结
1、要想让自己的对象属性能够自动被 IDE 保存,那么这个对象应该是 TPersistent 类型的子类,否则,设计期能够见到,但保存时不会自动保存。除非你自己重载 DefineProperties 函数。 2、如果你在控件上添加了一个辅助控件,而不想被保存到 DFM 里,你需要重载 GetChildren 来自己实现
[教程]DateTimeFromString 函数的使用说明
DateTimeFromString 用于将一个日期时间格式的字符串表达式转换为日期时间类型,用于替代 Delphi 自己的 StrToDate 函数(弱弱的一个函数,我一直忽略它的存在)。 在绝大部分场景下,DateTimeFromString 可以正确识别多咱格式的日期时间字符串,但并不代表它的自动识别智能到可以理
[公告] Rad studio 10.2.3 来了
版本号:10.2.3.2631 变更文件对比:查看 10.2.2.2004 和 10.2.3.2631 版本源码变更报告 更新内容说明:官方原文 增强 VCL 对高 DPI 支持 提升 FMX 框架品质,修正了Android 下动画、退出时异常以及 AdMob 新版支持,还有一些控件及 macOS High Sierr
[译] RAD Studio 2018 年激动人心的开发进程(简译)
原文链接 关于 10.2.3 : 增强 VCL 对高 DPI 支持 提升 FMX 框架品质 提高 C++ Builder 功能,加入 CMake 命令行和 C++ 命名重构支持。CMake 提供对 Ninja 并行编译框架支持。 为 RAD Server 提供 Ext JS 支持 10.2.3 可能需要卸载重装,但
[FMX] FMX 动画类的一个辅助增强
本增强的目的是解决动画对象只支持 published 的有效的几种属性的问题,确切的说,这是一个适配器,通过匿名函数建立与非 published 属性的适配。我在 [FMX] Delphi 中 TAnimation 设计的几点值得商榷的地方 一文中讨论了 FMX 动画支持类的一些值得商榷的地方和改动,而这个增强从另一个
[杂谈]系统对话框(如浏览目录)被隐藏到主窗体后面造成程序无法操作的临时处理方式
说实在话,我被这个问题困扰不知道多少年了,具体的原因我实际上到现在为止仍未找到。不过这里提供一个临时的解决办法,使用定时器来检查当前进程的活动窗口与 Screen.ActiveForm 是否一致,如果不一致,则检查 Screen.ActiveForm 是否被禁用了(注意不要看它的 Enabled,而是调用 API),如
[更新]RAD Studio 非官方补丁(部分)
下载地址:GitHub 【注意】 1、补丁仅供参考,最终如何修复是官方的事,我的事是提供一种可行的解决方案。 2、品质没保证,补丁也可能有Bug,如果发现问题可以一起改进。 3、我只能提供我修正的补丁,其它人修正的补丁,如果愿意可以一起放进去,但需要您同意遵守 MIT 授权协议 【使用方式】 FMX Fixes 已经根
[iOS] XCode 9 发布时提示 Provisioning profile “iOS Team Store Provisioning Profile: xxx” is Xcode managed 时的解决办法
升级到10.2.2 的同学们,如果以前的签名配置文件是由 Xcode 生成的,那么可能会提示下面的错误: Provisioning profile “iOS Team Store Provisioning Profile: com.richmat.lp” is Xcode managed, bu