<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[tanqth的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/tanqth</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; tanqth]]></copyright><item><title><![CDATA[开发Linux程序时 Delphi与Lazarus对比]]></title><link>https://blog.youkuaiyun.com/tanqth/article/details/155860091</link><guid>https://blog.youkuaiyun.com/tanqth/article/details/155860091</guid><author>tanqth</author><pubDate>Fri, 12 Dec 2025 17:19:18 +0800</pubDate><description><![CDATA[Delphi与Lazarus在Linux开发中各具特色：Delphi作为商业软件提供高性能编译和成熟IDE，适合企业级应用，但需付费且依赖FireMonkey框架；Lazarus开源免费，原生支持Linux控件，更适合预算有限或嵌入式开发。关键差异在于成本（商业vs免费）、跨平台实现（框架适配vs原生支持）及生态系统（官方支持vs社区驱动）。选择应基于项目需求：追求高效和企业支持选Delphi，注重成本效益和Linux原生兼容性则选Lazarus。]]></description><category></category></item><item><title><![CDATA[Delphi跨平台开发中为Linux开发的优劣分析]]></title><link>https://blog.youkuaiyun.com/tanqth/article/details/154578977</link><guid>https://blog.youkuaiyun.com/tanqth/article/details/154578977</guid><author>tanqth</author><pubDate>Sat, 08 Nov 2025 21:10:29 +0800</pubDate><description><![CDATA[Delphi为Linux开发提供高效跨平台解决方案，通过FireMonkey框架实现Windows/macOS/Linux/iOS/Android多平台代码复用。其核心优势包括：1）可视化RAD开发快速构建界面；2）原生二进制性能优于解释型语言；3）强大数据库支持（FireDAC组件）和网络通信能力；4）企业级代码维护性。特别适合需要兼顾开发效率和性能的跨平台工具、嵌入式系统及网络服务开发，但对特定Linux API的适配和运行时库依赖需注意。相比Python/C++，Delphi在开发速度与性能间取得较好]]></description><category></category></item><item><title><![CDATA[使用Delphi 使用 CrossVcl 开发“error: cannot find –lGL”错误解决方法]]></title><link>https://blog.youkuaiyun.com/tanqth/article/details/147691955</link><guid>https://blog.youkuaiyun.com/tanqth/article/details/147691955</guid><author>tanqth</author><pubDate>Sun, 04 May 2025 11:21:52 +0800</pubDate><description><![CDATA[首次安装的国产操作系统openKylin 2.0，在测试使用CrossVcl 开发linux程序时编译错误，ld-linux.exe: error: cannot find –lGL的解决办法。]]></description><category></category></item><item><title><![CDATA[使用Delphi 和 CrossVcl 开发基于VCL的 macOS 和 Linux 应用程序简介]]></title><link>https://blog.youkuaiyun.com/tanqth/article/details/147655077</link><guid>https://blog.youkuaiyun.com/tanqth/article/details/147655077</guid><author>tanqth</author><pubDate>Thu, 01 May 2025 20:53:11 +0800</pubDate><description><![CDATA[使用 Embarcadero Delphi 和 CrossVcl 开发基于VCL的 macOS 和 Linux  应用程序。]]></description><category></category></item><item><title><![CDATA[CEF4Delphi 简介]]></title><link>https://blog.youkuaiyun.com/tanqth/article/details/143216868</link><guid>https://blog.youkuaiyun.com/tanqth/article/details/143216868</guid><author>tanqth</author><pubDate>Thu, 24 Oct 2024 19:21:20 +0800</pubDate><description><![CDATA[兼容性CEF4Delphi是Salvador Díaz Fau创建的一个开源项目，是将基于Chromium的浏览器嵌入到用Delphi或Lazarus/FPC为Windows、Linux和MacOS制作的应用程序中。CEF4Delphi基于DCEF3和fpCEF3。这些项目的原始许可证仍然适用于CEF4Delphi。写本文时，CEF4Delphi使用CEF 130.1.7，Chromium版本130.0.6723.59。]]></description><category></category></item><item><title><![CDATA[delphi中TBytesToTJavaArray的使用]]></title><link>https://blog.youkuaiyun.com/tanqth/article/details/143029610</link><guid>https://blog.youkuaiyun.com/tanqth/article/details/143029610</guid><author>tanqth</author><pubDate>Thu, 17 Oct 2024 23:32:38 +0800</pubDate><description><![CDATA[在使用delphi开发过程中，多数情况下使用TJavaArray数据类型的时候，应该是可以直接用TBytesToTJavaArray进行数据类型的转换并使用，但涉及到与流处理相关的时候，需要在使用完成后去释放清理。]]></description><category></category></item><item><title><![CDATA[delphi 部署设置(deployment)看不见内容的解决方法]]></title><link>https://blog.youkuaiyun.com/tanqth/article/details/139885162</link><guid>https://blog.youkuaiyun.com/tanqth/article/details/139885162</guid><author>tanqth</author><pubDate>Sat, 22 Jun 2024 18:37:06 +0800</pubDate><description><![CDATA[delphi 部署设置(deployment)看不见内容的解决方法。]]></description><category></category></item><item><title><![CDATA[Delphi 支持的平台和操作系统 (XE4~D13)]]></title><link>https://blog.youkuaiyun.com/tanqth/article/details/135070139</link><guid>https://blog.youkuaiyun.com/tanqth/article/details/135070139</guid><author>tanqth</author><pubDate>Mon, 18 Dec 2023 19:48:30 +0800</pubDate><description><![CDATA[收集了不同RAD Studio版本可以支持的平台和操作系统，留着查询使用。不同的平台与操作系统选择合适的开发版本。]]></description><category></category></item><item><title><![CDATA[FireDAC连接池的使用]]></title><link>https://blog.youkuaiyun.com/tanqth/article/details/128825083</link><guid>https://blog.youkuaiyun.com/tanqth/article/details/128825083</guid><author>tanqth</author><pubDate>Tue, 31 Jan 2023 23:49:07 +0800</pubDate><description><![CDATA[首先是，FireDAC的连接池必须使用TFDManager，由TFDManager来对池进行管理，使用ConnectionDef管理数据连接参数，其中主要使用INI配置文件或AddConnectionDef增加配置的方式。以前一直习惯用ADO，后来用FireDAC时也没怎么使用连接池，前段时间对FireDAC的连接池做了一些简单的学习，当时的学习重点放在了连接的配置参数方面。]]></description><category></category></item><item><title><![CDATA[Delphi 开发过程中简单的版本管理与回退(2)]]></title><link>https://blog.youkuaiyun.com/tanqth/article/details/127596271</link><guid>https://blog.youkuaiyun.com/tanqth/article/details/127596271</guid><author>tanqth</author><pubDate>Sun, 30 Oct 2022 12:18:47 +0800</pubDate><description><![CDATA[上篇文章介绍了delphi中对历史文件的简单对比及回退内容，功能相对单一，delphi还给我们提供了一个更加强大的文件对比与修改工具，这里就给大家介绍这个功能更加强大的管理与回退。]]></description><category></category></item><item><title><![CDATA[Delphi 开发过程中简单的版本管理与回退]]></title><link>https://blog.youkuaiyun.com/tanqth/article/details/127091747</link><guid>https://blog.youkuaiyun.com/tanqth/article/details/127091747</guid><author>tanqth</author><pubDate>Wed, 28 Sep 2022 17:06:37 +0800</pubDate><description><![CDATA[很多时候，我们在做代码编写或者窗体设计的时候，如果需要回退某些修改，基本是使用Ctrl+Z做刚刚修改内容的回退处理。Delphi在XE版本后增加了一个历史文件管理功能。我们可以使用这个功能进行简单的版本比较与回退处理。]]></description><category></category></item><item><title><![CDATA[Delphi 安卓11 中文语音合成（中文朗读）注意内容]]></title><link>https://blog.youkuaiyun.com/tanqth/article/details/126527744</link><guid>https://blog.youkuaiyun.com/tanqth/article/details/126527744</guid><author>tanqth</author><pubDate>Thu, 25 Aug 2022 16:44:46 +0800</pubDate><description><![CDATA[很早之前，使用DELPHI做了一个安卓中文语音合成（中文朗读）的APP，前几天，有朋友说到，这个APP在安卓11下不能完成中文朗读，在低版本的安卓手机中一切正常。怀疑这个情况与安卓版本有关，查了一些资料，根据google官方开发文档说明，在android11系统下对于使用到TTS功能的应用，需要修改应用中的。其中，红框部分就是我们这次增加上的内容。完成这些后，回到项目，重新编译。也就是说，如果需要在安卓11下使用TTS(语音功能)，就需要在。]]></description><category></category></item><item><title><![CDATA[delphi 通过注册表 取桌面目录路径]]></title><link>https://blog.youkuaiyun.com/tanqth/article/details/126078901</link><guid>https://blog.youkuaiyun.com/tanqth/article/details/126078901</guid><author>tanqth</author><pubDate>Sat, 30 Jul 2022 22:52:49 +0800</pubDate><description><![CDATA[通过系统注册表，我们可以取到当前用户对应的系统目录路径。直接调用这个函数，参数为Desktop，就可以取到当前用户桌面目录的路径。]]></description><category></category></item><item><title><![CDATA[Delphi Modbus RTU CRC16校验码的生成方式]]></title><link>https://blog.youkuaiyun.com/tanqth/article/details/125508691</link><guid>https://blog.youkuaiyun.com/tanqth/article/details/125508691</guid><author>tanqth</author><pubDate>Tue, 28 Jun 2022 20:03:01 +0800</pubDate><description><![CDATA[在很多的串口通讯中，会使用到CRC16校验。在TIdHashCRC16中，给我们提供了一种CRC校验码的生成方式：TIdHashCRC16继承于TIdHash16这个类，其中覆盖实现了两个方法：


然而，当我们直接使用TIdHashCRC16类生成校验码的时候，经常是与设备的校验不匹配的，其原因在于VRunningHash初始化时为0，而我们需要的初始化值应该为0xFFFF。所以，我们需要对这个类进行改造，其中最简单的办法就是找到IdHashCRC.pas文件，把VRunningHash:=0;这个修改为]]></description><category></category></item><item><title><![CDATA[delphi取13位的Unix时间戳]]></title><link>https://blog.youkuaiyun.com/tanqth/article/details/125075557</link><guid>https://blog.youkuaiyun.com/tanqth/article/details/125075557</guid><author>tanqth</author><pubDate>Tue, 31 May 2022 23:46:30 +0800</pubDate><description><![CDATA[以前取UNIX的时间戳基本都是引用 DateUtils后，使用的DateTimeToUnix，但是这个函数取出来的时间戳只有10位的，没有到毫秒，找了一会，不记得应该怎么取毫秒的时间戳了。

先看了一下系统DateTimeToUnix的代码：


function DateTimeToUnix(const AValue: TDateTime; AInputIsUTC: Boolean): Int64;
var
  LDate: TDateTime;
 begin
  if AInputIsUTC then
]]></description><category></category></item><item><title><![CDATA[UniChart 的简单应用]]></title><link>https://blog.youkuaiyun.com/tanqth/article/details/124514866</link><guid>https://blog.youkuaiyun.com/tanqth/article/details/124514866</guid><author>tanqth</author><pubDate>Sat, 30 Apr 2022 16:53:28 +0800</pubDate><description><![CDATA[Delphi中使用UniGui 中UniChart控件完成图表制作。]]></description><category></category></item><item><title><![CDATA[JS解析JSON并生成下拉框]]></title><link>https://blog.youkuaiyun.com/tanqth/article/details/123887099</link><guid>https://blog.youkuaiyun.com/tanqth/article/details/123887099</guid><author>tanqth</author><pubDate>Thu, 31 Mar 2022 23:59:51 +0800</pubDate><description><![CDATA[Gobj.options.length=0;   
   for(var i in vJsonObj){//遍历packJson 数组时，i为索引
     Gobj.add( new Option( vJsonObj[i].groupName , vJsonObj[i].groupID ));
   }  
...]]></description><category></category></item><item><title><![CDATA[简单说说Delphi 输入对话框 InputQuery]]></title><link>https://blog.youkuaiyun.com/tanqth/article/details/122977505</link><guid>https://blog.youkuaiyun.com/tanqth/article/details/122977505</guid><author>tanqth</author><pubDate>Thu, 17 Feb 2022 10:38:16 +0800</pubDate><description><![CDATA[在 FMX.Dialogs里，输入对话框有InputBox或InputQuery，InputBox里其实也是调用InputQuery实现的功能。



InputBox调用InputQuery的处理：

实现一个简单的多内容的输入对话框：

var
 IniFile: TIniFile;
 varstr: array of string;

 

 varstr[0] := '192.168.2.101';
  varstr[1] := '211';
  /...]]></description><category></category></item><item><title><![CDATA[Delphi 安卓浏览器自定义UserAgent]]></title><link>https://blog.youkuaiyun.com/tanqth/article/details/122741121</link><guid>https://blog.youkuaiyun.com/tanqth/article/details/122741121</guid><author>tanqth</author><pubDate>Sat, 29 Jan 2022 11:59:21 +0800</pubDate><description><![CDATA[Delphi以前做WebBrowser时（VCL方式）自定义浏览器UserAgent相对来说还是很方便的。在现在的跨平台开发中（FMX）想要自定义UserAgent就不行了，对应的WebBrowser控件已不支持修改默认UserAgent。

然而，我们很多时候还是需要使用到自定义的UserAgent，这里就介绍一下怎么实现安卓下的WebBrowser修改UserAgent。

方法一、简单直接，虽然WebBrowser控件没有直接给出修改或设置UserAgent的方法，但并不是说安卓下的浏览器不能修改Us]]></description><category></category></item><item><title><![CDATA[特殊时期 一行代码网站变灰]]></title><link>https://blog.youkuaiyun.com/tanqth/article/details/121914545</link><guid>https://blog.youkuaiyun.com/tanqth/article/details/121914545</guid><author>tanqth</author><pubDate>Mon, 13 Dec 2021 21:11:30 +0800</pubDate><description><![CDATA[一行代码让网站变灰]]></description><category></category></item></channel></rss>