![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Delphi
左眼看成爱
做一个素净的人,把目光停留在微小而光明的事物上,远离那些尘世的混乱和喧嚣。余生漫长,希望你生活的地方,天足够蓝,阳光足够好,街边的小吃店好吃又卫生,回家的路灯总是为你亮着。
展开
-
Delphi TListview自绘某列添加图片按钮并实现点击事件响应
【代码】Delphi TListview中某列添加图片按钮并实现点击事件响应。原创 2023-03-10 17:41:02 · 1224 阅读 · 0 评论 -
Delphi TRzListView自绘表头标题背景色示例(OnDrawHeader)
RzListView自带了OnDrawHeader 事件,在该事件中进行自绘即可。原创 2022-12-29 18:35:44 · 617 阅读 · 1 评论 -
Delphi TListView自绘表头标题字体颜色示例(每列不同颜色)
效果如下截图:(7列标题分别显示不同颜色)原创 2022-12-29 18:18:08 · 699 阅读 · 0 评论 -
Delphi TListView自绘表头标题背景颜色和字体颜色示例
搜遍全网,基本都找不到Delphi自绘TListview标题背景颜色的代码,研究了很久自已实现了这个功能。原创 2022-12-29 16:31:07 · 968 阅读 · 0 评论 -
Delphi中TStringList Indexof如何实现区分大小写,通配符模糊匹配及字符串比较区分大小写测试
大家都知道Delphi中一直以来都是不区分大小写的。但是如果有一天,你用TStringlist维护了一个id列表什么的。并且要实现区分大小写。实现IndexOf模糊匹配要如何实现?原创 2022-11-16 23:53:57 · 1157 阅读 · 0 评论 -
Delphi中关于PChar、Char数组、string[](ShortString)及结构体长度及占用空间的一些特性说明和测试
所以,在Delphi结构体中,要使用或传输字符串,首选的是Char数组,如果一定要使用string,也要指定长度。比如:这里不采用定长的方式,那么当采用SizeOf()获取结构的大小的时候,可能得不到正确的大小值。PChar就是纯指向字符串(#0字符结尾)的指针,与C语言中的char *是一样的,PChar是一个指针, 它的大小只有32位。另外这个首位成员变量的值,很有可能出现随机值的情况,就是你已经给它赋了值,在当前的显示是正确的,但是.....自己去慢慢体会。印证了上面说的内容。还 包含字符串长度)原创 2022-11-16 23:27:58 · 2129 阅读 · 0 评论 -
Delphi FDMemTable内存表用法及简单操作函数封装
在某些场景下当轻量级的应用需要在内存中缓存数量比较多且字段比较多的高频使用数据时。以前我都是采用Ini或直接使用sqlite数据库。JSON也试过基本无法或很难实现需要的功能,因为当涉及某一同类型对象多字段多列时不通过遍历基本无法直接取到或修改数据。这样就导致了效率的低下。比如你在写一个多任务多线程并发断点续传下载工具的时候,就意味着要同时保存每个下载任务N个线程的不同状态和位置数据。并在关闭后持久化到磁盘。最近发现FDMemTable真的是个好东西。原创 2022-11-05 16:41:10 · 3201 阅读 · 0 评论 -
Delphi Listview中批量显示带百分比进度条示例源码及演示效果
【代码】Delphi Listview中批量显示带百分比进度条示例程序及演示效果。原创 2022-11-05 16:14:40 · 704 阅读 · 0 评论 -
Delphi生成时间戳(秒级、毫秒级)
网上的引用DateTimeToTimeStamp基本都是错误的:现提供两种方法,算出的确认跟JAVA ,C++一样的function GetTimeStampMilliseconds:string;var SysTime:TsystemTime; timen,time2:TDateTime; ss2,ss3:int64; str2:string;begin GetLocalTime(SysTime); timen:= SystemTimeToDateTime(Sys.原创 2022-05-23 21:24:17 · 4630 阅读 · 0 评论 -
cxgrid 如何保存列信息的显示与隐藏状态
保存:窗体关闭事件或按钮 cxGridTVDetail.StoreToIniFile('cxGridTVDetail.ini');读取:cxGridTVDetail.RestoreFromIniFile('cxGridTVDetail.ini');原创 2022-05-18 22:15:11 · 397 阅读 · 0 评论 -
Notepad++将SQL语句生成Delphi中的格式(前面添加加号和单引号,后面加空格和单引号
原语句if not exists (select * from sysobjects where id = object_id('OilRange') )begin CREATE TABLE [OilRange] ( [uuid] VARCHAR(40), [StationID] int , [TankID] int, [GenTime] DATETIME , [GenBatch] int, [OilHight] DECIMAL(18,4) , [OilVol]原创 2022-01-23 20:53:00 · 1224 阅读 · 0 评论 -
Delphi DBGridEH列头筛选框启用方法
DBGridEH列头筛选框启用方法1,DBGridEh.STFilter.Visible := True2,DBGridEh.STFilter.Local = True3,DBGridEh.STFilter.Location=stflInTitleFilterEh | stflUnderTitleFilterEhstflInTitleFilterEh --筛选显示在列头stflUnderTitleFilterEh --筛选显示在列头下面一行...原创 2021-06-18 10:18:43 · 1103 阅读 · 0 评论 -
Delphi 时间操作函数
//DateUtils.YearsBetween() //DateUtils.MonthsBetween() //DateUtils.DaysBetween(); //DateUtils.HoursBetween(); //DateUtils.MinutesBetween(); //DateUtils.SecondsBetween(); //DateUtils.MilliSecondsBetween() //DateUtils.IncYear(); //DateUtil...原创 2021-06-16 13:57:57 · 755 阅读 · 0 评论 -
适用于DELPHI2007及以下版本的BytesOf和StringOf (字符串转TBtyes)
function BytesOf(const Val: AnsiString): TBytes;var Len: Integer;begin Len := Length(Val); SetLength(Result, Len); Move(Val[1], Result[0], Len);end; function StringOf(const buf:TBytes): AnsiString;begin SetLength(Result, Length(buf)); Co.原创 2021-05-09 14:26:05 · 633 阅读 · 0 评论 -
Delphi与JAVA 互通AES文件加解密源码(支持D6-XE10)
Delphi用的人越来越少 了,可用资源越来越少。有什么好的完整的代码我都尽量拿出来跟大家分享,部分内容也是来自互联网整理Delphi代码:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,ElAES,math;type TForm1 = class(TForm) Button1:原创 2021-05-09 13:58:33 · 871 阅读 · 0 评论 -
Delphi判断一个字符串在另一个字符串中最后出现的位置
实际上VCL有提供现成的函数,无需自己造车轮:SysUtils.LastDelimiter - 判断一个字符串在另一个字符串中最后出现的位置该函数不区分大小写, 举例:var s: string; i: Integer;begin s := 'CodeDear Delphi'; i := LastDelimiter('Del',s); ShowMessage(IntToStr(i)); {12}end;...原创 2021-05-09 13:49:23 · 1008 阅读 · 0 评论 -
关于Delphi中的集合类型比如类似JAVA中的HashMap在哪里?
一般都在System.Generics.Collections, Delphi2009以上就有了最常用的TDictionary键值对泛型用法:TDictionary<Key,Value>; smap:TDictionary<String,String>; imap:TDictionary<Integer,Integer>; somap:TDictionary<String,TObject>; OOmap:TDictionary<T原创 2021-04-11 19:18:01 · 549 阅读 · 0 评论 -
新版Delphi10.3.2自带JSON类构建JSON及根据JsonPath高效解析JSON示例代码
{ "error":0, "status":"success", "date":"2014-03-04", "results": [ { "currentCity":"成都", "weather_data": [ { "date":"周二(今天, 实时:12℃)", "dayPictureUrl":"http://api.map.baidu.com/images/.原创 2021-04-11 19:09:24 · 1441 阅读 · 0 评论 -
Delphi FastReport 实现多个page显示并打印到同一页
问:Delphi FastReport 如何实现多个page显示并打印到同一页?解决方法:将相关需要整合的页面PrintOnPreviousPage 属性设置为True,即可实现多个page显示到同一页面原创 2021-04-01 09:26:48 · 1884 阅读 · 0 评论 -
DevExpress TcxGrid的cxGrid1Level如何实现类似PageControl分页显示?
如何做到类似PageControl显示方式?解决方法:增加需要的Level数量,将cxGrid1->RootLevelOptions->DetailTabsPosition设为dtpTop,然后相应的设置cxGrid1Level1,和cxGrid1Level2的Caption值。即可实现分页面显示效果(用了多年的TcxGrid第一次发现有这样的功能,Dev控件真的是强大)参考地址:http://www.360doc.com/content/17/0223/09/4030864..原创 2021-03-28 17:53:20 · 508 阅读 · 0 评论 -
JAVA Delphi HMAC_SHA256位实现及SHA256哈希散列BASE64签名Key互通生成算法
Delphi代码:uses IdGlobal, IdHashSHA, IdHMACSHA1, IdSSLOpenSSL//Add by wh 2021-03-19function HMACSHA256(const sValue, sKey: String): String;var hmac: TIdHMACSHA256; hash: TIdBytes;begin LoadOpenSSLLibrary; if not TIdHashSHA256.IsAvailable t.原创 2021-03-20 11:40:18 · 1850 阅读 · 3 评论 -
新旧版Indy的TIdHashMessageDigest5类计算MD5的区别
uses IdHashMessageDigest,IdHash;{$R *.dfm} //新版XE2中的写法 ,一句就可搞定 可以直接HashStringAsHexfunction MD5(const S: string): string;var MyMD5: TIdHashMessageDigest5;begin MyMD5 := TIdHashMessageDigest5.Create; try Result := MyMD5.HashStringAsHex(S);.原创 2021-03-18 20:57:32 · 607 阅读 · 0 评论 -
Delphi调用HTTP接口三种参数拼接方式
1,常规的+号连接运算符拼接 URL:=URL+'&eid='+FEID+'&templatecode='+TemplateCode+'&phone='+sPhone; URL:=URL+'&signature='+signature+'&sign_name='+FSignName+'×tamp='+sTimestamp+'&canshu='+sParam.AsString; URL:=Format('http://sms.y原创 2021-03-17 23:03:26 · 2511 阅读 · 0 评论 -
Delphi “Type mismatch for field ‘车号‘, expecting: String actual: FixedWideChar.“
---------------------------QBill: Type mismatch for field '车号', expecting: String actual: FixedWideChar.---------------------------解决方法:字段问题 从AdoQuery上删除重新添加该字段后就ok了,一般这种问题是因为升级了开发环境或IDE导致参考:https://bbs.csdn.net/topics/390001729...原创 2021-03-07 17:52:21 · 1576 阅读 · 0 评论 -
Delphi中小试Opencv--图像差异对比(大家来找茬辅助实现cvAbsDiff函数的使用)
1、首先下载Delphi-OpenCV下载地址:https://github.com/Laex/Delphi-OpenCV国际惯例先上代码program CompareImage;{$APPTYPE CONSOLE}{$R *.res}uses System.SysUtils, ocv.core.types_c in 'ocv.core.types_c.pas', ocv.core_c in 'ocv.core_c.pas', ocv.highgui_c in 'oc原创 2020-10-21 03:09:08 · 3324 阅读 · 0 评论 -
Delphi二叉树链表的建立及四种遍历方法
program Btree;{$APPTYPE CONSOLE}uses SysUtils,Contnrs;type {二叉树定义} PBiTree=^TBiTree; TBiTree = record Data :Char; //数据 lChild:PBiTree; //左孩子指针 rChild:PBiTree; //右孩子指针 end;//按前序遍历创建二叉树function CreateTree(): PBiTree.原创 2020-10-15 00:51:59 · 727 阅读 · 0 评论 -
Windows 32、64位系统编译器各数据类型大小和字节对齐关系
何为32位64位?个人理解:32位64位其实就是32bit64bit ,32位cpu单次处理指令4字节,64位8字节,因为1字节=1byte=8bit32位编译器:32位系统下指针占用4字节64位编译器:64位系统下指针占用8字节struct结构体成员中对齐关系:字节对齐的细节和具体编译器实现相关,但一般而言,需满足以下四个准则:1)结构体变量的首地址能够被其最宽基本类型成员的大小所整除;2)结构体每个成员相对于结构体首地址的偏移量都是成员大小的整数倍,如有需要编译器会在成...原创 2020-09-04 10:13:49 · 3026 阅读 · 0 评论 -
Delphi 程序中实现程序自带系统XP主题风格,UAC管理员权限,WIN10支持manifest文件内容
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <!--添加UAC管理员权限--> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> <security> <requestedPrivileges> <requestedExecutionLevel level="..原创 2020-08-18 13:14:02 · 740 阅读 · 0 评论 -
Delphi中结构体成员内存偏移基址计算方法(C++中的offsetof 的实现)
C++中:(PVOID64)(Ldr64 + offsetof(PEB_LDR_DATA64, InLoadOrderModuleList))//------------------------------------------------------------------delphi中实现:VARLdr64: PEB_LDR_DATA64;1,PVOID(NativeUInt(@Ldr64)+NativeUInt(@PEB_LDR_DATA64(nil^).InLoadOrderMo.原创 2020-08-10 09:37:50 · 463 阅读 · 0 评论 -
Delphi中利用File Of Type创建并维护类数据库型二进制记录文档
话不多说,直接上代码: //定义存储数据结构type TStudent = record ID: Integer; Age: Integer; Name: string[10]; Email: string[50]; Sex: string[5]; Address: string[100]; end;const sFile ='student.stu'; //存储文件名var Form1: T原创 2020-06-08 10:15:43 · 456 阅读 · 0 评论 -
Delphi 编译的程序在win10中怎样默认以管理员身份运行
由于Vista以后win中加入的UAC安全机制,采用Delphi开发的程序如果不右键点击“以管理员身份运行”,则会报错。 在XE2以上的Delphi版本处理这个问题已经非常简单了。 右建点击工程,选择“Options”->“Applicaion”下,将Runtime themes项设置为“Use Custom manifest”,点击下方按钮,选择相应的Manifest文件即可。 需要注意的是:Debug和Release模式不同,要进行同样设置 至于Manifest文件,也就是一个XML文档,原文如下原创 2020-06-02 11:37:37 · 2418 阅读 · 0 评论 -
Delphi 获取进程命令行参数方法
适合D2007 x86版本unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Button1: TButton; procedure Button1Clic原创 2020-06-02 15:59:34 · 1843 阅读 · 1 评论 -
Delphi中获取十位数Unix时间戳DateTimeToUnix注意事项及互转方法
uses DateUtils;DateTimeToUnix(Now)值得注意的是,上面函数运行后它得到的时间比c语言中Time()得到的时间大了8*60*60,也就是多了8小时,28800秒这是因为Now是当前时区的时间,c语言中time()是按格林威治时间计算的,北京时间比格林威治时间多了8小时DateTimeToUnix(Now)-8*60*60 就和c语言中time()得到的一样了如下图://日期转换成时间戳procedure TForm1.Button1Click(Send.原创 2020-05-09 11:36:16 · 2647 阅读 · 0 评论 -
根据进程PID获取程序所在路径的函数 x32-x64 d7-d2007-xe2通用支持(Delphi全网首发)
function GetProcessImageFileName(hProcess: Cardinal; lpImageFileName: LPSTR; nSize: DWORD): DWORD; stdcall; external 'PSAPI.dll' name 'GetProcessImageFileNameA';{根据进程PID获取程序所在路径的函数 x32-x64 d7-...原创 2020-04-10 15:26:57 · 750 阅读 · 1 评论 -
Delphi 中GetLogicalDriveStrings 获取系统中可用的驱动器列表(D2007-XE2通用)
procedure TForm1.FormCreate(Sender: TObject);var buf:array [0..MAX_PATH-1] of char; m_Result:Integer; i:Integer; str_temp:string;begin m_Result:=GetLogicalDriveStrings(MAX_PATH,buf); fo...原创 2020-04-09 10:37:51 · 475 阅读 · 0 评论 -
Delphi中record结构体定义发送接收传递使用
定义消息结构体TMsg:type PMsg = ^TMsg; TMsg = record FontName :string[20]; FontColor :Integer; FontSize :Integer; FontStyle :string[4]; Content :ar...原创 2020-01-08 15:24:47 · 1345 阅读 · 0 评论 -
Delphi 用Tessercat 4.1 进行OCR中英文标点符号等识别准确率可达99.9%以上附全部源码
Delphi调用Tessercat 4.1 进行OCR文字识别的源码,支持DELPHI几乎所有版本直接编译,本人测试Delphi7,Delphi2007,DelphiXE2均可正常编译使用。含全部DLL库文件及中英标点训练字库(v4.1.0.20190314),识别效果很不错,能正常识别99%的中文、大小写英文字符、标点符号等,基本可以达到实用价值。下载地址:https://down...原创 2020-01-06 13:25:22 · 4098 阅读 · 2 评论 -
delphi获得webbrowser中的html文本
procedure TForm1.Button1Click(Sender: TObject);begin WebBrowser1.Navigate(Edit1.Text);end;procedure TForm1.Button2Click(Sender: TObject);var doc:olevariant; str:string;begin doc:=We...原创 2019-12-15 21:12:05 · 1065 阅读 · 0 评论 -
Delphi自绘网格坐标系正弦波演示
procedure TForm1.Button1Click(Sender: TObject);var x, l,i,j: Integer; y, a: double;begin Image1.Picture.Bitmap := TBitMap.Create; Image1.Picture.Bitmap.Width := Image1.Width; Image1.Pictu...原创 2019-12-12 13:57:30 · 779 阅读 · 0 评论 -
SynEdit 鼠标点击行号栏自动选中所在行
//CaretX 光标或鼠标所在行的列号(第几列),从0开始计数//CaretY 光标或鼠标所在行的行号(第几行),从0开始计数//SynEdit.Lines.Strings[]下标从0开始。要CaretY-1 设置LineNumberStart=0没用。procedure TfrmLogin.sqlTextGutterClick(Sender: TObject; Button: ...原创 2019-11-29 20:17:44 · 489 阅读 · 0 评论