自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(235)
  • 资源 (21)
  • 收藏
  • 关注

原创 关于本博客:Delphi 的点滴经验

用 Delphi 很多年,平时有些经验,随便写写。之前没有发在 csdn。现在发现 csdn 的博客,比较适合贴代码,版面比较干净,方便阅读。经常网上搜关于 Delphi 的技术问题时,搜到的文章,出现得最多的是 csdn 和另外一家博客。所以,干脆开通 csdn 博客,专发关于 Delphi 编程的问题。各位同好,如果有什么问题,也可以在这里交流。最近几年,D

2017-04-06 11:19:10 1269

原创 Delphi 多线程的阻塞和线程之间的同步

1. TEvent 声明在:System.SyncObjs;2. 多个不同的线程可以有多个不同的 TEvent 的实例来进行各自的阻塞;3. TEvent.SetEvent 解除阻塞后,必须执行一次 TEvent.ResetEvent;否则就再也阻塞不住了;4. ResetEvent 由任何一个线程来执行都可以;5. 如果 TEvent 是超时导致的阻塞解除,不需要做 ResetEvent;

2024-03-28 00:50:34 291

原创 用 Delphi 做 FTP 服务器以及如何配置防火墙

使用 Delphi 的 TIdFTPServer 这个控件,做一个 FTP 服务器很简单。可以直接拿官方提供的 FTP Server 的那个 Demo 程序来修改。

2024-03-19 15:30:02 423

原创 DBGridEh 的排序

概念。

2024-03-01 21:43:27 839

原创 Delphi 11 安卓的蓝牙权限申请

上一篇博客里面的代码,演示如何申请安卓的权限。

2024-02-23 02:13:47 513 1

原创 Delphi v11 安卓权限申请

上述代码中,DoGotPermissions 方法,用于调用这个模块的地方,当用户在申请权限的界面上通过了权限申请后,要执行的代码,通过这个事件方法调用。同样,上面这个函数里面的 TArray<string> 更改为:TClassicStringDynArray;我把代码封装到一个单独的 DataModule 里面了。这样方便在不同的项目里重复使用。Delphi 10.4 的安卓权限申请代码,在 Delphi 11 下面编译无法通过。原因是里面有几个变量类型的定义有所不同。

2024-02-19 23:54:41 546

原创 Python4Delphi: Delphi 程序使用 Python 抓取网页

在 Delphi 里面通过使用 Python4Delphi 控件,可以在 Delphi 程序里面调用 Python 的代码去执行 HTTP 访问。

2024-02-15 22:51:05 412

原创 Python4Delphi: 使用Delphi代码调用Python代码里面的类

1. 首先调用 PythonEngine1.ExecStrings 加载运行有这个 Python 类的 Python 代码;2. 使用 MainModule.类名() 的方式,直接就创建了 Python 类。在 Delphi 里面,Python 类创建的对象保存到一个 Variant 变量里面。3. 有了对象,就可以用【对象.方法()】的方式调用这个对象的方法了。这里需要注意,方法有没有参数都要加上括号。

2024-02-08 01:03:34 506

原创 Delphi 程序直接调用 Python 的函数

在这篇文章里面,我提到,一个 Python 的函数,我用 Delphi 无法直接调用它,所以我对它做了一个 Python 的包装。原因是,那是我第一次学习使用 Python4Delphi 这个控件。那时候要执行 Python 代码,我只会使用 PythonEngine1.ExecStrings(Python代码) 这样的方式。这样做,就是在 Delphi 的程序里面,加载了 Python 的环境,并在这个环境里面去执行了代码里面的可执行的部分。

2024-02-06 23:59:07 906 3

原创 用 Delphi 程序调用 Python 代码画曲线图 -- 数据来自 Delphi 程序

接本博客上一篇文章,使用 Python 的 matplotlib 库画曲线。上次是为了实现调用该库,数据是直接写死在 Python 代码里面的。既然是 Delphi 调用 Python 的库,数据应该是 Delphi 的程序传递给 Python 的代码,然后 Python 的代码利用 Python 库把图画出来。比如,数据可能来自数据库。做数据库编程,Delphi 非常擅长啊。上述 Python 代码,是把很多数字,给了一个数组类型的变量。

2024-02-06 01:21:22 360

原创 用 Delphi 程序调用 Python 代码画曲线图

因为同样的代码在 PyScripter 里面能够正常运行,所以我首先怀疑 PyScripter 运行的 Python 环境和我的 Delphi 的程序运行的 Python 环境不一致。把以上代码,放进 PyScripter 这个 Python 的开发工具 IDE 里面,点三角形小箭头图标(Run 按钮),或者按 F9 (Run 快捷键),代码运行起来,弹出一个窗口,里面是曲线。实际上,我搞了几个小时。因为,按照上面的步骤搞完,我点击 Button1,运行 Python 程序,出现异常错误。

2024-02-05 19:32:43 914

原创 Python4Delphi 之用 Delphi 写 Python 模块

在 Delphi 程序和 Python 程序的交互,可以用 Delphi 实现一个 Python 模块,用 Delphi 实现这个模块的函数,然后在 Python 里面的代码来调用。实现这个功能的简单架构:1. PythonModule1 用来代表一个可以给 Python 调用的模块。2. Delphi 实现的函数,通过的方式成为 Python 的模块的函数。3. 被 Delphi 的 PythonEngine1 执行的 Python 代码,可以import这个模块并执行里面的函数。

2024-02-05 00:12:24 1078

原创 Delphi 程序员初学 Python 笔记

一直想学 Python 但一直没真正去摸索。入门书倒是买了几本也大概看了一下。但不真正动手写点程序,是没法入门的。作为熟悉 Delphi 编程的人,当然想在 Delphi 的程序里面调用 Python 的一大堆库的功能,比如现如今火爆的 AI 库。首先,学习 Python 需要一个编程工具,可能一般人用文本编辑器或者用 VSCode 的比较多。但作为熟悉 Delphi 的人,发现有一个开源工具 PythonScripter 非常好用。

2024-01-31 03:03:12 964 4

原创 Windows OpenVPN的安装之桥接模式

OpenVPN 的桥接模式的安装设置

2024-01-28 20:41:56 1586

原创 Windows 下的 OpenVPN 安装

Windows 底下的 OpenVPN 安装配置。

2024-01-28 14:41:10 6629 5

原创 Firebird + FireDAC 界面操作的自增字段

Firebird + FireDAC 自增字段

2023-10-26 18:10:38 230

原创 Delphi 的 DataSetProvider.Options 里面的 poCascadeUpdates 修改嵌套表的主键

假设主表和从表的非主键字段的值在客户端同时被修改,提交后,会在服务器端的 DataSetProvider1.BeforeUpdateRecord 触发事件。可以在事件里面判断当前触发的是主表还是从表。因为程序员知道每个表的字段名称,因此可以针对当前触发事件的表的记录的每个字段,进行权限控制,或者值的修改,等等。也就是业务逻辑控制在服务器端,安全性更高。

2023-10-12 23:12:18 255

原创 把 TObjectList 序列化为 JSON

以前测试过使用 TJson.ObjectToJsonString 和 TJson.JsonToObject,发现好像有 BUG,不稳定。

2023-08-10 13:27:21 483

原创 Delphi 调用 DLL 里面的 C 函数传递字符串

Delphi 专家李维有篇文章,针对本文标题的情况,介绍了一种代码的写法。

2023-05-13 01:26:23 1042 1

原创 把 DBGridEh 表格内容导出为 Excel 文件

如何导出 DBGridEh 表格里面的数据为 Excel 文件

2023-04-04 22:53:59 595

原创 Delphi FastReport 的一点小功能总结

FastReport 是一套功能非常强大的报表控件,在 Delphi 的 IDE 里面,可以直接可视化设计报表页面;在运行期允许用户预览报表后再决定是否打印。还可以将报表内容输出为 JPG 图片或者 PDF 格式的文件,非常好用。

2023-03-24 06:59:24 1493

原创 把多层次的 XML 文档解析为 TreeView 显示

肉眼阅读 XML 比较累,需要去对付一堆的尖括号。用 Delphi 程序把它显示为一个 TreeView 的树结构,比较容易用眼睛去看。XML 文档是一个有多层树形节点的文档。因为节点数不确定,所以要跟踪每个节点,需要用到递归。以下是我的代码,基于 Delphi 10.4 没使用第三方控件。

2023-02-22 16:13:00 477

原创 基于 Delphi 的前后端分离:之二

前端套用网页模板,后端用 Delphi 开发,前后端彻底分离解耦。

2022-12-02 23:14:54 1394

原创 基于 Delphi 的前后端分离:之一

后端用 Delphi 来写服务器,输出数据给前端,前端用 JS 来从服务器获取数据,渲染页面。

2022-12-02 19:57:56 1699

原创 WSL 的问题记录

wsl 运行失败的处理记录

2022-11-16 18:02:37 9507 3

原创 手机 APP 的卖货界面

网上买菜的微信小程序,其典型界面是左侧一个列表显示商品分类,右侧一个列表,显示商品明细。左侧列表要显示当前选中的是哪条分类记录(高亮这条记录)。右侧列表滑到底部后,往上再滑一次,自动切换到下一个分类,此时左侧列表的选中画面也同时要更新(高亮下一条记录)。

2022-09-20 08:44:26 469

原创 再谈 FireBird 的自增字段用 FireDAC 来处理

基于 MIDAS 的多层架构的数据库程序,客户端是 ClientDataSet,数据库服务器是 FireBird,服务器端采用 FireDAC 的数据库控件,如何处理数据库端的自增字段。之前我有博客文章介绍具体做法。这里更新一下另外一种做法,。

2022-09-17 01:58:52 703

原创 FireMonkey 做界面的一个小技巧

小技巧就是,要让一个东西随鼠标指过去颜色变深,鼠标离开颜色变回正常,以获得对鼠标的响应,可以给那个东西上面罩一个 TRectangle,设置其透明度让它半透明。然后在鼠标事件里面,设置这个 TRectangle 的 Visible 属性来改变它显示或者不显示。

2022-09-10 00:56:59 534

原创 Delphi FireMonkey TMemo 修改背景颜色和边框颜色

修改 TMemo 的背景颜色和边框颜色,有两种办法(如果还有其它办法,我现在不知道)。办法一:设计期对它的 style 进行修改编辑。大概意思就是改它的 style 里面的图片或者其它什么鬼。办法二:运行期用代码实现。

2022-09-08 05:11:41 747

原创 Skia4Dephi 的 Demo 程序界面架构分析

虽然 Skia4Delphi 的 Demo 程序中,运行在 Windows 上的 VCL 程序以及可以运行在手机上的 FMX 程序,都采用了相同的类似手机 APP 的层叠界面的设计模式,但最实用的还是手机 APP,因为屏幕太小,不可能一屏里面还划分几个区域,只能是一层一层的界面叠加。因此,这样的设计模式,在做手机 APP 的时候非常值得学习。实际上它的 FMX 的 Demo 程序的框架,可以直接用于我们自己开发的手机 APP。......

2022-08-29 21:41:05 4995 1

原创 Delphi 的操作符重载 - Record 结构体

Delphi 的结构体类型的操作符重载,以及属性和事件。

2022-08-25 01:18:18 601

原创 多线程,主线程的概念以及在 Delphi 的新语法中的代码写法

用 Delphi 写代码的初学者,因为 Delphi 的 VCL 框架(或者新的 FireMonkey 框架),导致对线程没有概念。那么,究竟线程是个什么玩意?上述程序,就是从 main 的第一行开始,一行一行地执行。假设数据库服务器离得远,网络带宽小,select 获取的数据太多,可能第二行代码的执行时间就需要20秒。那么,它就要等 20 秒后,等第二行执行完毕,才会执行第三行。这就是所谓的【程序】,也就是一行一行往下执行。

2022-08-19 17:48:39 791 2

原创 关于大图片加载的速度太慢导致界面卡顿的问题

1.加载文件数据进内存如果很耗时,这个代码如果在主线程执行,就会把主线程卡住。那么这个加载的代码,可以用线程来执行,避免卡住界面。2.最终要显示到界面上,比如把图片的内存数据赋值给 TImage 或者 TImageViewer,因为会影响界面变动,必须要使用主线程来操作。3.所以,假设时间消耗比较多是在第一步,那么你把第一步放进线程,会解决界面卡住的问题;如果时间消耗比较多是在第二步,因为第二步必须在主线程执行,如果它消耗时间导致界面被卡住,那就没有任何办法了。...

2022-08-18 00:31:50 1678

原创 新手学习 python 的好工具:PyScripter

这是一个在 Windows 上运行的用来写 python 代码的工具。简单说有点类似 vscode 这样的工具,但它是专门为 python 开发的。简单,好用,顺手。

2022-08-05 10:06:11 2473

原创 EhLib 数据库记录的下拉选择

通过下拉选择,知道用户选择了数据库里面的哪条记录。仅仅是用来知道,而不是用来输入。有一个表,有很多记录。提供一个界面让用户从表里面选择一条记录。程序获取用户的选择结果。最简单的方法,给一个 DBGrid,用户将游标走到选择的记录(通过滚动和鼠标点击 DBGrid 里面的一条记录),然后程序读其对应的 DataSet。DBGrid 太占空间。最好是一个类似 Edit 的东西,然后有一个下拉按钮,点这个按钮,下来出来一个框,框里面有多条记录供用户选择。选择结果要显示到这个 Edit 里面。采用 EhLib 的控

2022-07-03 00:04:19 448

原创 类方法和类变量的使用

Delphi 语法,有类方法 class procedure 和 class function ;也有类变量 class var。可以用来干嘛?WebService 服务器端,多个 SoapDataModule 共用的方法,放到一个 DataModule 里面去。每次 SOAP 调用,需要在 SoapDataModule 实现接口方法里面,创建该 DataModule 的实例,调用其方法,然后释放。创建和释放的代码,总是重复。并且,没有对象缓冲池。当然,可以给这个 DataModule 实现一个基于接口释放

2022-07-02 17:19:22 459

原创 Delphi SOAP WebService 服务器端多个 SoapDataModule 实现相同的接口方法,接口继承

WebService 服务器端,为了方便代码管理,将不同的业务逻辑,分到不同的 TSoapDataModule 里面去。这样好对代码做模块化管理。多个 TSoapDataModule 可能需要实现相同的接口方法,每个 TSoapDataModule 模块对该方法的实现代码可能不同(因为业务不同);最简单可能性是每个模块要检查的客户端访问权限不同。那么,在客户端,因为是调用服务器端的不同接口的相同方法,如果给每个接口写一次方法调用,代码冗余。服务器端:服务器端的接口,默认(IDE 自动生成的代码)从 IApp

2022-07-02 16:27:20 476

原创 Delphi SOAP WebService 服务器端多个 SoapDataModule 要注意的问题

本人之前有篇博客文章,讲到在 Delphi 的 Soap WebService 程序服务器端,使用多个 TSoapDataModule 的方法。文章地址在这里:https://blog.csdn.net/pcplayer/article/details/110178123内置 IdHTTPServer 的独立的 WebService 服务器端,内部有多个 TSoapDataModule,服务器端运行时,在 Delphi IDE 里面,通过 TSoapConnection 连接服务器端,ClientDataS

2022-06-15 02:06:45 2427

原创 Delphi 的结构体支持

Delphi 新的结构体初始化语法。

2022-06-06 22:30:20 813

原创 Skia4Delphi 在 Delphi 里面利用 Skia 画图

简介Skia 是一个 2D 库,画图性能非常好。是由 Google 开源出来的。在 Delphi 里面如何使用这个 2D 库,来利用它提供的一些好处?有一个开源的项目,Skia4Delphi 很好地解决了这个问题。它使得 Delphi 的 VCL 程序和 FMX 程序都能利用 Skia 库来画 2D 图。比如,可以用 Delphi 的程序来显示 WebP 这种格式的图,SVG 的图,等等。当然,Skia 还有很多 2D 图的算法。这个开源项目在:https://github.com/skia

2022-05-14 01:12:57 3023

Delphi ACM Component,ACM 控件用于声音采集和播放,含全部源代码和使用例子

10多年前从网上找来的控件用在当时我自己写的网络语音对讲软件里面,基于 Delphi 7 的程序。最近有人提起网络通话,从电脑里面翻出来,看看能不能在现在的 WINDOWS 和新的 Delphi 版本上用。经过测试,只做了一点修改就可以在 Delphi 10.4 和 Windows 11 上使用了。里面有一个测试工程的代码是我写的,测试通过。同时这个代码也演示了这个控件如何使用。不需要安装控件,直接引用控件的源代码单元,动态创建控件就可以了。 当然,这个只能用于 Windows 平台。

2023-03-24

Delphi FireMonkey TListView 做手机APP的主从列表的 Demo 源代码

类似卖货或者卖菜的手机 APP 的界面,左侧栏是分类,右侧栏是商品列表。采用 Delphi 来实现,一个源代码,可以编译到 Windows,安卓,iOS 目标平台上。也就是可以做手机 APP。这个 Demo 的解释:https://blog.csdn.net/pcplayer/article/details/126945466

2022-09-20

本人原创 Delphi 版本的 HTML 编辑器源代码

很多年前做过一个基于 Delphi 的 TWebBrowser 的 HTML 富文本编辑器,是基于 MS 的 DCOM 接口的方法来做的。它背后是 IE。 现在 Delphi 提供了基于新的 Edge 浏览器的 TEdgeBrowser ,这个没有提供什么编程接口,因此采用 JavaScript 来实现相同的富文本编辑功能。本源代码就是实现此功能。包括文字格式化,插入表格,插入图片,插入代码块等等。插入代码块采用了一个开源的 JS 方案。 本压缩文件包括 VCL 版本和 FMX 版本。可以用在 DELPHI 写的程序中,提供一个基于 HTML 的富文本输入和显示的界面给用户。

2022-03-30

Delphi FireMonkey 动画及多线程例子代码

Delphi FireMonkey 框架,一套代码同时支持多个平台

2021-01-22

发光按钮-基于Delphi FireMonkey的例子代码

采用 FireMonkey 的控件,无需写代码,设置属性,就能做出按钮发光的效果。这是本人摸索出来的一种实现方法的源代码。在 Delphi 上面可以编译为 Windows, Android, iOS 和 MAC 程序。

2020-04-06

MVVM_LiveBinding.7z

MVVM 模式是指 Model - View - ViewModel,也就是把数据业务逻辑和界面彻底分开,中间还有一个专门处理界面逻辑的 ViewModel。对于界面经常需要修改甚至大改的情况,这种模式减少了代码重写的工作量。当然,也让数据和业务逻辑模块可以单独做单元测试而无需界面。对于用对象而不是数据库来做数据对象的情况下,Delphi 提供的 LiveBindings 框架可以用更少的代码将分离的数据显示到界面上。并且可以同时兼容VCL和FMX,界面部分需要处理的代码工作量小很多,仅需可视化地拖拉就能搞定。本例子代码演示如何做到这一点。

2020-02-13

文本差异检查及显示的源码

用 Delphi 写的文本差异检查及显示的程序的源代码。文本差异采用 Diff.pas 来解析。差异的显示,采用 HTML 的格式。这样方便给差异的文本添加背景色。HTML 格式采用 BootStrap 框架。所需的 css, js 文件都在 win32/debug 目录下。也就是和可执行文件在同一个目录下。

2018-10-13

Delphi APP 使用 iOS 的 BackgroundFetch 的例子源代码

Background fetches 在 iOS7 时被加入进来。这个功能是让 APP 在后台时,iOS 会每隔一段时间(比如,30秒)调用一次 APP 的某个方法,用于从网络获取数据。 这里是 Delphi 调用这个功能的代码。

2017-10-10

Win7 远程桌面多用户补丁

CSDN上好多这个补丁,但那些用 install.bat 安装的补丁在WIN7打完升级补丁后远程桌面连接会闪退。这个补丁打完后,win7至2017-10-8的所有升级包后仍然有用。

2017-10-08

本人原创:FireMonkey APP 的多语言支持的例子源码

用 Delphi FireMonkey 开发 APP 需要多语言支持,例子源码。

2017-10-02

本人原创源代码:Delphi APP 内置 WebBroker 让界面显示HTML5

Delphi 开发的 APP 内置 WebServer 用SQLite数据库存储页面内容,界面显示HTML5文档无需访问远程网站服务器。

2017-09-30

本人原创:基于Delphi WebBroker 的 CMS源代码

本人原创作品:基于 Delphi WebBroker 的一个 Web server 程序源代码。功能是简单的 CMS,博客系统。前端基于 Bootstrap。文本编辑使用 CKEditor,可以上传文件和图片。

2017-09-18

Delphi接口委托的例子代码

接口委托及运行期动态切换的演示代码。

2017-05-31

Delphi WebService 利用 TSOAPAttachment 传文件的例子代码

WebService 程序利用 TSOAPAttachment 来上传或下载文件

2017-05-14

Delphi WebBroker 网页上传文件的 Demo 源码

网页上传文件的服务器端程序的源代码,采用 Delphi 的 WebBroker 技术。任何需要网页上传文件的地方都可以用。

2017-05-02

WebBroker StandAlone 模式当 Web Server 用的源代码 by pcplayer

把 Stand Alone 模式的 WebBroker 程序当一个完整的 Web Server 来用的 Demo 代码。

2017-04-05

Delphi LiveBinding对象及对象序列化为JSON的例子

在Delphi里将对象和界面用LiveBinding方式绑定,用户操作界面改变对象属性值,对象属性值序列化为JSON字符串保存。

2016-11-24

Delphi 在 DBGrid 里面显示分组统计的源代码

Delphi程序在 DBGrid 里面显示分类统计,也就是小计。用 ClientDataSet 的 TAggregateField 的方法,也可以用 DBGridEh。本程序演示了这两种方法。

2016-11-03

Indy10 WEB Server Demo代码

使用 Indy10 TIdHTTPServer 开发的一个简单的Web服务器。它可以设置WEB根目录,设置WEB请求默认文件,响应浏览器对WEB服务器上的文件的请求。允许浏览器请求一系列HTML或JS文件,可以用来做一个简单的静态网站。没有执行CGI程序的功能。这里是例子代码,我自己写的,参考了网上的文章。

2014-07-15

HotLog 源代码

我自己用得最多最顺手的 Log 工具。把这份PAS单元文件加入到你的工程里,随时可以写LOG。尤其是多线程情况下很难用断点跟踪时。个人感觉比 OutputDebugString 好用。

2013-06-18

网络连接状态查看工具

做网络通信程序,经常要查看 Netstat,然后从一大堆连接里面,找到自己想看的那一条。可能是想查某个程序,即某个PID打开了某个端口没;也可能是想查某个端口被哪个程序占用;也可能是想查某个IP地址被哪个程序连接,等等。用眼睛去看很累。我用DELPHI写了个程序,执行 Netstat 然后获得其返回的连接状态字符,任意过滤,方便查看。这个工具我自己用起来很顺手。压缩包里有源码。

2013-06-18

Dspack for XE3

Dspakc 官方最后一个版本只支持到 D7。网上有另外一帮人彻底改写过的同名项目支持到 D2010/XE,在XE3底下也能安装。但我测试发现有一些问题,不如原来官方版本稳定。因此,我把官方支持到 D7 的最后一版在 XE3 底下做了小小修改后,可以在 XE3 底下安装成功,并且在我的正式工程里使用,没发现问题。

2013-06-17

基于 indy 的FTP客户端的例子

D7, INDY9, FTP 客户端的一个例子。已经用在实际的项目里的。

2010-03-30

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除