- 博客(99)
- 资源 (30)
- 收藏
- 关注
原创 Delphi 支持的平台和操作系统 (XE4~D12)
收集了不同RAD Studio版本可以支持的平台和操作系统,留着查询使用。不同的平台与操作系统选择合适的开发版本。
2023-12-18 19:48:30
1600
原创 FireDAC连接池的使用
首先是,FireDAC的连接池必须使用TFDManager,由TFDManager来对池进行管理,使用ConnectionDef管理数据连接参数,其中主要使用INI配置文件或AddConnectionDef增加配置的方式。以前一直习惯用ADO,后来用FireDAC时也没怎么使用连接池,前段时间对FireDAC的连接池做了一些简单的学习,当时的学习重点放在了连接的配置参数方面。
2023-01-31 23:49:07
973
4
原创 Delphi 开发过程中简单的版本管理与回退(2)
上篇文章介绍了delphi中对历史文件的简单对比及回退内容,功能相对单一,delphi还给我们提供了一个更加强大的文件对比与修改工具,这里就给大家介绍这个功能更加强大的管理与回退。
2022-10-30 12:18:47
5409
原创 Delphi 开发过程中简单的版本管理与回退
很多时候,我们在做代码编写或者窗体设计的时候,如果需要回退某些修改,基本是使用Ctrl+Z做刚刚修改内容的回退处理。Delphi在XE版本后增加了一个历史文件管理功能。我们可以使用这个功能进行简单的版本比较与回退处理。
2022-09-28 17:06:37
6136
原创 Delphi 安卓11 中文语音合成(中文朗读)注意内容
很早之前,使用DELPHI做了一个安卓中文语音合成(中文朗读)的APP,前几天,有朋友说到,这个APP在安卓11下不能完成中文朗读,在低版本的安卓手机中一切正常。怀疑这个情况与安卓版本有关,查了一些资料,根据google官方开发文档说明,在android11系统下对于使用到TTS功能的应用,需要修改应用中的。其中,红框部分就是我们这次增加上的内容。完成这些后,回到项目,重新编译。也就是说,如果需要在安卓11下使用TTS(语音功能),就需要在。
2022-08-25 16:44:46
7283
1
原创 delphi 通过注册表 取桌面目录路径
通过系统注册表,我们可以取到当前用户对应的系统目录路径。直接调用这个函数,参数为Desktop,就可以取到当前用户桌面目录的路径。
2022-07-30 22:52:49
6890
原创 Delphi Modbus RTU CRC16校验码的生成方式
在很多的串口通讯中,会使用到CRC16校验。在TIdHashCRC16中,给我们提供了一种CRC校验码的生成方式:TIdHashCRC16继承于TIdHash16这个类,其中覆盖实现了两个方法:然而,当我们直接使用TIdHashCRC16类生成校验码的时候,经常是与设备的校验不匹配的,其原因在于VRunningHash初始化时为0,而我们需要的初始化值应该为0xFFFF。所以,我们需要对这个类进行改造,其中最简单的办法就是找到IdHashCRC.pas文件,把VRunningHash:=0;这个修改为
2022-06-28 20:03:01
7832
1
原创 delphi取13位的Unix时间戳
以前取UNIX的时间戳基本都是引用 DateUtils后,使用的DateTimeToUnix,但是这个函数取出来的时间戳只有10位的,没有到毫秒,找了一会,不记得应该怎么取毫秒的时间戳了。先看了一下系统DateTimeToUnix的代码:function DateTimeToUnix(const AValue: TDateTime; AInputIsUTC: Boolean): Int64;var LDate: TDateTime; begin if AInputIsUTC then
2022-05-31 23:46:30
7528
原创 JS解析JSON并生成下拉框
Gobj.options.length=0; for(var i in vJsonObj){//遍历packJson 数组时,i为索引 Gobj.add( new Option( vJsonObj[i].groupName , vJsonObj[i].groupID )); } ...
2022-03-31 23:59:51
6811
2
原创 简单说说Delphi 输入对话框 InputQuery
在 FMX.Dialogs里,输入对话框有InputBox或InputQuery,InputBox里其实也是调用InputQuery实现的功能。InputBox调用InputQuery的处理:实现一个简单的多内容的输入对话框:var IniFile: TIniFile; varstr: array of string; varstr[0] := '192.168.2.101'; varstr[1] := '211'; /...
2022-02-17 10:38:16
8465
原创 Delphi 安卓浏览器自定义UserAgent
Delphi以前做WebBrowser时(VCL方式)自定义浏览器UserAgent相对来说还是很方便的。在现在的跨平台开发中(FMX)想要自定义UserAgent就不行了,对应的WebBrowser控件已不支持修改默认UserAgent。然而,我们很多时候还是需要使用到自定义的UserAgent,这里就介绍一下怎么实现安卓下的WebBrowser修改UserAgent。方法一、简单直接,虽然WebBrowser控件没有直接给出修改或设置UserAgent的方法,但并不是说安卓下的浏览器不能修改Us
2022-01-29 11:59:21
11492
原创 delphi开发安卓中更改图标与APP名称
偶尔有朋友问到,使用Delphi开发安卓系统时,APP的图标与显示名称应该怎样更改。这里就做一个说明。1、首先需要准备好自己的图标文件,可先看看系统默认的图标文件(通常在C:\Program Files (x86)\Embarcadero\Studio\20.0\bin\Artwork\Android,这里以10.3版本为例,其他版本位置差不多的哈),然后根据系统对应的图片大小准备相同数量的图标文件。2、使用Options菜单项:3、进入后,选择:Icons,右边可以选择需要设置的目标对像.
2021-11-29 13:54:56
10866
原创 delphi开发安卓蓝牙的问题
这是一个困扰了我一天的问题,出现的情况是:之前在D10.3下做蓝牙应用的程序,在低版本的安卓下是可以正常使用的。但D10.3不能支持高版本的安卓系统,所以就更换了D11进行测试。在使用D11对原D10.3的代码进行调整后,编译的APP可以正常在高低版本的安卓下安装使用,可出现一个问题是,安卓11下不能正确搜索到蓝牙设备(低版本的安卓下一切正常)。最后发现是动态授权的问题,原因如下:早期的安卓版本使用蓝牙时,不需要动态授权,后来需要动态授权时必须增加对“定位”的授权才能使用蓝牙,所以我在10.3的
2021-11-20 11:25:54
9812
原创 H5 中video 自己定义显示播放(总)时间
因为项目需要,在WEB中使用video播放音频内容,要求不显示系统默认的播放界面,所以需要自己实现对音频的播放。简单记录一下使用JS对播放内容的时间显示。因为通过video.currentTime取到的时间是以秒为单位的,而我们习惯是时/分/秒来表示,所以需要对时间进行一次转换后再显示。具体JS代码如下: video.ontimeupdate = function () { var percent = video.currentTime / video.duratio..
2021-10-31 21:01:31
10369
原创 Delphi 11.0 Alexandria 来了
这文章晚了一天,这段时间事较多。看了一下Delphi 11.0 Alexandria的改进,还是蛮多的。也正因为太多,暂时就不例出来了,有兴趣的朋友可以自己浏览一下:点击==>官网对11.0的更新说明https://docwiki.embarcadero.com/RADStudio/Alexandria/en/What%27s_New 重点概括:更新内容涉及到IDE、VCL控件及FMX控件(这两方面修改较多),还有其他一些安全与稳定性方面的内容。下载地址:这篇文章收集了较多版本的下载地址.
2021-09-11 13:04:13
9249
原创 微信公众号开发的坑
今天发现的一个坑,大致情况是这样的。微信开发,都需要获取Access token,而这个Access token根据腾讯的文档,说的是7200秒过期(也就是2小时的时间)。上图是文档说明。文档链接:https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_access_token.html这个是文档结出的样例,文档说的“目前access_token的有效期通过返回的expire_in来传达,目前是720.
2021-09-08 22:04:20
8353
原创 Delphi 微信支付接口AEAD_AES_256_GCM解密
做微信的支付接口,现在必须要使用到AEAD_AES_256_GCM加解密。在微信的文档中提供了其他开发语言的示例代码,但因为某些大家都知道的原因,没有delphi的示例。而在网上去找一圈,你可能会更加的蒙圈,一是几乎只有其他语言的文章,二是delphi有提到过的要么太复杂要么没法使用。今天这里就来详细讲一讲Delphi(我使用的版本的D10.3)处理微信AEAD_AES_256_GCM解密,我们实际需要的代码并不多,很多主要的代码delphi已给我们准备好了。下面就是最终代码:function
2021-09-01 17:24:06
9323
原创 IIS8 隐藏server版本信息
IIS服务器端返回信息中包含有软件版本等详细信息,攻击者利用这些信息可以实现更有目的性的攻击。因此隐藏server版本信息,在一定程度上能够提高服务器的安全性。通常IIS服务会返回如下信息的。如下图:第一步:隐藏Server信息打开IIS管理器,找到“URL重写”并打开。点击右边的“添加规则”。在这个选择框中选择添加出站规则,空白规则:点击“确定”后,会出现规则设置窗口:规则名就自己确定一个了,其他规则如下图:设置好后保存并启用规则。现在刷新W...
2021-08-24 12:38:02
14366
3
原创 UniGui中使用IconCls
在使用UniGui的时候,我时候我们需要使用系统自己的图标,通常会如下图一样的使用方式:选择ICON对齐方式及系统定义好的ICON对应值。但实际上UniGui中可以使用的图标远远大于他已定义的这十几个(或者应该说是EXJS原本就多,UniGui只定义了很少一部分提供使用)。如下图,这些图标实际都是可以直接使用的,我花了点时间把对应图标与图标名例了出来,以后使用就方便多了。使用方式:不用直接选择系统已定义的,而是直接输入某个图标名就OK了,例如下边这样:直接输入:photos...
2021-07-25 15:51:32
9588
原创 MSSQL插入数据时取自增ID的方法
MSSQL里,通常我们的每个表都会设置一个自增ID,有时候我们需要马上知道刚刚插入的数据的ID值可以使用下面这个方法,早期的MSSQL不行的哈。INSERT INTO表名 (字段名) output inserted.idVALUES (插入的数据)其实就是在VALUES的前面加上“output inserted.id”,这里需要注意的是:1、必须在VALUES前面使用;2、inserted是固定的,后面那个id就是你表里的自增ID的那个字段;这样他就会在执行完成插入后返回一个当...
2021-07-13 20:05:21
11472
原创 UniGui做WEB开发时修改 UnimDatePicker控件显示
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结前言使用UniGui做WEB开发的时候,需要使用到日期选择控件“UnimDatePicker”最开始使用的时候总是显示的英文,后来配置好中文本地包locale-zh_CN.js解决了显示中文的问题。可是显示的选择非常不友好。如下图:重点是图片中红框部分。查找问题前面的“五”是期五,在locale-zh_
2021-07-02 22:14:50
9848
1
原创 UniGui UniSession返回的URL
原本想在系统里组合一下URL地址,因为不知道服务的完整URL,所以试了一下UniSession各项返回的数据。UniSession.URL: http://127.0.0.1:8077/mUniSession.URLPath: /m/UniSession.UrlReferer: http://127.0.0.1:8077/mUniSession.BaseURL: http://127.0.0.1:8077/mUniSession.Host: 127.0.0.1:8077UniSessi
2021-06-06 19:39:44
10115
原创 uniGUI获取设备信息
有时候我们需要知道客户是使用什么设备登录的系统,在uniGUI中可以通过UniApplication.UniPlatform来获取。简单记录一下,uniGUI的资料不太多,需要深入了解的,请多看DEMO。详细使用请参考Demo:目录:uniGUI\Demos\Touch\Detect Platform以下是主要代码type TUniPlatforms = set of TUniPlatform;//定义一个变量uPlat: TUniPlatforms;uPlat := UniAppli
2021-05-26 19:47:22
10249
原创 delphi webserver soap头(soap header)信息传送
在做一个webserver 接口的时候,需要在soap header传送登录后的SessionId,通常delphi生成接口后传送的XML里是不会有包括header数据信息的,这就只能是写代码增加上去。那么,首先我们需要先自行定义一个类:const IS_TEXT = $0020; {一个常量,也很重要} //这个定义了 Header信息基础类 TSessionIdHeader = class(TSOAPHeader) private FValue: string;
2021-04-30 09:45:31
10155
1
原创 uniGUI中TUnimRadio不能初始数据的解决方法
问题现象手机页面(TUnimForm)上增加多个TUnimRadio单选项(非主页面上),其中一个TUnimRadio为默认选中(或在显示这个子页面时进行初始化显示某个TUnimRadio选中)。当第一次显示这个页面的时候,页面上的TUnimRadio不会出现有选中项。第一次显示完成之后,再次刷新选中项才会有效。跟踪运行情况发现,对应的子页面在创建时,WEB端并不会生成出显示内容,只会在show完成时,才会通过HandleEvent将需要的控件信息及数据发送到前面,再通过前端自动生成控件完成显示,例如
2021-03-23 20:21:07
9615
原创 跨平台调用系统WEB显示网页方法(安卓、IOS、WIN共用)
跨平台调用系统WEB显示网页方法(安卓、IOS、WIN共用),同一个方法,可直接编译为安卓、IOS、WIN程序,简化了打开URL的方式。procedure Open_Url(UrlStr: string);// 调用系统WEB显示网页{$IF DEFINED(ANDROID)}var intent: JIntent;begin intent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_VIEW, StrToJURI(UrlStr
2021-03-23 19:02:38
9991
原创 安卓开发中startActivityForResult的注意
本篇说的是使用Delphi开发安卓程序的时候,在使用startActivityForResult跳转到一个外部程序,并需要从外部程序获取传回数据的时候。通常在使用startActivityForResult跳转到外部程序的时候,我们需要定义一个整数型返回代码参数( requestCode),用以在处理数据返回时对返回数据类型的识别,原则上这个参数是自定义的。然而,今天在处理一个程序时发现一个异常: Failure delivering result ResultInfo{who=null, reques
2021-03-05 17:06:36
9811
原创 Delphi RAD Studio 10.4.2 Sydney的新增与改进介绍(下)
接上一篇文章:《Delphi RAD Studio 10.4.2 Sydney的新增与改进介绍(上)》新的开发人员生产效率和用户体验功能可加快入门和应用开发速度RAD Studio 10.4.2包括新工具来帮助新手和经验丰富的应用程序开发人员快速构建出色的应用程序;增强的迁移工具可用于快速升级产品版本;以及一个新的静默安装程序来自动安装RAD Studio。为了简化新开发人员的入门过程,突出新的GetIt包和随着时间的推移可以安装到RAD Studio中的其他功能,我们在IDE的“欢迎使用”页面中添加
2021-02-26 11:27:23
13484
原创 Delphi RAD Studio 10.4.2 Sydney的新增与改进介绍(上)
2021年2月24日发布RAD Studio 10.4.2 Sydney的更新版本。10.4.2建立在10.4和10.4.1的功能集的基础上,增强了整个产品中的现有功能,并添加了新功能。RAD Studio 10.4.2高度关注对质量改进,包括如下所述以及其他功能。RAD Studio 10.4.2包括10.4.1后的所有修补程序修复。安装10.4.2如果您已经安装了10.4 Sydney或10.4 Sydney-Release 1,则安装10.4 Sydney-Release 2要求完全卸载并重新安
2021-02-25 22:22:01
14597
原创 uniGUI发布时运行时包的处理
运行时包说明根据uniGUI的开发文档说明,uniGUI发布时是需要安装uniGUI运行时包的。uniGUI Runtime Package是将uniGUI运行时文件分发到托管uniGUI Web应用程序的服务器的简便方法。可从FMSoft客户门户网站下载运行时软件包。该软件包不适用于uniGUI Trial Edition。安装运行时软件包后,您的Web应用程序将能够找到Ext JS和Sencha Touch所需的文件来运行您的应用程序。它还包括运行时所需的其他JavaScript库文件。必须确保安
2021-01-03 10:45:48
11946
原创 关于Web页面中的meta
META标签是HTML语言HEAD区的一个辅助性标签,它位于HTML文档头部的< HEAD>标记和< TITLE>标记之间,它提供用户不可见的信息。虽然不可见,却也非常有用。标签格式如下:< meta name=“keywords” content=“XXXX”/>对应name说明: 1、Keywords (关键字) 说明:为搜索引擎提供的关键字列表 用法:< Meta name=“Keywords” Content=“关键词1,关键词2,关键
2020-12-24 13:39:21
11843
原创 UniGui开发中ServerModule部分属性设置说明
简单记录一下通常需要设置的属性。1、在应用程序中使用基于COM技术的组件时,例如常见的ADO组件:TADOConnection,TADOQuery等,则需要将AutoCoInitizalize属性设置为True。启用此功能后,将在处理每个请求之前调用Windows API函数CoInitializeEx()。如预期的那样,每次对CoInitializeEx()的调用都将与对CoUninitialize()的调用配对。2、使用CustomMeta可增加自定义元标记到Web应用程序中。但可惜的是,只能针对整
2020-12-24 13:32:35
13089
原创 delphi 简单代码实现安卓手机震动
Android震动在游戏开发中应用广泛,这一功能的实现能给用户带来很好的使用体验。在这里就为大家介绍一下使用Delphi开发时其实现的具体方法。实现手机震动其实很简单,手机震动使用是Vibrator类,然后震动也是需要权限,看截图:需要引用的单元文件:uses Androidapi.JNI.Os, Androidapi.Helpers, Androidapi.JNI.JavaTypes, Androidapi.JNI.GraphicsContentViewText;实现的功能代码
2020-11-29 18:38:02
12761
原创 检测系统由休眠或睡眠恢复
有时候我们经常会使用到Win系统的休眠或睡眠,从而让系统再次启动时能快速恢复之前的使用状态。而我们自己做程序时,有时候会因为休眠或睡眠导致程序的暂停运行或其他因需要处理的逻辑。为此,我们需要让程序知道已由休眠或睡眠唤醒并启动完成。这里需要用到Win系统的电源管理消息:WM_POWERBROADCAST 消息。WM_POWERBROADCAST 消息不区分不同的低功耗状态 。 应用程序可以决定只系统正在进入或已经恢复从低功耗状态; 它无法确定具体的电源状态。系统在 Windows 系统事件日志中记录有关
2020-10-29 21:00:48
14681
3
原创 连接 MSSQL [DBNETLIB][ConnectionOpen(SECDoClientHandshake()).]错误
通常检查步奏应该是先检查网络连接,其次是服务端口是否可以正确连接,然后是客户端配置。如果数据服务之前可正常使用的情况下,多数是网络连接的问题。检查网络连接使用ping 检查服务器网络这个主要是检查客户端与远程MSSQL服务器的物理连接是否正确。如果不行,请检查网络,查看配置,例如IP是否正确、路由是否正确、防火墙设置等等。检查是否可连接服务器端口使用 telnet 命令可完成检查 如:telnet 192.168.2.103 1433 通常端口值是1433,因为1433是MSSQL Tcp
2020-10-24 22:57:33
16382
原创 Delphi 开发安卓时判断进入非活动
Java开发安卓时,会使用onResume及onPause处理APP的执行状态,而在使用delphi做安卓开发时,在主窗体的各事件中不能处理这对应的状态切换事件(至少目前我没找到)。有时候,我们需要在APP暂时处于非活动状态及恢复激活时完成一些工作,为此,需要增加一个事件的响应处理。引用 FMX.Platform增加一个事件处理过程:function AppEvent(AAppEvent: TApplicationEvent; AContext: TObject): Boolean;其中的TAp
2020-10-18 12:35:52
12991
原创 TNetHTTPClient Https忽略证书验证
简单记录,有时候会需要用到,记性不好。有时候做接口或其他需要用到HTTPS的访问,通常情况下HTTPS服务所配置的证书是正确可使用的,但有时候也会遇到证书有问题的情况。所以我们有时候需要在使用HTTPS的时候忽略掉证书验证的问题。TNetHTTPClient有一个事件:onValidateServerCertificate这个事件可以记我们处理证书验证,要忽略证书的正确性,只需要我们在事件里填写**Accepted:=True;**即可,系统会永远认为证书是正确的。当然你也可以在这里写其他处理代码去
2020-10-12 17:14:43
13994
4
海康威视最新安卓sdk_6.1.6.3 build20200925
2021-02-03
很多年前D7下自己做的控件DbTree
2020-09-04
Delphi原生安卓中文语音合成
2020-04-28
最方便快捷的安卓状态栏沉浸的实现方式
2020-04-23
Delphi安卓APP获取手机信息
2020-03-10
Delphi开发安卓APP中使用原生Toast
2020-03-06
Delphi D10.X 使用并行编程库使用演示
2020-02-28
LayoutsPro控件 避免输入焦点被虚拟键盘遮挡
2020-01-20
Delphi 10.3 安卓自动升级 适配6.0、7.0、8.0、9.0(仅测试程序)
2019-08-25
Delphi跨平台串口通讯控件_SuperCom_测试程序
2018-05-14
安卓虚拟机Root工具
2018-05-14
Delphi Android 广播事件处理
2017-07-06
Delphi移动应用中IOS与Android本地通知案例(含源码)
2017-06-26
使用Delphi控件完成界面基本布局 (一)
2017-06-14
delphi DataSnap连接超时设置无效补丁
2017-03-29
Delphi 10 Seattle小票打印控件 增强版TQ_Print_V2.0手册
2017-02-27
Delphi 10 Seattle小票打印控件 增强版TQ_Print_V2.0
2017-02-27
RAD Studio D10发布IOS TestFlight不支持外部测试的解决方法
2016-10-29
【源码】10分钟10行代码开发APP(delphi 应用案例)
2016-09-14
Delphi 10 Seattle小票打印控件
2016-08-31
Delphi XE8移动应用开发中Android开发环境设置
2016-08-12
Delphi XE8移动应用开发中Android权限设置
2016-08-09
Delphi中IDE集成CVS--TortoiseCVS_v01
2007-09-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人