Delphi
cmd9x
这个作者很懒,什么都没留下…
展开
-
Delphi开发Android用虚拟摇杆VirtualJoystic
Delphi11新鲜出炉后一直没有去试用,最近几天有空下了个Lite版来玩,发现编译速度快了很多,编译后的尺寸也变小了一些,前些时候在github上看到一个Delphi无引擎版的小游戏,决定调试一下,目前Windows下运行正常,像这个样子:安卓下暂时没有运行起来,界面是这个样子:使用的MouseDown和MouseUp事件驱动,也就是说按左、右的时候,没法跳,所以想着改造一下,整个虚拟摇杆来操控,于是有了这一篇博文(顺便吐槽一下Delphi11有时编辑器会完全消失,欢迎页面也一起消失了).原创 2021-10-20 23:15:02 · 2464 阅读 · 0 评论 -
Delphi中谨慎使用QuotedStr、QuotedString、DequotedString相关的函数
//以下测试代码var s, ss: string;begin //1.添加定界符(内容中含定界符的要转义) ss := QuotedStr(s);//单引号 ss := s.QuotedString('''');//单引号 //2.添加指定的定界符(内容中含定界符的要转义) ss :=AnsiQuotedStr(s, '"');//双引号 ss :=s.QuotedString('"');//双引号 //3.去掉定界符(内容中含连续两个定界符的要反转义) ...原创 2021-09-02 17:33:21 · 850 阅读 · 0 评论 -
Delphi10.2使用IdFTP上传中文文件名失败问题
失败报错内容如下:Exception class EIdReplyRFCError with message'No mapping for the Unicode character exists in the target multi-byte code page.'网上说法,直接加在Connect;成功后加这一句就可以了。IdFTP1.IOHandler.DefStringEncoding := IndyTextEncoding(TEncoding.UTF8);实际上可能还是不行,因原创 2021-07-15 11:54:18 · 963 阅读 · 0 评论 -
FireMonkey动画进度条实现
1、首先拖一个ProgressBar控件到窗体上,右键“EditDefault Style...”2、将原来的hindicator控件原创 2021-06-10 19:38:33 · 377 阅读 · 0 评论 -
关于Delphi下PAnsiChar的使用
与C语言对应的类型为char *,意为单字节字符串指针,在Delphi下的string类型是带引用计数的,有专门的内存管理sharemm单元,在dll之间引用该单元后可以导出使用string参数的导出函数,供delphi编译的exe使用(要注意delphi版本差异)反之,delphi实现的功能要供其它语言调用时,字符串只能使用PAnsiChar或PChar,下面仅以PAnsiChar举例(PChar类同)一、作用域问题返回值或可变参数为PAnsiChar时,必须申请内存(通常是被调用方申请,调用原创 2021-02-23 11:38:03 · 3501 阅读 · 1 评论 -
Delphi XE以后TStreamWriter的妙用
TStreamWriter = class(TTextWriter)public// 有4个构造函数(可以传文件流、内存流,也可是文件名)constructor Create(Stream: TStream); overload; constructor Create(Stream: TStream; Encoding: TEncoding; BufferSize: Integer = 4096); overload; constructor Create(const Filenam.原创 2021-01-12 16:58:05 · 621 阅读 · 0 评论 -
FMX Windows下无边框窗口处理
1、窗口的Transparency不能为True2、窗口BorderIcons设为[]3、窗口BorderStyle设为Single4、重定义WindowBorderStyle样式,把下面这段粘到StyleBook里object TLayout StyleName = 'windowborderstyle' Align = Center Size.Width = 800.000000000000000000 Size.Height = 600.000000000000000原创 2020-12-24 18:39:52 · 727 阅读 · 2 评论 -
FMX TreeView部分显示CheckBox(父节点显示,子节点不显示)
// 显示TreeView.ShowCheckBoxes := True;// 创建节点时给Node.OnApplyStyleLookup事件赋值function TFrmMain.NewNode(ParentNode: TFmxObject; Text: string; ImgIdx: Integer): TTreeViewItem;begin Result := TTreeViewItem.Create(Self); Result.Parent := ParentNode; ...原创 2020-12-21 17:10:09 · 482 阅读 · 0 评论 -
FireDAC处理delphi下非法日期时间
在Delphi下最小日期时间其实是个Double类型,为0时表示:1899-12-30,小于这个时间时为负数delphi下日期分为year、month、day三个段,必须按照month(1-12),day(1-28\29\30\31,平年二月28天,闰年二月29天,大月31天,小月30天)如果来一个1093-00-17,在delphi下是不合法的时间,但是MySQL下是合法的,mysql(5.5)所支持的日期时间类型有:DATETIME、TIMESTAMP、DATE、TIME、YEAR。日期时.原创 2020-12-04 11:48:46 · 284 阅读 · 0 评论 -
FireDAC分页
研究了MySQL可以使用limit offset,count的方式分页--示例:从第100条开始取10条记录select * form tablename limit 100, 10Oracle可以用rownum + minus关键字--示例:rownum只能使用<、<=\<>操作符--rownum参考:https://blog.csdn.net/qq_39196949/article/details/84379874--minus参考:https://blog原创 2020-12-04 11:06:54 · 419 阅读 · 0 评论 -
Delphi操作EXCEL复制Sheet到另一个XLS文件中
用途:取excel模板文件中的某个sheet,合并到另一个已存在的excel文件中var excel, src, dst, act: OleVariant;begin excel := CreateOleObject('Excel.Application'); excel.Visible := true; src := excel.WorkBooks.Open('原创 2012-07-26 10:26:42 · 3473 阅读 · 0 评论 -
用Delphi+DirectShow实现的视频播放器,可用于游戏片头播放
unit Mpeg;interfaceuses Windows, Classes, Messages, ActiveX, Controls, DShow; type TMpegPlayer = class private FWindow: THandle; FErrorMsg: string; FGraphBuilder: IGraphBuild原创 2017-11-03 16:33:15 · 2106 阅读 · 2 评论 -
以鼠标为中心缩放图片以及拖动(采用区域抠图拉伸的方式)
应用场景:视频播放窗口缩放,最小保持100%帧图像:视频中的一帧图像视口:用于显示视频的区域可视区域:帧图像中某一块区域,拉伸后贴图到视口说明:当鼠标在视口中任意位置滚动滚轮,向上放大时可视区域变小,向下缩小时可视区域变大,将可视区域内的图像拉伸贴图到视口,即实现缩放效果。要达到以鼠标为中心缩放的目的,必须对可视区域进行相应计算,以下是伪代码说明:Bmp := TBitmap.Create;//帧...原创 2018-04-11 15:36:40 · 3516 阅读 · 0 评论 -
Delphi关键字和保留字
转载自:https://www.cnblogs.com/PocketZ/archive/2013/03/26/2983576.html分类整理 Delphi 中的“关键字”和“保留字”,方便查询“关键字”和“保留字”不做区分,一共 107 个。{-----------------------------------------------------------------转载 2018-05-03 14:26:59 · 967 阅读 · 0 评论 -
获取本地网址名称的方法
var adptName: AnsiString;begin reg := TRegistry.Create(KEY_WRITE OR KEY_READ or KEY_WOW64_64KEY); try reg.RootKey := HKEY_LOCAL_MACHINE; if reg.OpenKey('SOFTWARE\Microsoft\Windows NT\Cu...原创 2018-06-28 14:55:52 · 1027 阅读 · 0 评论 -
关于SQL中IN语句中项精简描述及组装方法
举例:select * from files where kid in (1,2,3,4,5,6,10,12,14)优化:select * from files where kid >=1 and kid <=6 or kid in (10,12,14)第一步:将1,2,3,4,5,6,10,12,14优化为1-6,10,12,14思路:将字符串分割为整数数组并排序,然后从头遍历,如果...原创 2018-07-13 18:38:36 · 1263 阅读 · 0 评论 -
磁盘分区大小显示(以对数的形式)
var pts: array [0..8] of single= (111, 399, 90, 300, 5, 5, 1, 2, 18);//单位:Mprocedure TForm1.Button1Click(Sender: TObject);var dw: Integer; I: Integer; px, t: Single;begin //以对数的方式显示磁盘分区...原创 2018-09-20 15:00:10 · 239 阅读 · 0 评论 -
通过将数据放入EXE的资源信息中的方式制作自已的安装工具
免费的打包工具太千篇一律了,如今是个软件都会有自己的安装界面,别的不说,自行定制UI更好看那是绝对的,至于功能嘛,根本不需要专业安装工具那么多,通常有以下几页就可以了:语言选择、自定义安装位置、文件复制、后续处理、快捷方式等。 关键点:读取资源,然后使用;如果是动态添加的资源则应该在使用前检查。一、资源导入:在Delphi XE版本中有个工具,可以直接将文件当做资源导入到程序中,编译时...原创 2018-11-02 16:02:18 · 490 阅读 · 0 评论 -
Delphi图像Hash算法,关于图像相似度问题
图像Hash算法,有PHash,DHash,AHash,以下记录平均值哈希AHash的Delphi算法代码var bmp: TBitmap = nil; //gb: TBitmap;//算法原理:将图像缩放成8x8的灰度图,统计出像素平均值//再遍历每个像素,值大于平均值记为二进制的1,否则记为0,最终得到一个64位的整数function GetAHash(SrcBmp: TB...原创 2018-12-14 11:37:31 · 1452 阅读 · 0 评论 -
Firemonkey使用Android原生控件一些注意事项
Firemonkey使用MediaPlayer时是没有事件的,需要自己处理,一般在Windows下就算了,大把的播放器可以用,但在Android下比较麻烦,本人尝试用FFMpeg,但编译的so库只支持v7a架构,低级设备支持不好,而且没有编译硬件解码,所以播放时漏帧严重,MediaPlayer也不是个好东西,10.3以下的顶层遮盖问题,10.3以上取不到时间、状态(始终是Stop),所以要解决好几...原创 2019-01-19 18:56:49 · 1513 阅读 · 0 评论 -
Delphi实现DLL导出的Interface如何在其实语言中使用
首先说明在Delphi中实现一段小功能是非常快捷的,具体应用场景我就不编了,抽象点吧:type IOutIntf = interface function A(name: PAnsiChar): Integer; stdcall; procedure B; stdcall; end;在DLL中导出函数procedure GetImpl(out imp原创 2017-08-04 19:27:35 · 955 阅读 · 0 评论 -
Delphi之18位身份证号码验证
18位公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。组成:六位地址,八位生日,三位顺序码, 一位校验码。校验方法:(1)十七位数字本体码加权求和公式S = Sum(Ai * Wi), i = 0, … , 16 ,先对前17位数字的权求和Ai:表示第i位置上的身份证号码数字值Wi:表示第i位置上的加权因子Wi: 7 9 10 5 8翻译 2017-08-01 10:53:18 · 1667 阅读 · 0 评论 -
Delphi常用技巧
delphi常用技巧原创 2017-06-20 10:46:47 · 312 阅读 · 0 评论 -
比较两张图片的相似程序
直接使用ImageEn的源代码,如果是单独使用这一个功能又不想安装整个组件包的话unit CompareImage;interfaceuses Classes, SysUtils, Math, Graphics;function ConvertToBmp(img: TGraphic; W, H: Integer): TBitmap;function CompareImages原创 2014-01-28 10:14:06 · 1357 阅读 · 1 评论 -
delphi 获取Exe或DLL的文件版本信息
unit VersionInfo;{* 获取应用程序版本类单元 }interfaceuses Windows,Types,SysUtils,Dialogs;type TExeVersionInfo = class(TObject) private FHasVerInfo: Boolean; FProductName: string; FProductV翻译 2014-01-16 17:26:38 · 2100 阅读 · 0 评论 -
文本角度描述转角度数字
//例如:正北、东偏南35.3度。。。function Direction2Angle(txt: string): Double;const az: array [0..3] of string =('正北', '正东', '正南', '正西'); ap: array [0..3] of string =('北偏东', '东偏南', '南偏西', '西偏北');var I: I原创 2013-12-30 13:22:32 · 578 阅读 · 0 评论 -
Delphi下的Unicode编码及GBK编码
delphi xe下支持Unicode编码方式procedure TForm1.btn1Click(Sender: TObject);vars : string;s2: AnsiString;begin s := '你好'; s2 := s; Caption := s2;end;s dump $60 $4F $7D $59 s2 dump $C4 $E3原创 2013-05-10 17:52:34 · 3657 阅读 · 0 评论 -
Delphi用Indy10发邮件的单元,超简单
unit USendMail;interfaceuses SysUtils, Classes, IdSMTP, IdMessage, IdAttachmentFile;/// /// 邮件发送/// /// 邮件服务器主机 例如:smtp.qq.com/// 邮件服务器端口 默认:25/// 邮件用户名,需要加上xxxx@qq.com/// 邮件密码/// 邮件接收人,多原创 2013-01-06 15:21:39 · 2703 阅读 · 0 评论 -
Sunday字符串搜索算法Delphi实现
Sunday算法描述这玩意儿有人实现过,作为验证再稍微美化了一下:function PosEx(KeyStr, TextStr: string): Integer;var I: Integer; KeyLen, BuffLen: Integer; function Match(N: Integer): Boolean; var J: Integer; b原创 2012-08-08 16:51:10 · 718 阅读 · 1 评论 -
Delphi XE2下的MapX异常
升级到XE2后,以前项目中有MapX的部分也跟需要跟着升级,老办法:1、先用XE2重新生成OCX引用头文件(.TLB),去掉里面多余的Register项目,只保留TMap项。2、编译项目,成功无异常使用,发现主地图正常,但自绘的鹰眼图不正常,没有地图显示,显示的内容感觉是其它控件工作区的画图,开始怀疑是MapX的Handle有错误,多次替换调试后发现是DoubleBuffe原创 2012-08-07 16:34:53 · 783 阅读 · 0 评论 -
远程文件管理工具Win RFC
说实话现在的远程文件管理工具很多,什么RAdmin,VNC,TeamViewer等,功能都非常强大,强大到过分了,呵呵由于工作原因经常要上传文件到服务器,或下载同步到本地,FTP用不惯啊,终于下定决心自己搞一个远程文件管理器,要的就是简单、绿色,直接抄Radmin的风格了,个人使用而已客户端界面图:客户端登录界面:文件传输管理界面:使用方法也很简单,原创 2012-06-17 21:51:17 · 674 阅读 · 0 评论 -
delphi xe2 listview viewstyle bug
使用xe2时发现ListView切换ViewStyle时有问题,没有设置LargeImages和SmallImages,使用的系统图标,即:FSmallImages := SHGetFileInfo('C:\', { Do not localize } 0, FileInfo, SizeOf(FileInfo), SHGFI_SYSICONINDEX or SHGFI_SMALLIC原创 2012-06-11 19:44:20 · 1279 阅读 · 0 评论 -
实现RemObject Hydra实现插件库注意要点
一、控制模块每个插件库(DLL)都要有且只有一个控制模块,取名就叫ModuleController就行了。二、不可视插件用向导生成,最关键的是名字,例如下面代码中字符串部分就是插件名字,生成插件实例时用的: THYPluginFactory.Create(HInstance, 'HYNonVisualPlugin2', Create_HYNonVisualPlugin2, THYN原创 2014-02-20 18:11:32 · 1579 阅读 · 0 评论 -
Delphi与C#互操作之Hydra
参考Hydra for Delphi\Samples\Delphi WPF下的Delphi主程序+C# WPF类库的模式:1、在C#中生成一个interface要带GUID的哪种,如示例中这样[Guid("8032a51c-5961-41f5-9582-c77d98ea4d93")] public interface IVisualizerControl : IHYCrossPla原创 2014-03-15 13:42:57 · 1382 阅读 · 1 评论 -
关于Ansi版Delphi剪切板中文乱码的问题
Clipboard处理中文时乱码的方法,将处理格式的CF_TEXT改为CF_UNICODETEXT,即用UnicodeString方式替代AnsiString方式原创 2017-03-10 10:25:54 · 1764 阅读 · 2 评论 -
Delphi版本号对照
Delphi版本号对照转载 2017-01-19 15:32:31 · 333 阅读 · 0 评论 -
数学家的情书-笛卡尔的心型线方程
看过很多遍这个故事,写段代码验证一下:var O: Integer; r, a: Single; sx, sy, x, y: Integer;begin sx := 250; sy := 250; Canvas.Pen.Color := clBlack; Canvas.MoveTo(0, sy); Canvas.LineTo(width, sy); Canva原创 2016-11-14 22:46:25 · 8494 阅读 · 0 评论 -
Delphi 2006语言新特性
type //非引用,可直接赋值,Record不可继承,Object可继承 TRecord = record{object} const //定义了常量后影响Ctrl+Shift+C自动完成 TA: Integer = 0; Length: Integer = 3; private FA: Integer; FB: Integer;原创 2016-12-30 11:57:24 · 329 阅读 · 0 评论 -
delphi 三目运算符
Delphi当然没有三目运算符,至于Math.pas和StrUtils.pas中的IfThen也不算好用,下面介绍一个简单的写法例如:int a = true ? 35 : 8;改成Delphi:a := Ord(True) * (35 - 8) + 8;原创 2017-01-03 18:22:47 · 4462 阅读 · 0 评论 -
DirextX9之2D编程 通过16位色位图创建背景透明的纹理
通过16位色位图创建背景透明的纹理原创 2016-10-23 17:49:27 · 1693 阅读 · 0 评论