Delphi 笔记
小印丶
点点笔记,方便你我他
展开
-
Delphi 高精度计时
高精度计时器,计时精度是根据自己电脑硬件配置决定的,我目前的可以精确到 0.1 微秒。原创 2022-11-08 17:39:59 · 1155 阅读 · 0 评论 -
Delphi 插入排序与希尔排序的比较
插入排序 与 希尔排序 比较原创 2022-07-27 15:36:04 · 184 阅读 · 0 评论 -
Delphi 插入排序
插入排序原创 2022-07-27 12:08:06 · 218 阅读 · 0 评论 -
Delphi 希尔排序
希尔排序原创 2022-07-26 19:09:45 · 243 阅读 · 0 评论 -
Delphi TStringList 存取数据
Delphi TstringList 存取数据原创 2022-07-25 11:24:17 · 728 阅读 · 0 评论 -
Delphi 通过字符串查找指定控件
Delphi 通过字符串查找指定控件原创 2022-06-10 10:05:03 · 974 阅读 · 0 评论 -
Delphi 判断文件是否为UTF-8-BOM的文件
Delphi 判断文件是否为UTF-8-BOM的文件原创 2022-06-09 10:24:49 · 621 阅读 · 0 评论 -
Delphi 之 FileAge【文件最新的修改时间】
RAD Studio 10.2.3 测试√procedure TForm1.Button_27Click(Sender: TObject);var i: Integer;begin i := FileAge('D:\AAA_A_Test\Log\test.txt'); Memo_1.Lines.Add('i = ' + DateTimeToStr(FileDateToDateTime(i))); i := FileAge('D:\AAA_A_Test\Log\test2.txt')原创 2022-02-24 11:56:59 · 684 阅读 · 0 评论 -
位移运算【左移、右移】
左移:【Delphi 对应符号 shl】【C++ 对应符号 <<】举个栗子:i = 100;将 i 左移 4位【Delphi 对应 i shl 4】【C++ 对应 (i << 4)】方法一:100 转换2进制为 1100100将 i 左移4位就是需要将转换为二进制后的数后面增加 4 个0即 11001000000在将这个二进制数转换为十进制结果 = 1600方法二:将 i 乘以 2 的需要位移数的次方结果 = i * 2^4 = 100 * 2.原创 2021-11-29 12:17:07 · 1130 阅读 · 2 评论 -
Delphi 工厂模式
RAD Studio 10.2.3 测试√运行结果:使用方法:procedure TDesignPattern.Button_FactoryPatternClick(Sender: TObject);var mBigBoss: TBigBoss; mFactory: IFactoryMgr;begin mBigBoss := TBigBoss.Create; mFactory := mBigBoss.GetFactory('小米手机'); mFactory.Make;原创 2021-11-09 11:52:25 · 471 阅读 · 0 评论 -
Delphi 观察者模式
RAD Studio 10.2.3 测试√运行结果:使用方法:procedure TDesignPattern.Button_ObserverPatternClick(Sender: TObject);var mObj001: TObserverObject_001; mObj002: TObserverObject_002;begin // 被观察者001进行创建 mObj001 := TObserverObject_001.Create; Memo_Log.Lines原创 2021-11-04 15:36:17 · 284 阅读 · 1 评论 -
Delphi ClientDataSet.Filter 模糊查询
RAD Studio 10.2.3 测试√如果不清楚 ClientDataSet 怎么给数据的可以参考 :Delphi ClientDataSet + DataSource在 DBGrid 中展示数据提示:字段1:这是数据中的一个字段,进行筛选的就是这一列中的值Edit_1.Text:这个就是模糊查询的值begin with ClientDataSet_1 do begin// Close;// Filter := '字段1=''' + '234' + '''原创 2021-10-27 18:08:44 · 1385 阅读 · 0 评论 -
Delphi 获取计算机名
RAD Studio 10.2.3 测试√procedure TForm_Tips.Button_GetComputerNameClick(Sender: TObject); {取得计算机名} function ComputerName: string; var CNameBuffer: PChar; fl_loaded: Boolean; CLen: ^DWord; begin GetMem(CNameBuffer, 255); New(CLen原创 2021-10-24 22:11:58 · 625 阅读 · 0 评论 -
Delphi 将方法以参数的形式传递
RAD Studio 10.2.3 测试√结果图:代码:procedure TForm_Tips.Button_ParamIsFuncClick(Sender: TObject);type // 需要先声明一个方法的类型 TFuncType = function(ANum: Integer): Integer; function Func01(n: Integer): Integer; begin Result := n + 1; end; function原创 2021-10-19 10:58:07 · 204 阅读 · 0 评论 -
Delphi 当前时间添加指定秒后的时间
RAD Studio 10.2.3 测试√procedure TForm_Tips.Button_IncSecondClick(Sender: TObject);var mDateTime: TDateTime;begin mDateTime := Now; Memo_Log.Lines.Add('当前时间:' + DateTimeToStr(mDateTime)); mDateTime := IncSecond(mDateTime, 600); Memo_Log.Lines.原创 2021-09-29 15:18:49 · 760 阅读 · 0 评论 -
Delphi 写XML文件
RAD Studio 10.2.3 测试√// uses Xml.XMLDoc, Xml.XMLIntfprocedure TForm_Tips.Button_WriteXMLFileClick(Sender: TObject);var mFileName: string; mDocument: IXMLDocument; mMainNode: IXMLNode; mNode, mTmpNode: IXMLNode;begin mFileName := ExtractFile原创 2021-09-09 11:28:16 · 573 阅读 · 0 评论 -
Delphi 读XML文件
RAD Studio 10.2.3 测试√示例:<?xml version="1.0" encoding="UTF-8"?><Persons> <test>测试内容</test> <Person> <Name>小印01</Name> <Age>22</Age> <Sex>男</Sex> </Person> <原创 2021-09-08 18:37:36 · 1747 阅读 · 0 评论 -
Delphi 金额转大写
RAD Studio 10.2.3 测试√使用实例procedure TForm_Tips.Button_MoneyConvertClick(Sender: TObject);var mMoneyNum: Real;begin mMoneyNum := 00000000; // 零元整 Memo_Log.Lines.Add(MoneyConvert(mMoneyNum)); mMoneyNum := 00100053; // 壹拾万零伍拾叁元整 Mem原创 2021-09-07 17:27:32 · 654 阅读 · 0 评论 -
Delphi 文件操作 AssignFile()
RAD Studio 10.2.3 测试√procedure TForm_Tips.Button_AssignFileClick(Sender: TObject);var FileName: string; i: Integer; Str: string;begin FileName := ExtractFileDir(ParamStr(0)) + '\Test.csv'; // 注意 DataFile 不能再方法中进行声明 // 将 FileName 文件与变量 DataF原创 2021-08-31 16:38:56 · 1900 阅读 · 0 评论 -
Delphi 字符串转十六进制
RAD Studio 10.2.3 测试√procedure TForm_Tips.Button_StrToHexClick(Sender: TObject); function StrToHex(s: string): string; var i, j: Integer; begin Result := ''; for i := 1 to Length(s) do begin j := Integer(s[i]); Result原创 2021-08-27 12:19:35 · 1110 阅读 · 0 评论 -
Delphi 解析JSON[superobject.pas]
RAD Studio 10.2.3 测试√打印结果小学一年级[{"Sex":"男","Name":"小印01"},{"Sex":"女","Name":"小印02"}]{"Sex":"男","Name":"小印03"}{ "Sex": "男", "Name": "小印03"}======================这个 JSON 数组的长度: 2{"Sex":"男","Name":"小印01"}字段:Sex Value: 男{"Sex":"女","Name":"小印02"原创 2021-08-05 18:17:50 · 1366 阅读 · 2 评论 -
Delphi 线程类模板
RAD Studio 10.2.3 测试√unit uTest;interfaceuses System.SysUtils, System.Classes;type TUserBase = class(TThread) protected procedure Execute; override; public constructor Create; destructor Destroy; override; end;var G_UserBa原创 2021-07-16 15:38:11 · 193 阅读 · 0 评论 -
Delphi ClientDataSet + DataSource在 DBGrid 中展示数据
RAD Studio 10.2.3 测试√procedure TForm_DBControl.Button_AppendClick(Sender: TObject);begin ClientDataSet_1.Append; with ClientDataSet_1.Fields do begin FieldByName('字段1').AsString := '追加1'; FieldByName('字段2').AsString := '追加2'; FieldByN原创 2021-06-05 16:35:43 · 1220 阅读 · 0 评论 -
Delphi 自定义时间与当前时间间隔天数
RAD Studio 10.2.3 测试√procedure TForm_Tips.Button_ComDateTimeClick(Sender: TObject);var mTime1, mTime2: TDateTime; mDay: Integer;begin mTime1 := Now; mTime2 := VarToDateTime('2021-06-01 08:00:00'); Memo_Log.Lines.Add(FormatDatetime('YYYY:MM原创 2021-06-05 15:20:51 · 480 阅读 · 0 评论 -
Delphi 建立JSON 数据之 TJSONObject
RAD Studio 10.2.3 测试√procedure TForm1.Button_SetJSONDataClick(Sender: TObject);var // uses System.JSON; mJSON, mTempJSON: TJSONObject; mJSONArray: TJSONArray;begin mJSON := TJSONObject.Create; mJSONArray := TJSONArray.Create; try mJSON原创 2021-05-27 19:34:29 · 2134 阅读 · 0 评论 -
Delphi 绘图相关Demo
RAD Studio 10.2.3 测试√说明:下面的内容启发来源于 万一老师的博客,没事多翻一翻万一老师的博客还是会有很多收货的程序界面主要单元 [ uFrmDrawingFunction.pas ]unit uFrmDrawingFunction;interfaceuses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, V原创 2021-05-19 17:54:18 · 899 阅读 · 1 评论 -
Delphi 简单的编译指令
RAD Studio 10.2.3 测试√uCompile_ZhiLing.pas// 编译指令unit uCompile_ZhiLing;interfaceuses System.SysUtils;type TCompile_ZhiLing = class public constructor Create(); destructor Destroy; override; /// <summary> /// 判断操作系统原创 2021-05-18 11:53:54 · 372 阅读 · 0 评论 -
Delphi 雪花ID
RAD Studio 10.2.3 测试√单元文件unit uAlgorithm;interfaceuses Winapi.Windows, System.DateUtils, System.SysUtils;type // 算法 TAlgorithm = class end; // 雪花算法 { 雪花算法简单描述:+ 最高位是符号位,始终为0,不可用。+ 41位的时间序列,精确到毫秒级,41位的长度可以使用69年。时间位还有一个很重要的作用是可以根据时原创 2021-05-06 17:55:10 · 365 阅读 · 0 评论 -
Delphi 获取GUID + 字符串替换函数 StringReplace()
RAD Studio 10.2.3 测试√获取GUIDprocedure TForm1.Button_GUIDClick(Sender: TObject);var id: TGUID; mID: string;begin // 需要uses Winapi.ActiveX if CoCreateGuid(id) = 0 then mID := GUIDToString(id); Memo1.Lines.Add(mID); while True do begin原创 2021-05-02 11:18:37 · 415 阅读 · 0 评论 -
Delphi 哈希 THashedStringList
RAD Studio 10.3.3 测试√procedure TForm1.Button_HashedStringListClick(Sender: TObject);var mHash: THashedStringList; // uses IniFiles; i: Integer;begin // 哈希表是通过哈希值来访问的,通过一定的内存浪费获取检索速度,在检索项时是不需要逐一检索。 mHash := THashedStringList.Create; try原创 2021-04-29 16:42:49 · 553 阅读 · 1 评论 -
Delphi 类引用 class of
RAD Studio 10.3.3 测试√对于这些关系,用我自己的理解,可以说成下面的关系:(不能肯定我理解是对的,也希望大佬可以指点指点)TClassRef = class of TXiaoyin; 用我的话来解释就是 老父亲的孩子是老父亲的一部分好比:TXiaoYin 代表 某家庭中的老父亲【可以明确的知道老父亲是谁】TClassRef 代表 某家庭中老父亲的所有孩子【这是泛指不能确定,只知道是这个老父亲的孩子】TXiaoYin1 代表 某家庭中老父亲的第一个孩子【可以明确的知道这个原创 2021-04-27 17:24:23 · 399 阅读 · 0 评论 -
Delphi TStringList.Find()
RAD Studio 10.3.3 测试√这个 Find 是自己仿照加上自己的理解写的仿照来源于:System.Classes 中的 Find有什么不对的地方还希望看到的大佬能够指点一些,感谢// 使用这个方法的前提是,List中的内容必须是有序的而且还是从小到大,不然只能查找到中间下标的那个值function Find(const AStr: string; var AIndex: Integer; mList: TStringList): Boolean; function原创 2021-04-25 12:36:29 · 1236 阅读 · 0 评论 -
Delphi Assert() 断言
RAD Studio 10.3.3 测试√begin Assert(True); Memo1.Lines.Add('断言通过1'); Assert(False, '这里写错错误提示'); Memo1.Lines.Add('断言通过2');end;一点点笔记,以便以后翻阅。原创 2021-04-20 11:43:53 · 257 阅读 · 0 评论 -
Delphi 线程相关Demo
RAD Studio 10.3.3 测试√这个Demo还有一些问题,希望有可以帮助萌新解惑的大佬,能够给指点指点,谢谢了。PS:线程暂停的时候如果执行后面的终止线程,查看调试台的线程出现下面的结果1、自动释放的情况:线程没有释放,程序跑的路线是释放成功的路线2、手动释放的情况:程序在一定情况下会卡死,目前没有找到卡死的契机窗体大致的样子控件相关功能代码uses uThread;var m_Thread1, m_Thread2, m_Thread3, m_Threa原创 2021-04-16 18:50:15 · 326 阅读 · 0 评论 -
Delphi TStringList 常用功能
RAD Studio 10.3.3 测试√var G_StrList: TStringList;procedure TForm1.FormCreate(Sender: TObject);begin G_StrList := TStringList.Create;end;procedure TForm1.FormDestroy(Sender: TObject);begin G_StrList.Free;end;// 显示procedure TForm1.Button_Li原创 2021-04-15 16:35:50 · 364 阅读 · 0 评论 -
Delphi MD5加密
RAD Studio 10.3.3 测试√uses IdHashMessageDigest, IdGlobal;procedure TForm1.Button_1Click(Sender: TObject);var mHashMD5: TIdHashMessageDigest5; str: string;begin mHashMD5 := TIdHashMessageDigest5.Create; try str := IdGlobal.IndyLowerCase(m原创 2021-04-09 11:42:21 · 806 阅读 · 0 评论 -
Delphi 判断是否是数字
RAD Studio 10.3.3 测试√var num: Integer;begin if TryStrToInt('小印丶222', num) then ShowMessage('是数字,并且赋值给了 num = ' + IntToStr(num)) else ShowMessage('不是数字'); if TryStrToInt('2234', num) then ShowMessage('是数字,并且赋值给了 num = ' + IntToStr(nu原创 2021-03-31 18:13:00 · 1078 阅读 · 0 评论 -
Delphi 位图bmp存为jpg +文件转Base64
RAD Studio 10.2.3 测试√usesVcl.Graphics, Vcl.Imaging.jpeg, System.Classes, Soap.EncdDecd;位图bmp存为jpg:/// <summary>/// 位图保存为jpg文件/// </summary>/// <param name="bmp">位图信息</param>procedure mBmpToJpegFile(bmp: TBitmap);var m原创 2021-01-21 15:09:35 · 719 阅读 · 0 评论 -
Delphi 线程TThread中的Synchronize()方法
RAD Studio 10.3.3 测试√关于线程也可以看看这篇:Delphi 线程的开始、暂停、继续、停止目录窗体情况:代码:小知识:RTL(Run-Time library),运行时库,包括System、SysUtils、Math三个单元,提供的函数与语言、编译器、操作系统及进程有关,RTL提供类之间继承于 TObject 和 RTL内部的类VCL(Visual Component Library),可视化组件库,包括Graphics、classes、Controls等与类和组件原创 2021-01-21 10:50:17 · 4304 阅读 · 0 评论 -
Delphi USB摄像头
RAD Studio 10.2.3 测试√目录声明:1.展示设备2.展示格式3.打开预览4.保存图片至本地色彩选择 和 通道选项附件:untUSBCamera单元文件声明:uses DirectShow9, untUSBCamera, Winapi.ActiveX private { Private declarations } // 系统开发人员枚举【基本 Filter】 mBaseFilter : IBaseFilter; // F原创 2021-01-18 16:32:44 · 2458 阅读 · 10 评论