自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

GuoGuoABC

成功其实很简单,在你无法坚持的时候再坚持一下。

  • 博客(423)
  • 资源 (9)
  • 收藏
  • 关注

原创 Delphi的组件读写机制(三)

这是用来读取根组件的属性的,对于属性,前面提到过,既有组件本身的published属性,也有非published属性,例如TTimer的Left和Top。这是写子组件的最关键的一句,它把WriteComponent方法作为回调函数,按照深度优先遍历树的原则,如果根组件FRoot存在子组件,则用WriteComponent来保存它的子组件。否则就要存储子组件。这是用来写组件的属性的。前面提到过,在DFM文件中,既有published属性,又有非published属性,这两种属性的写入方法应该是不一样的。

2025-03-22 08:28:02 694

原创 Delphi的组件读写机制(二)

在DefineProperties方法中,我们可以看出,有一个Filer对象作为它的参数,当定义属性时,它引用了Ancestor属性,如果该属性非空,对象应当只读写与从Ancestor继承的不同的属性的值。它定义了Root属性,Root指明了所读或写的组件的根对象,它的Create方法将Stream对象作为传入参数以建立与Stream对象的联系, Filer对象的具体读写操作都是由Stream对象完成。由于组件的写过程是在设计阶段由Delphi的IDE来完成的,因此无法跟踪它的运行过程。

2025-03-22 08:24:37 909

原创 Delphi的组件读写机制(一)

窗体中的所有元素包括窗体自身的属性都包含在DFM文件中。在程序开始运行的时候,TReader通过流式对象Stream来读取窗体及组件,因为Delphi在编译程序的时候,利用编译指令{$R *.dfm}已经把DFM文件信息编译到可执行文件中,因此TReader读取的内容实际上是被编译到可执行文件中的有关窗体和组件的信息。值得注意的是,读写对象如TFiler对象、TReader对象和TWriter对象等很少由应用程序编写者进行直接的调用,它通常用来读写组件的状态,它在读写组件机制中扮演着非常重要的角色。

2025-03-22 08:22:56 861

原创 在Windows系统中,你可以通过以下方法查看被占用的端口及其关联的进程

通过以上方法,你可以快速定位并管理Windows中被占用的端口。某些端口可能被系统服务或安全软件占用,需确认后再操作。操作需谨慎,终止系统关键进程可能导致系统不稳定。(可选)以管理员身份运行,确保获取完整信息。:以数字形式显示地址和端口(不解析域名)。:显示占用端口的进程ID(PID)。切换到“详细信息”选项卡,找到对应。列表,直接显示端口号及对应的进程。在“详细信息”选项卡中找到对应。过滤特定端口(例如查看端口。:显示所有连接和监听端口。替换为实际进程ID,(管理员权限更佳)。

2025-02-09 17:03:21 958

原创 delphi 设置win10 dpi 缩放规则

随着2K、4K显示器的普及,在使用这些高dpi显示器时,为了保证系统软件界面看起来不至于太小,导致视觉疲劳,一般会在系统中设置缩放比例。比如一个32寸的显示,但分辨率只有1920*1440,而一个24寸的显示器,分辨率却达到3840*2160,很明显后面这个显示器的每英寸的像素点的个数多,显示的画面更加细腻。win10,win7系统里 程序经常变形,很可能是 windows 缩放比例大于100%,设置windows缩放比例比较麻烦,可以通过注册表设置程序的DPI缩放比例。表示屏幕缩放时,窗体也会跟着缩放。

2024-11-02 16:42:27 855

原创 TPair<TKey, TValue> 键值对

的实例,并添加了两个键值对。然后,我们遍历列表并打印出每个键值对。最后,我们释放了列表所占用的内存。在 Delphi(或更准确地说是 Object Pascal,Delphi 的编程语言)中,是一个包含两个元素的记录(record):一个键(Key)和一个值(Value)。这样的数据结构可能用于存储一系列的键值对,其中每个键值对都由两个字符串组成。因此表示一个列表,其中包含的元素是成对的字符串(即每个元素都是一个。在这个示例中,我们首先创建了一个。是泛型列表的一个实现,其中。是列表中元素的类型。

2024-10-25 17:52:30 373

原创 如何将一个标题的数组与数据的数组合并成一个键值对的数组

,并且你想将它们合并成一个键值对数组(对象数组),你可以使用JavaScript的。数组,并为每个标题创建一个键值对,其中键是标题本身,值是对应索引位置上的数据。如果你有多组数据需要与同一组标题合并,并且每组数据都是一个数组,你可以使用。(累加器)参数是一个对象,它累积了所有的键值对。)和一个相应的数据数组(例如,如果你有一个标题数组(例如,

2024-10-24 14:59:59 134

原创 获得Windows串口列表函数

【代码】获得Windows串口列表函数。

2024-10-22 14:52:00 170

原创 Delphi数据字典TDictionary

在 Delphi 中,创建一个数据字典通常意味着使用一种结构来存储键值对。Delphi 没有内建的字典类型,但你可以使用。单元作为一个简单的键值对存储,或者你可以使用更复杂的第三方容器,如。// 检查一个特定的键是否存在,并输出其值。// 再次检查已移除的键是否存在。// 遍历字典并输出键值对。// 创建一个新的字典实例。// 添加一些键值对。// 移除一个键值对。

2024-10-21 16:30:23 559

原创 Sql Server 生成脚本中的快速删除空行问题

使用 Sql Server 生成脚本,例如生成存储过程,常常会因为存在大量没用的空行。如下图5w行的脚本,空行很多无用,需要删除。手动删除很麻烦,想通过快捷方法删除这些空行,方法其实很简单!3、填好后,点击“全部替换”,完美结束!1、使用快捷键打开查找替换(ctrl+H);“查找选项”,勾选使用 正则表达式,如下图示。“替换为”不用填写(默认为替换成空格)2、“查找内容”填写 ^:b*$\n。“想找范围”,选择“当前文档”

2024-10-10 17:27:02 388

原创 Delphi子窗体一直显示控件名已经存在.

发现原来是dfm文件中的inherite变成为object以前发现这个问题都是替换.今天总算找到根源了.但是不清楚为什么会突然自己改变。

2024-10-10 00:10:08 281

原创 Gattchart使用手册

GanttChart是Delphi的一个交互式非数据库感知前端VCL组件,可以在gantt图表中可视化任务。该组件可用于调度许多资源和任务并可用于多种项目场景,如项目管理、任务管理、生产调度或员工调度。该组件包括用于不同数据类型的pert图表视图、打印预览组件和一些次要的可视化编辑器组件。二.快速入门做一个如下图的Demo1.新建项目2.将窗体中放置TGanttChart组件,并将设置组件的Align为Alclient.让其最大值3.在设置组件为十行.beginend;

2024-09-25 09:11:19 762 1

原创 关于Delphi 10.4.2 TIdTCPServer 的多线程通信使用

至于多线程,官方文档就有说明,其实TIdTCPServer运行过程中,当客户端连接成功后默认就是基于TIdSchedulerOfThreadDefault调度分配线程模式,为每个客户端连接都分配单独的处理线程,由于Windows线程的限制,Indy 似乎还有一种特殊的模式TIdYarnOfThread来代替传统线程,至于TIdYarnOfThread这里不做研究,开始上代码。这里主要是做一些自定义类断开连接要处理的事情,这里就省略了。当我测试多个客户端连接时问题就来了,线程会一直锁死。

2024-09-22 15:08:23 677

原创 Delphi TDictionary字典类

ws2.range['E' + inttostr(k) + ':K' + inttostr(k)].value := VarArrayOf([temparr[0],temparr[5], temparr[1], temparr[2], '新刀具区', 0, temparr[4]]);上面的代码,把字典里的K,V用"@"符号拼接了起来,塞进一个TStringList类里.字典不可以排序,但是TStringList可以啊,只是在使用里,需要SPLIT一下元素才行。// 将字典的键(唯一元素)转换为数组并返回。

2024-09-14 19:46:08 622

原创 fdMemTable内存表进行SQL查询

fdLocalSql可以对fdMemTable内存表进行SQL查询(可以对多个fdMemTable内存表进行联表查询哦),fdLocalSql使用SQLITE引擎,而FIREDAC驱动SQLITE,连SQLITE驱动DLL都不需要附带的。2]可以设置多个内存表,FDMemTable1,FDMemTable2。

2024-08-27 09:40:21 909

原创 delphi fireDAC+SQLite 在多线程下笔记

实际测试,分别建立50个读和50个写线程,同时读写,Synchronous=off 的情况下,数据仍然是同步的,其他线程写的时候,读线程仍然可以立即得到最新的数据状态。仍然是接受sqlite的建议,在数据安全要求不太严的情况下,设置为off模式,网上有人测试,讲off比full模式,效率要高50倍以上。特别是主线程需要注意。开启 WAL后,在 Synchronous = Normal 下,速度仍然非常快,但是,会有一定概率,同一时间读写同一条数据时,读出来的是写入之前的数据。

2024-08-24 22:15:33 360

原创 sqlite3 多线程和锁 ,优化插入速度及性能优化

另一个要说明的是prepared statement,它是由数据库连接(的pager)来管理的,使用它也可看成使用这个数据库连接。当开启auto-vacuum,当提交一个从数据库中删除数据的事务时,数据库文件自动收缩, (VACUUM命令在auto-vacuum开启的数据库中不起作用)。sqlite在没有显式使用事务的时候会为每条insert都使用事务操作,而sqlite数据库是以文件的形式存在磁盘中,就相当于每次访问时都要打开一次文件,如果对数据进行大量的操作,时间都耗费在I/O操作上,所以很慢。

2024-08-24 22:04:32 1834

原创 sqlserver 消息 9420,级别 16,状态 1,第 7 行

感觉非常奇怪,这个程序在很多客户多运行.当时以为数据库的配置不对.我重启了数据服务,还是没有解决.于是就查了KIMI,他讲有转认字符。执行时报9420错误,sqlserver 消息 9420,级别 16,状态 1,第 7 行。

2024-08-18 23:35:51 284

原创 Delphi线程同步(临界区、互斥、信号量)

顺便总结Application.ProcessMessages的作用:运行一个非常耗时的循环,那么在这个循环结束前,程序可能不会响应任何事件,按钮没有反应,程序设置无法绘制窗体,看上去就如同死了一样,这有时不是很方便,例如于终止循环的机会都没有了,又不想使用多线程时,这时你就可以在循环中加上这么一句,每次程序运行到这句时,程序就会让系统响应一下消息,从而使你有机会按按钮,窗体有机会绘制。它是在互斥的基础上建立的,但是信号量增加了资源计数的功能,预定数目的线程允许同时进入要同步的代码。这两个过程的声明如下。

2024-08-17 23:38:54 1236

原创 TStopwatch属性及方法

IsRunning: Boolean - 获取或设置一个值,表示Stopwatch是否正在运行。Elapsed: TTimeSpan - 返回已执行代码的时间,以秒为单位,具有微秒精度。ElapsedMilliseconds: Double - 返回已执行代码的总毫秒数。在这个例子中,我们在窗体创建时开始计时,销毁时停止计时,并输出总执行时间(毫秒)。Reset: 无 - 重置Stopwatch,将Elapsed属性设置为0。Start: 无 - 开始计时。Stop: 无 - 停止计时。

2024-08-09 18:03:09 458

原创 Oracle数据库字符集及修改方式详解

Oracle语言环境的描述包括三部分:language、territory、characterset(语言、地域、字符集)language:主要指定服务器消息的语言,提示信息显示中文还是英文territory:主要指定服务器的数字和日期的格式characterset:是指字符集,一般国内数据库实际使用的字符集主要是ZHS16GBK、AL32UTF8只要两个数据库的字符集(characterset)一样,就可以相互导入导出数据。

2024-07-28 07:40:35 1456

原创 IdSchedulerOfThreadPool用法和想法

其实用起来也还比较简单,主要是实现了维护一个线程池的功能,功能不是很强。TIdYarnOfThread(in IdSchedulerOfThread.pas) 需要强制转换的类,只有强制转换后才能访问到线程Thread对象,使用Synchronize来访问VCL控件。TIdTask(in IdTask.pas) 需要用户继承实现的类,实现参数的传入,及具体的run、BeforeRun、AfterRun功能代码。操作你会发现,线程池是用抛出异常来实现,因此你需要捕获异常来进行线程池满的处理。

2024-07-24 07:43:27 333

原创 Delphi - Indy TIdThreadComponent 线程研究

StopMode:这里分为Terminate和Suspend两种,Terminate为强行终止,Suspend为延缓、等待终止。为了优化用户体验,采用了Indy 自带的IdThreadComponent控件,完美的解决了此问题。Active:默认False,当需要令IdThreadComponent控件生效时,置为True;前几天在开发数据实时解析功能模块的时候,发现解析数据量巨大,特别耗时,程序一跑起来界面假死。TIdThreadComponent用的是观察者模式,所有这里的事件都是回调事件。

2024-07-24 07:27:19 477

原创 Delphi开发 Android 程序启动画面简单完美解决方案

3、制作一个真实的 Splash 启动画面的图片,如果是分辨率真按1080的话,就是1080×1920,如果是按470画的话,就是470×836。1、先创建一个470×320像素的空白图片,保存到工程的某个目录下,如 Images,假设我们命名为 Splash470x320.png(其它分辨率类似,实际在720p(荣耀 4x )/1080p( Mate8 )/2K(小米Note Pro)屏下调用的都是它,别的好象没有用,所以随意放几个空白图片好了)。3、方案还不够完善,需要较多的步骤;

2024-07-21 06:50:49 291

原创 Delphi 11.2 配置Android SDK 环境

这里如果配置64位就选 Android 64-bit,如果配置32位就选 Android 32-bit。有警告图标的就是有问题的项,需要手动更新一下,点击每一行后面的…,仿照选择对应的路径。点击 Select an SDK version–Add New…然后稍等一下让他更新一会,等待警告符号都消失以后点击 Finish。然后点击 Deployment–SDK Manager–Add…点击 Tools–Options…手动修改完以后点击 Next。打开 Delphi 11。

2024-07-20 20:56:22 621

原创 在Delphi中使用ATTACH语句合并SQLite数据库

请注意,这个示例假设你已经安装了SQLite3库,并且在Delphi项目中正确引用了SQLite3单元。此外,确保在合并数据库之前备份原始数据,以防止数据丢失。在实际应用中,你可能需要根据具体的表结构和业务逻辑调整SQL语句。语句将源数据库中的表数据复制到主数据库的相应表中。对象,分别代表主数据库和要合并的数据库。语句将源数据库附加为主数据库的一个别名(例如。语句分离附加的数据库,并释放数据库连接对象。以下是一个Delphi示例,展示了如何使用。在这个示例中,我们首先创建并打开了两个。

2024-07-15 10:16:48 400

原创 Flexcel学习笔记

Felxcel笔记

2024-07-10 09:30:17 600

原创 cxGrid合计忽略重复记录

/cxGrid1DBBandedTableView1->DataController->Summary->FooterSummaryItems->OnSummary 事件。//重新打开数据集前清空lstCust。//存放不同的客户编号记录。//创建lstCust对象。//记下之前未出现过的客户编号。//释放lstCust对象。//lstCust.Count就是不同的客户数。//只对colaCustNo列的合计进行处理。//合计Item的OnGetText 事件。

2024-06-15 10:27:50 617

原创 MODBUS TCP协议实例数据帧详细分析

Modbus协议是一项应用层报文传输协议,包括ASCII、RTU、TCP三种报文类型。MBAP 功能码 寄存器起始地址H 寄存器起始地址L 寄存器数H 寄存器数L 寄存器数据字节长度 寄存器数据。MBAP 功能码 寄存器起始地址H 寄存器起始地址L 寄存器数H 寄存器数L 寄存器数据字节长度 寄存器数据。MBAP 功能码 寄存器起始地址H 寄存器起始地址L 寄存器数H 寄存器数L。

2024-06-12 07:24:07 1145

原创 delphi清理程序占用的内存,真的有效果.

找了二天没有处理好是什么没有释放.直接调用该函数.发现系统占用内存减少了.再也不怕占用内存太多,导致程序异常了.//DELPHI清理释放内存小代码。

2024-06-05 08:13:30 445

原创 Delphi10.2调用Windows 10 下的SAPI进行TTS开发

1、先导入COM组件sapi.dll,Component→Import Component,选择Import a Type Library,Delphi 10.2 在win10 64位下编译测试通过,win7下如不行,可使用网上的win7 TTS修复工具修复下即可。showmessage(inttostr(voice.speak('我们是中国人', 0)));点击“Finish”,生成单元文件:SpeechLib_TLB。选择第一个,点击“Next”

2024-06-04 23:18:17 456

原创 调用WINDOWS的TTS接口,将你的文字变成Wav文件

【代码】调用WINDOWS的TTS接口,将你的文字变成Wav文件。

2024-06-04 23:14:58 324

原创 通过ffmpeg 将wav格式转为mp3格式.

通过ffmpeg实现将wav转为mp3格式.需要下载一个ffmpeg放到执行文件所在目录.是一个功能强大的多媒体处理工具,它支持大量的输入和输出格式,以及多种编解码器。由于其功能的多样性,ffmpeg的参数列表也非常丰富。以下是一些常用的ffmpeg。

2024-06-04 23:05:18 1518

原创 通过lame_enc.dll实现将Wav转为mp3格式.wav要求是16bit

【代码】通过lame_enc.dll实现将Wav转为mp3格式.wav要求是16bit。

2024-06-04 22:38:10 956

原创 SQLserver条件发现半角与全角他不分.处理的时候要修改原有的排序规则

【代码】SQLserver条件发现半角与全角他不分.处理的时候要修改原有的排序规则。

2024-05-24 14:14:40 243

原创 FireDAC与ADO读写数据的性能测试

数据库连接组件,支持三种连接方式:1.持久定义(有一个唯一名称和一个配置文件,可以由FDManager管理)3.临时定义(没有名称和配置文件,不能由FDManager管理,运行时将参数写入params属性)发现它完全可以同UNIDAC相媲美,但UNIDAC购买费用是几万美刀,而FIREDAC是免费的。fd读取数据用时2438毫秒,ado用时5590毫秒。fd读取数据用时1988毫秒,ado用时5548毫秒。fd读取数据用时363毫秒,ado用时783毫秒。fd读取数据用时10毫秒,ado用时553毫秒。

2024-05-23 07:10:04 917

原创 用TIDTcpClient发送以及接收信息

【代码】用TIDTcpClient发送以及接收信息。

2024-04-23 12:25:40 1439

原创 Delphi Xe 10.3 钉钉SDK开发——审批流接口(获取表单ProcessCode)

Log.Debug(dk.GetProcessCode('ERP客户订单'),'debug');dk.Getappsecret := '你企业钉钉的Appsecret';dk.Getappid := '你企业钉钉的APPID';二、接口获取:今天的重点,不说了,直接上代码。ProcessCode后面就是了!中年大叔学Delphi。

2024-04-16 21:17:05 685

原创 Delphi TDictionary字典类

ws2.range['E' + inttostr(k) + ':K' + inttostr(k)].value := VarArrayOf([temparr[0],temparr[5], temparr[1], temparr[2], '新刀具区', 0, temparr[4]]);上面的代码,把字典里的K,V用"@"符号拼接了起来,塞进一个TStringList类里.字典不可以排序,但是TStringList可以啊,只是在使用里,需要SPLIT一下元素才行。Add:向字典中添加一个键和其对应的值。

2024-04-07 06:36:38 1331

原创 delphi 设置win10 dpi 缩放规则

假设现在有一个软件界面(宽为950像素,高为700像素),该软件在24寸、分辨率为1900*1400的显示器上显示正常,但放到高dpi显示器(同样是24寸,但分辨率为3800*2800)上显示效果会如何?比如一个32寸的显示,但分辨率只有1920*1440,而一个24寸的显示器,分辨率却达到3840*2160,很明显后面这个显示器的每英寸的像素点的个数多,显示的画面更加细腻。同样,在系统dpi缩放改变时,系统也不会将软件进行缩放拉伸,但软件会收到WM_DPICHAN。所以:高分辨率不等于高dpi。

2024-04-04 06:08:00 803

Qualitycenter用户指南

Qualitycenter用户指南。真正指导用用如何使用测试

2013-04-25

javav如何连接SQL2008

java如何连接到SQL2008,在以前的开发中不能正常连接。

2013-04-25

通用车缝数据Doc文档

制衣企业IE专用通用车缝数据,专利数据库很详细的。

2010-04-16

delphi代码标准文档

本文档主要是为Delphi开发人员提供一个源代码书写标准,以及程序和文件的命名标准,使他们在编程时有一致格式可遵循。这样,每个编程人员编写的代码能够被其他人理解

2010-04-16

OD入门教程(软件破解)

OD入门教程(软件破解),专门的软件破解的东东

2010-04-06

设计模式可复用面向对象软件的基础100406_1

设计模式可复用面向对象软件的基础100406_1

2010-04-06

Scott Mitchell 的ASP.NET 2.0数据教程

Scott Mitchell 的ASP.NET 2.0数据教程(1-8)

2007-09-13

.net AJAx程序设计

.net ajax程序设计

2007-08-19

空空如也

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

TA关注的人

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