摘要: 点击这里查看列表 阅读全文
posted @ 2009-05-05 16:36 Sephil 阅读(1199) 评论(1) 推荐(0) 编辑
摘要: 啥叫倍数的向上取整与向下取整呢? 举个例子,你有一个函数,用来分配一块内存,为了提高运行速度,要对内存大小进行对齐。 function NewMemBlock(const BlockSize, AlignSize: Integer): Pointer; var NewSize: Integer; b 阅读全文
posted @ 2020-02-09 17:58 Sephil 阅读(1219) 评论(0) 推荐(0) 编辑
摘要: 基于 WTL90_4060仅汉化了Windows部分,CE和Mobile未汉化AppWizard和rc文件已全部汉化如果不需要汉化则将所有的2052目录删除即可如有问题可以给我留言点我下载 阅读全文
posted @ 2014-03-20 10:47 Sephil 阅读(465) 评论(0) 推荐(0) 编辑
摘要: 我经常会用 Delphi 写一些工具和应用,为了扩展方便,大部分都会做成插件形式。迫于某些原因,我的插件不得不用其他开发工具来完成,比如 VC。于是有个大问题需要解决:如何让 D 和 VC 互相通信、互相操作。最普遍的做法,无非是定义一些方法,VC 写 Dll 导出这些方法,D 载入 Dll 调用。但问题是稍大点规模的应用,这种方式非常麻烦,也不够直观。于是花了点时间研究 D 和 VC 之间共享接口和对象的一些方法,现将要点共享发布出来,希望对大家有用。基础事项:在 D 和 VC 中,要共享的接口、对象中的方法的调用约定必须为 stdcall1. class 的 使用Delphi 和 VC . 阅读全文
posted @ 2012-11-18 01:15 Sephil 阅读(2360) 评论(7) 推荐(1) 编辑
摘要: 前天想写个泛型类,用来保存类类型(如TClass、TComponentClass之类)但是DelphiXE的泛型约束不支持TClassTClassList<T: TClass> 将会得到编译错误因此我只能去掉约束条件 TClassList<T>但是这样又有个问题,即 T 类型不明确,无法用 Assigned(T) 或 T <> nil 来判断值是否为空后来想了个办法绕过了这个问题,详见代码procedureTClassList<T>.Register(constADisplayName:string;AClass:T);varP:Pointer; 阅读全文
posted @ 2012-09-06 10:50 Sephil 阅读(889) 评论(0) 推荐(0) 编辑
摘要: 我喜欢在百度上搜索和下载音乐,不过下载太麻烦了,得点好几下 于是周末在家写了这个小工具,希望大家能用得上(带源码) 阅读全文
posted @ 2012-06-25 12:41 Sephil 阅读(1982) 评论(14) 推荐(2) 编辑
摘要: 上次说到我想为DirectUI增加脚本支持,今天我们就来研究下脚本的实现问题。虽然现在有了诸如AntLR、GOLD Parser、TP Lex and Yacc等等CC工具,大大方便了脚本引擎的开发,但我仍然觉得在这个框架里自己实现一套脚本引擎是件毫无意义的事。所以我决定使用现有的脚本引擎。事实上Delphi可用的第三方脚本引擎很多,这里列几个常见的:FastScript号称最快的Delphi脚本引擎,支持 VB、JS、Cpp、Pascal 语法,可以在脚本中使用自定义的类型和对象,内置了对Delphi VCL的支持。ifps/RemObjects PascalScript使用Pascal语法 阅读全文
posted @ 2012-02-23 19:35 Sephil 阅读(11650) 评论(5) 推荐(4) 编辑
摘要: 工作需要开发的一套插件框架,给应用程序提供灵活的插件支持,基于Dll / Interface实现。先上个图这是个标准的基于插件的应用,下拉框里的就是由5个插件Dll提供的功能。主程序中定义了一个接口,而插件Dll则提供这个接口的实现。使用也很简单,在窗口上放置一个TExtensionManager组件,设置一下插件的读取路径就可以了。框架中有3个重要概念,ServiceHost,Module(模块)和扩展(Extension)1.ServiceHost是整个框架的灵魂,不管是主程序中还是插件中,都通过他来查询和使用其他的插件对象。下面是一段使用示例代码: (ServiceHost as ILo 阅读全文
posted @ 2012-02-22 23:52 Sephil 阅读(4016) 评论(7) 推荐(0) 编辑
摘要: 最近公司开发的几个软件都需要支持皮肤,因此花了半个月做了一套皮肤引擎,也就是所谓的Direct UI,即控件都是画在窗体上的,只有容器窗体是有实际句柄的,子控件并非标准的Window。说说这套引擎的几个特性绘制效率尚可,至少图片很多时也没有发现有闪烁;支持的常用图片格式(BMP/JPG/PNG/GIF/ICON等),并支持图片透明;图片延迟载入,避免占用内存资源;皮肤支持多种存储格式,如ZIP打包、EXE内嵌资源等,要扩充新的格式也很方便;容器基于Delphi的TWinControl,例如你在窗口上放置一个Panel,只在这个Panel里使用皮肤;支持同时使用多个皮肤,比如Form1用一种皮肤 阅读全文
posted @ 2012-02-22 23:29 Sephil 阅读(6925) 评论(4) 推荐(0) 编辑
摘要: 今天用VC写工具的时候用到CListView,并且ListCtrl的第一列需要自动拉伸,以占满空白区域Delphi做这个设置是很容易的,只要将Column的AutoSize设置为True就可以了不过VC/SDK的AutoSize其实是根据Item的文本长度来自动设置Column Width,跟我的要求不符,只好自己实现了其实很简单,就是觉得麻烦...voidCMyView::AdjustColumnWidth(){RECTrc;CListCtrl&list=GetListCtrl();CHeaderCtrl*pHeader=list.GetHeaderCtrl();if(!pHeade 阅读全文
posted @ 2011-04-03 13:52 Sephil 阅读(3499) 评论(0) 推荐(0) 编辑
摘要: 今天在写个工具,功能是将一些数据写到磁盘的绝对扇区上.但是发现ReadFile没问题,可是WriteFile总是报87错误(参数不正确).Google上查了一会,发现碰到问题的人不少,可惜没有正确答案....没辙,还是啃MSDN,终于还是自己解决了~呵呵赶紧记下来,免得忘了...其实主要是写入的数据大小,必须是BytesOfSector大小的倍数,一般是512字节,ReadFile却无所谓...另外,MSDN上还说,WriteFile前最好先用FSCTL_LOCK_VOLUME或者FSCTL_DISMOUNT_VOLUME将磁盘锁定或卸载,不过我试下来好像没什么影响...代码摘录如下:1UIN 阅读全文
posted @ 2011-03-18 18:18 Sephil 阅读(2367) 评论(1) 推荐(1) 编辑