- 博客(268)
- 资源 (21)
- 收藏
- 关注

原创 关于本博客:Delphi 的点滴经验
用 Delphi 很多年,平时有些经验,随便写写。之前没有发在 csdn。现在发现 csdn 的博客,比较适合贴代码,版面比较干净,方便阅读。经常网上搜关于 Delphi 的技术问题时,搜到的文章,出现得最多的是 csdn 和另外一家博客。所以,干脆开通 csdn 博客,专发关于 Delphi 编程的问题。各位同好,如果有什么问题,也可以在这里交流。最近几年,D
2017-04-06 11:19:10
1398
原创 HP 笔记本重新安装 Windows 11 无法启动
你已经看过了网上各种关于如何在 HP 笔记本电脑上安装 Windows 11 的文章。你遇到的问题肯定不是网上那些文章讲的那么简单的问题。你遇到的一定不是你不懂如何安装 Windows,不懂如何对硬盘分区等等小白问题。
2025-01-22 21:10:01
338
原创 Windows 11 升级更新后 WiFi 无法上网
查看桌面右下角的 WiFi 连接,发现是连上了。进入 cmd.exe,打命令 ipconfig,从命令执行结果来看,WiFi 网卡没有任何的 IP 地址之类的东西,和 WiFi 没有连接一模一样。
2025-01-21 00:38:20
899
原创 Hyper-V 之四:虚拟交换机
第一次安装 Hyper-V 虚拟机,网络适配器 那个选项,我就随便选了 Default Switch 这个。虚拟机启动后,在虚拟机里面启动命令行窗口,使用命令 ping 去测试,发现能够 ping 通我的物理机所在的局域网的网关。但是,发现虚拟机的 IP 地址是:172.18.199.121,也不知道这个 IP 地址是哪里来的,和我的局域网 IP 地址毫无关系。
2025-01-13 01:23:53
1151
原创 Hyper-V 之三:第一代和第二代的区别
书接上回,我把我的一个 VirtualBox 虚拟机硬盘,里面安装的是 Windows 10,转换为 Hyper-V 的 VHDX 文件,挂载到 Hyper-V 虚拟机上面,选择的是第二代,成功运行起来了。我有好几个 VirtualBox 的 Windows 虚拟机,因为我测试不同的程序,使用不同的虚拟机,这样避免因为系统的问题导致程序测试出问题。
2025-01-13 01:02:24
805
原创 Hyper-V 之二:如何使用 VirtualBox 的虚拟硬盘
之前我一直使用 VirtualBox 的嘛。最近发现,VirtualBox 里面的虚拟 Windows 系统越来越慢,打字的时候,拼音的全拼都打完了,字母才一个一个蹦出来,还要等一下,中文才出来。实在是忍不了。于是想到使用 Hyper-V 会不会快一点?原本想换 VmWare 的,这个玩意现在个人用户也正版免费了。但是,它的官网下载,需要登录注册一大堆事。所以,我就试试 Windows 自带的 Hyper-V 了。
2025-01-13 00:47:10
971
原创 Hyper-V 之一:Windows Home 版上没有 Hyper-V
买的笔记本电脑,原装的 Windows 是 Home 版 --- 家庭版。没有 Hyper-V。因此,之前使用虚拟机,一直是用 VirtualBox,现在想玩玩 Hyper-V,怎么办?
2025-01-13 00:23:13
346
原创 OpenVPN 被 Windows 升级破坏
2024-12-26 Windows 提示有更新需要安装。安装完成后,作为 OpenVPN 桥接服务器的电脑无法被 OpenVPN 客户端接入。
2024-12-29 03:37:15
702
原创 开源 SOAP over UDP
如果我想要使用其它的通讯协议来跑这个 RPC,比如 TCP 或者 UDP,来使用 Delphi 提供的 WebService 里面的 SOAP,Delphi 没有现成的支持。然后就可以在客户端调用服务器端的接口函数的时候,我拦截到客户端发出去的数据,然后我就可以通过 UDP 或者通过 TCP 发送给服务器端。使用这个框架,如果是两个 EXE 程序之间简单的互相调用,直接使用 UDP 来做,程序会非常简单。Delphi 的 WebService 框架非常好,但它是基于 http 的。于是我给它魔改了一下。
2024-12-27 20:21:42
679
原创 Delphi 内置的用于 SOAP WebService 的数据类型定义
理论上,在 SOAP WebService 的接口里面使用的数据类型,必须是注册过的。这些数据类型定义不是简单的定义一下,而是要注册到系统里面,注册代码也在这个单元里面。数据定义在这个单元:unit Soap.InvokeRegistry;当然,简单类型,比如 Integer 可以直接使用。
2024-11-28 11:07:17
314
原创 Delphi VCL 的 TScrollBox 响应鼠标滚轮的问题
盒子论坛有人说 ScrollBox 不响应鼠标滚轮。StackOverFlow里面,有人写了个很长的解释,也有很长的代码。看起来都头大。有没有简单一些的解决方案?
2024-11-19 23:19:47
907
1
原创 Delphi 做的 CMS 的源代码
当然,那个代码,可以让不熟悉 Delphi 的 WebBroker 框架的人,看看用 Delphi 的 WebBroker 框架做 WEB 服务器程序是怎么做的。里面的图片是通过上传图片文件后,回调 CKEditor 的 JS 把上传的图片的 URL 贴进去的方式。至于最近几天做的这个,因为采用了新的 WebStencils 和 HTMX,也采用了新的 CSS 库和 Quill Editor,总的来说 Delphi 的代码量少了很多。而我这个代码是实验性的代码,写得乱七八糟,实在不好意思出来见人。
2024-10-05 20:02:40
407
原创 用 Delphi 做了一个简单的 CMS
本来做这个玩意,就是想评估一下 Delphi 最新推出的 WebStencils 控件,实际做点东西才能知道它好不好用。东西并不复杂,页面也没有几个。顺便也评估一下 HTMX 是否好用。选择各种框架,工具,最重要的一点是,要能够达到代码封装,代码重用。不要在很多地方复制粘贴相同的代码。
2024-10-05 01:50:46
1261
原创 如何设置 IIS 用以运行Delphi 编译的 CGI 程序
结合一些好的前端库,可以很简单地作出非常漂亮功能强大的基于 WEB 页面的程序。具体做法这里就不细说了。在 Delphi 里面新建一个 Web Server 的工程,选择 IIS CGI 以后,这个工程编译出来的就是一个 Windows 的 Exe 可执行文件,它就是可以在 IIS 底下被 IIS 调用的 CGI 程序。额外说一句:Delphi 还可以编译出。
2024-10-04 01:28:49
788
原创 使用 HTMX 从服务器获取文本更新 Quill Editor 的内容
这里的技术要点有 2 个:1. HTMX 从服务器读取到字符串以后,那个字符串在哪里?因为它封装得太好了,正常使用,它直接就用获取到的字符串把页面上的目标元素的 innerHTML 或者 outerHTML 给替换掉了。没机会拿到这个字符串。2. 它如何去调用一个 JavaScript 函数,通过这个函数去向 Quill Editor 写入文本内容。在上述代码中,HTMX 通过描述的方式调用了函数,向函数传递了一个 event 参数。这里的 event 参数是 HTMX 带来的。
2024-10-02 06:19:00
627
原创 Quill Editor 富文本编辑器的高度问题
1. 编辑框只有一行高;2. 编辑框高度足够,但显示不全,左侧有滚动条。向下拉滚动条,编辑框把工具栏向上顶出去,工具栏看不见了。网上搜出来一大堆各种说法,照猫画虎,有时候对,有时候不对。这些说法没一个把原因说清楚。
2024-09-29 22:57:45
576
原创 WEB 编程:富文本编辑器 Quill 配合 Pico.css 样式被影响的问题之还是 iframe
这个系列已经写了 3 篇了。这篇写如何使用 iframe 解决标题里面提到的问题。
2024-09-29 01:52:44
1304
原创 WEB 编程:富文本编辑器 Quill 配合 Pico.css 样式被影响的问题之Shadow DOM
前面我写过一篇文章讲这个事情。用的是 iframe 的方法。
2024-09-26 22:26:57
1009
1
原创 Delphi 12.2 新出的 WebStencil 组件和 Quill 编辑器配合的问题
符号后面不加斜杠,WebStencil 会把内容使用 TNetEncoding.HTML.Encode 来编码,就把文字格式需要的尖括号“<”和“ >” 给转义成了 < 和 > 使得页面上直接显示其转义符号而不是根据加括号显示出文字的格式来。而使用 @ 符号后面加个斜杠,则内容被 WebStencil 处理的时候不会去编码,相当于直出,问题就不存在了。
2024-09-26 01:50:01
1113
原创 Delphi WebBroker 处理 Cookie 的一个小问题
作为 Web 服务器端的程序,我们可以给一个 Cookie。浏览器下次过来访问的时候,我们可以把之前给的 Cookie 读回来。简单说,一个 Cookie 就是一个字符串。比如你可以把这个用户登录的用户名记录在里面。因为,WEB 服务器是无状态的,同一个浏览器两次访问服务器,服务器并不知道上一次的用户状态,比如用户的名字。
2024-09-24 03:01:31
577
原创 Delphi 12.2 新增的 WebStencils 尝鲜
这个有本文上述的 github 链接里面的例子代码。1. 使用一个框架页面,在需要装正式内容的地方,写上:@RenderBody;2. 页面内容文件比如 index.html,不需要有页面框架代码诸如 <html> 等等,仅仅只需要提供页面显示内容。然后在文件开头把要使用的框架文件的名字写上去:@LayoutPage 框架.html;3. 页面的其它地方的代码,需要引入其它外部文件的内容,使用 @Import 文件名.html 的方式。问题来了:我的页面组装正确了,也正确显示了。
2024-09-23 01:50:59
3097
原创 WEB 编程:富文本编辑器 Quill 配合 Pico.css 样式被影响的问题
前端页面的美化,我采用 Pico.css,可以非常简单就把页面做得很漂亮。富文本编辑器选用 Quill 也是非常简单就有了一个功能强大的富文本编辑器,尤其是完全不用考虑图文混排时的图片上传问题。
2024-09-21 02:57:59
731
原创 WEB 编程:使用富文本编辑器 Quill 配合 WebBroker 后端
评估了好几个,最后选择这个开源的。把前端代码,存储为一个单独的文本文件,方便随便哪个页面需要的时候可以使用。相当于封装为一个独立的对象,方便代码重用。
2024-09-18 23:13:30
1306
原创 Delphi 的 RSA 库 LockBox
Delphi 的 RSA 算法库,LockBox 的用法。RSA 加密是非对称加密。首先要产生一对密钥:一个叫公钥,公开给别人的;一个叫私钥,自己留着的。
2024-09-13 22:28:37
1136
原创 安卓手机使用 Google Play 谷歌应用商店安装APP一直转圈等待
2. 如果转圈等待一直无法完成,在转圈等待中,不要关闭 Google Play 直接关掉科学上网。这时候,神奇的事情出现了:它安装成功了。如果你的手机情况不同,不保证一定成功。然后,点安装,然后,就看到一直转圈,显示等待中。首先,你要科学上网,才能在 Google play 里面搜索 APP。我遇到的情况的解决方法是:让它转圈,一直转。如果去国外旅游,可能需要安装一些当地的 APP 比如打车软件。1. 科学上网,搜索 APP,安装 APP,转圈等待中;很多原因,很多可能,因此不同的原因有不同的解决方法。
2024-08-26 18:47:37
6953
2
原创 把别人发来的 JSON 解析为 Delphi 的对象
这个 JSON 是其它语言生成的,在 Delphi 程序里面,如果能把它变成对象,后继的代码就会更简单。
2024-07-21 03:16:42
670
原创 使用Delphi做蓝牙BLE开发的一个问题
Delphi 的 BLE 开发,拖一个 TBlueToothLe 到界面上,使用这个控件,就可以进行 BLE 的开发,比如去连接一个蓝牙手环。Delphi 自带的 Demo 里面,有一个 BLEScanner 程序,可以作为开发的起点。
2024-07-09 02:01:17
1239
原创 Windows Server 远程桌面显示登录界面而不是直接登录进入的问题
通常情况下是在远程桌面客户端里面输入用户名和密码,点【连接】按钮,就直接登录进入远程桌面了。但是,有时候,不能直接进入,而是远程服务器的登录界面出现了,然后我们要做登录界面里面输入用户名和密码。如何把这种状态,改为直接在远程桌面客户端里面输入用户名和密码就能登录的状态?
2024-06-18 19:05:54
3815
2
原创 基于 Delphi 的前后端分离:之五,使用 HTMX 让页面元素组件化之面向对象的Delphi代码封装
用 Delphi 的类封装前端图表组件
2024-06-15 17:01:32
1231
原创 基于 Delphi 的前后端分离:之四,使用 HTMX 让页面元素组件化
对于 HTML5 的页面,使用 HTMX 就可以很容易把各路开源的页面代码,组件化,实现模块化开发,简化代码,方便维护。
2024-06-15 02:41:51
1380
原创 Windows OpenVPN的安装之服务器自动启动连接
1. 概念:OpenVPN 安装了一个服务叫做 OpenVPNService,可以在 Windows 系统的服务里面看到;这个服务需要的配置文件放在 config-auto 目录下;配置文件的名称可以是任意文件名,后缀是 .ovpn 就说明它是 OpenVPN 的配置文件。2. 如果上述两个条件(1. 服务自动运行;2. 配置文件在正确目录下),仍然不行,应该去看 log 目录底下的 log 文件,看看问题在哪里。
2024-06-14 00:37:08
3923
原创 基于 RTTI 的 TFrame 的创建和管理
1. 通过上述方式,可以简化大型应用程序的代码,减少出错机会。2. 其实用不着 RTTI,虽然我的代码里面使用了 RTTI。
2024-05-14 10:05:25
986
原创 一个基于 VCL 的模仿安卓 Toast 的提示消息控件
在别人已经实现的代码基础上,做一些简单的修改,来来回回也花了不少时间。中间还有一个版本有严重的 BUG。写好代码不容易,人都会犯错,人写的程序没有 BUG 才是奇怪。
2024-05-13 02:00:59
433
原创 Delphi 多线程的阻塞和线程之间的同步
1. TEvent 声明在:System.SyncObjs;2. 多个不同的线程可以有多个不同的 TEvent 的实例来进行各自的阻塞;3. TEvent.SetEvent 解除阻塞后,必须执行一次 TEvent.ResetEvent;否则就再也阻塞不住了;4. ResetEvent 由任何一个线程来执行都可以;5. 如果 TEvent 是超时导致的阻塞解除,不需要做 ResetEvent;
2024-03-28 00:50:34
588
原创 用 Delphi 做 FTP 服务器以及如何配置防火墙
使用 Delphi 的 TIdFTPServer 这个控件,做一个 FTP 服务器很简单。可以直接拿官方提供的 FTP Server 的那个 Demo 程序来修改。
2024-03-19 15:30:02
830
原创 Delphi v11 安卓权限申请
上述代码中,DoGotPermissions 方法,用于调用这个模块的地方,当用户在申请权限的界面上通过了权限申请后,要执行的代码,通过这个事件方法调用。同样,上面这个函数里面的 TArray<string> 更改为:TClassicStringDynArray;我把代码封装到一个单独的 DataModule 里面了。这样方便在不同的项目里重复使用。Delphi 10.4 的安卓权限申请代码,在 Delphi 11 下面编译无法通过。原因是里面有几个变量类型的定义有所不同。
2024-02-19 23:54:41
780
Delphi ACM Component,ACM 控件用于声音采集和播放,含全部源代码和使用例子
2023-03-24
Delphi FireMonkey TListView 做手机APP的主从列表的 Demo 源代码
2022-09-20
本人原创 Delphi 版本的 HTML 编辑器源代码
2022-03-30
发光按钮-基于Delphi FireMonkey的例子代码
2020-04-06
MVVM_LiveBinding.7z
2020-02-13
文本差异检查及显示的源码
2018-10-13
Delphi APP 使用 iOS 的 BackgroundFetch 的例子源代码
2017-10-10
Win7 远程桌面多用户补丁
2017-10-08
本人原创源代码:Delphi APP 内置 WebBroker 让界面显示HTML5
2017-09-30
本人原创:基于Delphi WebBroker 的 CMS源代码
2017-09-18
Delphi WebBroker 网页上传文件的 Demo 源码
2017-05-02
WebBroker StandAlone 模式当 Web Server 用的源代码 by pcplayer
2017-04-05
Delphi LiveBinding对象及对象序列化为JSON的例子
2016-11-24
Delphi 在 DBGrid 里面显示分组统计的源代码
2016-11-03
Indy10 WEB Server Demo代码
2014-07-15
HotLog 源代码
2013-06-18
网络连接状态查看工具
2013-06-18
Dspack for XE3
2013-06-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人