Delphi
文章平均质量分 63
董小尾
代码上瘾
展开
-
让Delphi成为你私有的版本库
【分享V11.3.29.03】让Delphi成为你私有的版本库今天研究代码的时候,一不小心复制错了一段代码,并且顺手保存了【看来这个习惯有时候也会带来麻烦】,可是现在撤销操作已经不管用了,也就是回不到原始的代码了。摸索的道路是曲折的,前途是光明的。终于发现了delphi非常人性话的一个功能。 其实在项目目录中的那个隐藏的文件夹,将在这个时刻起到关键的作用。因为它记录了你每保存一次的代码版本。 下面主要通过图片进行讲解。 首先在底部标签中的code.,design以及History中选择Hi原创 2011-05-19 20:14:00 · 884 阅读 · 0 评论 -
Firemonkey的旁门左道[三]
上次我们发现了 GlobalUseGPUCanvas 当GlobalUseGPUCanvas := True; 可以没有抗锯齿化,我们这次来对比一下效果。 左侧是开启的效果,右侧则是没有开启原创 2013-08-14 21:41:00 · 5954 阅读 · 0 评论 -
Firemonkey的旁门左道[五]
这次讲讲绘制的几种模式吧,不过还是比较浅显,刚接触不久,还实在没这个实力道出个所以来。FMX下,我们可以切换GDI,D2D,GPU这三种模式,只要通过全局变量就可以轻松搞定。如何设置GlobalUseDirect2D :=False, 那么将采用GDI的模式进行绘制。通过调试模式我们可以知道当前的Canvas的状态其他的以此类推,如果在某种模式下出现bug,可以原创 2013-08-14 22:37:36 · 2459 阅读 · 0 评论 -
Firemonkey的旁门左道[一]
一般图形绘制都会用到双缓冲,先在内存中绘制到bitmap中,然后再输出到界面中,可以不出现闪烁的情况。本以为在FMX也是同样的套路。不然,发现Canvas永远是空白的,愣是不输出。国内资料基本为O,翻墙无数,得知Bitmap的绘制前后需要: Canvas.BeginScene(); ... Canvas.EndScene;在此之后需要Bitm原创 2013-08-14 21:19:22 · 3755 阅读 · 0 评论 -
Firemonkey的旁门左道[四]
做开发,就是发现问题,解决问题,又发现问题...周而复始的循环下面又应该是Firemonkey下的bug。官方文档中描述:Using the FireMonkey TMenuBar's OSMenu Property to Place Your Main Menu for Windows and Mac。But, 在XE4中 根本找不到OSMenu这个属性。测试后发现,原创 2013-08-14 22:16:33 · 2605 阅读 · 0 评论 -
Firemonkey的旁门左道[六]
今天还是讲讲和图形有关的事情,这次的难度再增加些,不是直接改源代码了,而是通过RTTI的方式去让定制我们需要的功能。从Bitmap的源代码中,我们可以看到FPixelFormat的属性是私有的,也就是我们无法动态的去改变。明明有十几种PixelFormat形式,又不能去设置,难道又是bug?通过RTTI,我们可以很实习它的修改。我们先自己定义一个继承自TBitmap的类原创 2013-08-15 22:45:55 · 2167 阅读 · 0 评论 -
Firemonkey的旁门左道[七]
Bitmap中像素点的获取与设置原创 2013-08-16 22:54:57 · 3611 阅读 · 0 评论 -
Firemonkey的旁门左道[八]
canvas锯齿化的设置原创 2013-08-16 23:13:29 · 3276 阅读 · 0 评论 -
Dcef3与Flash有关的两个问题以及解决方式
1、dcef3需要对应的pepflashplayer.dll的版本,建议用14.0的就可以,如果大版本是16.0的话,那么就会提示can't load plugin ,其他版本没测试2、虽然正常加载了flash插件,但是有时候你会发现网页中的flash不会显示,也不会提示你让你安装flash。这个问题追踪了一下午,通过排除法基本定位到了问题,对于消息或者其他一些逻辑的处理一定要放到 Cef原创 2015-03-25 16:53:53 · 2943 阅读 · 0 评论 -
追查dll在server2003中,无法加载的问题
release的程序发布在win7,xp等操作系统上(32 or 64)均可以正常运行,唯独发现在server2003 64位的机器上无法启动,直接报av00000000的错误。因为没法在这个环境上直接调试,通过日志定位到的是调用dll的导出函数是出现的问题。后来一想av0000000是空指针访问的异常类型,难道是dll没加载上?于是在正常机器上把加载dll的路径改成一个错误的文件路径原创 2015-05-13 21:14:08 · 1523 阅读 · 0 评论 -
Firemonkey的旁门左道[二]
上一篇我们讲到了利用双缓冲的方式进行图形绘制,这是在Win下一般的套路。可是移植在Mac OS下,竟然出现了意外?!依旧是不能显示。几经摸索,终于找到了一种解决方案,在单元末加了initialization GlobalUseGPUCanvas := True; //直接利用GPU绘制两个平台都输出了,而且是没有抗锯齿的效果(原创 2013-08-14 21:34:20 · 3006 阅读 · 0 评论 -
Firemonkey的旁门左道[前言]
回家补上这一系列,为delphi 做点贡献原创 2013-08-05 12:15:50 · 1271 阅读 · 0 评论 -
动态加载和动态注册类技术的深入探索
Delphi的包是Delphi IDE的核心技术,没有包也就没有了Delphi的可视化编程。包也可以用在我们开发的项目中,其好处是可以代码共享,减小工程尺寸,单纯通过替换包文件就能实现工程的升级和补丁。但是我们要加载包,就要知道包中已经存在的类。关于如何动态加载包的资料比比皆是我就不想就此问题讨论了。但是Delphi的IDE很是特殊,它无需事先知道你的包有哪些类就能注册组建,创建组建。但是Borl转载 2012-02-15 11:07:38 · 1515 阅读 · 0 评论 -
字符串驱动技术—— MethodAddress , MethodName , ObjectInvoke
首先看一段Delphi帮助中的介绍(After Delphi 6 ):Returns the address of a published method.class function MethodAddress(const Name: ShortString): Pointer;DescriptionMethodAddress is used internally转载 2012-02-17 11:46:56 · 2329 阅读 · 0 评论 -
TStringList的Find(慎用),IndexOf和Sort
别人的代码,导致了一个偶现的bug, 调试了一天,看了下文,才恍然大悟。 无证程序员们坑人呢, 我躺着也中枪了 ===========================http://www.cnblogs.com/monkeyking/articles/234685.html前几日工作很累,写代码时也有点心猿意马了,看到TStringList.Find便毫不犹豫地使用它在转载 2012-04-28 17:21:21 · 3869 阅读 · 0 评论 -
DHTMLEdit控件的安装
xp中自带了DHTMLEdit.ocx, 所以只需安装即可 但是可视化设计面板中没有这个控件,需要我们手动安装一下具体方式:【import AcitveX control 在控件板上的安装】一、先新建一个Package, 二、再在Component->Import Component里面添加好ActiveX控件。 之后不要选Create Unit,要选原创 2012-05-28 10:33:07 · 2806 阅读 · 1 评论 -
win7中delphi与svn冲突的解决(system exception (code 0xc0000008) at 0x7c91e4ff)
问题昨天更新了代码,小组成员均可正常运行程序。而lt下载了源码运行程序,可是“打开XX”功能一点击,程序就崩溃了。异常也并非来自的程序本身而是系统的异常。异常类似如下图:他的基本情况:win7系统,svn较早版本,delphi2007,之前一切正常,下载的代码都能运行。只有昨晚更新svn代码时出现了异常(没有留意,具体信息已无法复述),原创 2012-06-29 19:27:51 · 3069 阅读 · 0 评论 -
Win7和Vista的安全机制对于应用程序读取配置文件相关操作的影响
今天构造了一个新版本的XXXX软件,并且在纯净的系统下进行了较为全面的测试。测试中也发现了一些问题。其中包括在Win7测试时程序竟然在另一个目录中创建了文件夹和配置文件,并且进行相关读取操作,却并没有在指定的路径(程序的安装目录)中进行操作。于是对这个问题进行了多次测试发现,这个Win7或者Vista的安全机制相关。 一般在win7系原创 2012-06-29 19:22:36 · 2084 阅读 · 0 评论 -
IObjectSafety接口
都说ActiveX危险,那么为什么XmlHttpRequest以及MediaPlayer都是用ActiveX的方式创建的,却没有问题?原来,这是因为这些ActiveX组件都声明自己是脚本安全的,而IE的中级安全设置上,是允许脚本安全的ActiveX创建,并且不予警告的。IE怎么知道一个插件是脚本安全的?它是通过以下两个办法。一是查询ActiveX组件是否实现了IObjectSafety接口,并且返原创 2013-04-24 19:28:09 · 1433 阅读 · 0 评论 -
初涉Delphi Socket编程
不是第一次接触socket编程了,但以前都是看别人的依葫芦画瓢,也不知道具体的原理。新的项目,有了新的开始,同时也需要有新的认识。Delphi 中带有两套TCP Socket组件: Indy Socket组件(IdTCPClient和IdTCPServer)和Delphi原生的TCP Socket组件(ClientSocket和ServerSocket),原创 2013-07-09 11:13:10 · 1867 阅读 · 0 评论 -
Win8 64位 安装 Delphi5
实践证明:可行,好用! 因为项目需要开始玩起了D5,仿佛一下子从现代文明跑到了古代, 不过D5曾经也是红极一时,培养了一大批牛人 安装的时候 1、需要把安装镜像解压到某个盘符的根目录下,否则安装过程中会因为找不到某些文件而报错(木有截图),光盘安装的另说。 2、找到安装入口exe, 右键选择管理员身份运行,最好关闭360,如果有的话。 在选原创 2013-07-02 19:15:57 · 4047 阅读 · 1 评论 -
Bitmap Style Designer非官方说明
Bitmap Style DesignerBitmap Style Designer给我的第一印象就是简陋,估计也是为了赶工。大致体会了一下,还是能够使用。因为目前没有对此有比较详细的中文资料,就把自己的使用心得总结一下。Bitmap Style Designer对于VCL Style的支持相对还是比较不错的, 可以新建,可以打开,可以编辑。而对于Firemonkey Style就显得原创 2013-07-18 16:04:55 · 3280 阅读 · 0 评论 -
Delphi的QualityCentral
DelphiXE 出来了,虽然功能很强大,但是问题也很多群里的几个大牛讨论他们提交的bug 都一直被open着,气氛显得非常的消极……现在谁得希望 英巴卡迪若能否推迟稳定的XE系统,好让我们这群屌丝可以有活干!言归正传,我才得知安装目录中还有QualityCentral这个工具。登录后,可以提交发现的bug,同时也能获取别人提交的bug情况。原创 2013-07-05 15:48:03 · 958 阅读 · 0 评论 -
Delphi基本类型--枚举 子界 集合 数组
枚举类型 Pascal程序不仅用于数值处理,还更广泛地用于处理非数值的数据。例如,性别、月份、星期几、颜色、单位名、学历、职业等。 1、枚举类型的定义 格式: type 枚举类型标识符=(标识符1,标识符2,…,标识符n)2、枚举类型数据特点① 枚举元素只能是标识符;例如,下列类型定义是合法的: type days=(sun,mon,tue,wed,thu原创 2013-07-03 10:37:56 · 9853 阅读 · 0 评论 -
Indy TIdTCPClient伪非阻塞式的解决方案
Indy是阻塞式Socekt,通过线程的方式,我们可以避免程序被阻塞。平时在开发中,是直接用的同步模式,在线程中进行一问,一答的交互。但是这就遇到了一个问题,就是服务器没有立马响应,我们的程序就出现readtimeout异常。这个时候就采用异步阻塞模式。发送和接受不再是成对的了。首先连接是服务器:procedure TForm1.btnloginClick(原创 2015-07-02 17:32:01 · 8123 阅读 · 2 评论