-
近期文章
- Android,保活,复活,防杀 2020 年 12 月 1 日
- Managed Record的使用一则 2020 年 9 月 9 日
- Delphi Managed Record的一个不方便的地方 2020 年 9 月 7 日
- Delphi10.4托管记录(Managed Record)产生的机器代码分析 2020 年 6 月 3 日
- Delphi 10.4 的期待和不足 2020 年 5 月 29 日
- CPP各个操作系统和平台的宏定义 2018 年 3 月 14 日
- 跨平台的,在FMX中读取ICON文件的每一帧到Bitmap 2017 年 4 月 19 日
- 关闭掉新版Delphi的几个固定导出函数(__dbk_fcall_wrapper,dbkFCallWrapperAddr,TMethodImplementationIntercept) 2017 年 4 月 7 日
- FireMonkey在使用GDIPlus放大图像的Bug的修复 2017 年 2 月 24 日
- FireMonkey GIF处理的更新 2016 年 12 月 7 日
- FireMonkey跨平台的GIF解决方案 2016 年 12 月 2 日
- VC版本的MakeObjectInstance把WNDPROC映射到类的成员函数 2016 年 2 月 17 日
- Cocos2d-x程序Windows下VC中文乱码的解决 2014 年 9 月 16 日
- Delphi结构体的扩展,可以自动初始化,反初始化,自定义拷贝函数. 2014 年 9 月 4 日
- HTML解析器更新 2014 年 6 月 18 日
分类目录
文章归档
链接表
近期评论
- 红鱼儿发表在《Android,保活,复活,防杀》
- svaty 7发表在《Delphi读取Android设备联系人.DelphiXE6中编译通过》
- svaty 7发表在《给Delphi的工具条按钮添加BTNS_WHOLEDROPDOWN风格》
- svaty 7发表在《跨平台的,在FMX中读取ICON文件的每一帧到Bitmap》
- svaty 7发表在《Delphi2007以后编译器进步的简单测试》
- svaty 7发表在《Delphi Hook Library做了一点小更新》
- svaty 7发表在《XE5开发Android程序调用电话相关功能(短信息和电话)》
- svaty 7发表在《Delphi XE5的移动项目中对象已经是生存期自管理的了》
- svaty 7发表在《共享一个之前封装的多进程共享内存的MemoryStream》
- svaty 7发表在《Delphi XE5中移动平台的字符串要注意的事项》
月归档:2012年09月
关掉64位系统中32位程序的目录重定向
在64位Windows系统中运行的32位程序会被系统欺骗.
例如windows\system32的目录实际是windows\syswow64目录的映射.
program files实际是program files(x86)的映射.
注册表的hkey_local_machine\so[......]
判断当前进程是否以管理员权限启动的
[code lang="delphi"]
uses
shlobj;
type
WELL_KNOWN_SID_TYPE = (
WinNullSid,
WinWorldSid,
WinLocalSid,
WinCreatorOwnerSid,
WinCreator[......]
DelphiXE3的FireMonkey的体积我实在无语了.
建立一个空的FireMonkey的HD工程,就一个主窗口.
编译出来Debug版20MB多.Release版8MB多.
不知道功能和速度上怎么样.不然实在找不到亮点啊
PNG分割
Delphi新版本虽然集成了PngImage但是分割复制什么的却非常难用.稍微封装了一下.可以把一张PNG横向分割成N张.透明通道什么的都可以保持不变.
[code lang="delphi"]
//2013.7.22代码做了改动,变成按行和列切割.CopyPng也做了处理,可以拷贝任意区域[......]
C++的MemoryStream,和Delphi/BCB基本兼容
只有一个头文件.
[code lang="cpp"]/*
CMemoryStream
学过Delphi和BCB的同学懂的.
只要引用这个头文件即可.
*/
#pragma once
#include <Windows.h>[......]
C++内存INI文件
这套代码适用于从服务器拉取INI,而不用保存到文件,而且是跨平台的.支持Unicode和Ansi.
而Windows 那套INI API先不说和平台绑死,他一定要访问文件的.
[code lang="cpp"]/*
王锐.2012.8.31
*/
#pragma onc[......]
FireMonkey工程减肥
今天和同事在搞一个Delphi XE2的东东.结果发现FireMonkey编译出来的程序有8MB.即便采用了Release + WeakRTTI编译选项也3.5MB左右.
阅读了一下FireMonkey的源代码.发现FireMonkey耦合的非常紧密.
例如Forms单元,就实现了2D,[......]
内存加载模块,支持32/64 DLL文件
http://blog.csdn.net/wr960204/article/details/2134157
上几天有人说找遍互联网也找不到内存加载模块能够成功加载DelphiXE2编译出来的的64位DLL的.
看了一下,其实DelphiXE2编译出来的DLL本身是没问题的,而是这些内存加[......]
Win7下超级管理员创建普通权限任务
转自我的旧博客
已转至新的博客 http://www.raysoftware点击打开链接.cn/?p=49
项目中用到一个功能,Win7下超级管理员创建普通权限任务.
试了几种办法,例如获取资源管理器的Token,然后以这个Token用CreateProcessWithTokenW[......]
Delphi磁性窗口
转自我的旧博客
昨天要用到磁性窗口,就是两个窗口离得近到一个距离就吸附到一起.拖动主窗口,吸附窗体一块运动.
到网上搜了一下,基本没见到可以使用的.有个东东,还是收费的.没办法自己写了一个.
用法很简单,把你的窗口都改成从这个继承即可生效.例如
type
TForm[......]
一个灵巧的Delphi多播实事件现方案.
转自我的旧博客
一个灵巧的Delphi多播实现方案.必须是支持泛型的Delphi版本.也就是Delphi2009以后.强烈建议用DelphiXE.
用法就是例如写一个Class指定一个Event,触发的时候会通知多个Method.和.NET的多播事件机制是一样的.
用法例如:[......]
给Delphi的工具条按钮添加BTNS_WHOLEDROPDOWN风格
转自我的旧博客
工具条按钮的BTNS_WHOLEDROPDOWN风格是IE5以后就提供的.
Delphi早期版本估计是为了照顾兼容性工具条按钮是没有这个风格的.只有下面几种和系统风格对应的风格.
TToolButtonStyle = (tbsButton, tbsCheck[......]
一个可以再WIN2000及以上操作系统使用的GetTickCount64
转自我的旧博客
以后尽量用Delphi/C++双代码写.
GetTickCount返回值是整数,这样的话最多49天多就会复位重新从0开始.Vista以后提供了GetTickCount64这个函数, 但是WindowsXP还是主流.在项目中为了处理这个,自己实现了一套办法.这个GetTic[......]
Delphi的Anymouse方法探秘
转自我的旧博客
这段时间换工作.加之身体不太好.总是感冒和喉咙发炎.就整天躺在家里等待面试电话.刚好有了点时间能看看Delphi的一些新东西
自从Delphi2009以后增加了一种匿名方法.
通过反汇编跟踪发现是编译器利用插入接口,类,对象来实现的.
Delphi2010刚好有R[......]
一个最简单的Delphi2010的PNG异形窗口方法
转自我的旧博客
同事演示了一个.NET的的PNG异形窗口.挺漂亮.于是也想用Delphi显摆一个.
关于Delphi用PNG做异形窗口的资料有不少.都是用GDIPlus或者TPNGImage组件加载PNG图像做的.但是我很懒,不想引用的GDIPlus,也不想去找PNGImage下载.[......]
Windows CE,Windows Mobile在PC端的操作.
转自我的旧博客
上一段做WindowsCE上的工作.翻译,包装了微软的RAPI和dccManSink等.
可以感知嵌入社设备的插拔.可以操作嵌入式设备上的注册表.文件,数据库等等.
发出来算是给Delphi社区做个贡献
下面贴出的是三个单元的代码.也可以在CSDN下载.里面包含例[......]
Delphi2010的RTTI增强
转自我的旧博客
Delphi编译的文件体积增大了很多.很大一部分原因是因为Delphi2010默认提供了全信息的RTTI.
每一个数据类型都有全部运行时信息.例如可以在运行时获得结构体的成员以及成员类型等.
这个功能带来的方便就是我们可以写很多通用的序列化方法.也可以做一些类似OR的东[......]
Delphi2010中Windows7新的taskbar功能的使用
转自我的旧博客
Windows7正式版已经用了很久了.MSDN上面正式版Windows7已经发布很久了.
发现Windows7的TaskBar很漂亮.也有很多功能.例如IE下载的时候可以看到进度,可以叠加图标等等特效.
Delphi2010也发布很久了,Delphi2010号称支持Wind[......]
再探Delphi2010 Class的构造和析构顺序.
转自我的旧博客
发了上一篇博客.盒子上有朋友认为Class的构造和析构延迟加载.是在Unit的初始化后调用的Class的构造.在Unit的反初始化前调用的Class的析构函数.
为了证明一下我又做了个试验
unit Unit2;
interface
Type[......]
Delphi2010新发现-类的构造和析构函数功能
转自我的旧博客
Delphi2010发布了.
虽然凭着对Delphi的热爱第一时间就安装了,但是现在可能是年纪大了,对新事物缺乏兴趣了.一直都没有仔细研究.
今天有点时间试了一下新功能.
本来C#和Delphi.NET是支持类的构造函数/析构函数的(注意不是实例的构造[......]
获取进程的命令行参数
转自我的旧博客
type
UNICODE_STRING = packed record
Length: Word;
MaximumLength: Word;
Buffer: PWideChar;
end;
PUNICODE_STRING = UNIC[......]
集合和字符串的转换
转自我的旧博客
?在DFW上回答了一个问题.写了些代码.为了以后用贴到这里
uses
TypInfo;
type
TSetDemo = set of(S1, S2, S3, S4);
procedure StrToSet(TypeInfo: PTypeInfo;[......]
构造一个通用的回调Thunk.(把回调函数指向对象的方法的办法)
构造一个通用的回调Thunk.(把回调函数指向对象的方法的办法)
转自我的旧博客
构造一个通用的回调Thunk.(把回调函数指向对象的方法)
最近又看到了VCL代码中的MakeObjectInstance函数,实际上是一段WndProc的Thunk代码.再一次感叹VCL设计之精巧,[......]
18位身份证号码的校验
转自我的旧博客
18位公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。
组成:六位地址,八位生日,三位顺序码, 一位校验码。校验方法:
(1)十七位数字本体码加权求和公式
S = Sum(Ai * Wi), i = 0, … , 16 ,先对前17位数字的权求和
Ai[......]
(1)十七位数字本体码加权求和公式
S = Sum(Ai * Wi), i = 0, … , 16 ,先对前17位数字的权求和
Ai[......]
像Delphi IDE一样运行时设计控件IDesignerNotify, IDesignerHook的实现
转自我的旧博客
前几日有个朋友问我Delphi的TCustomForm的Designer是怎么实现的.
以前研究过这个.于是花了一个上午写了代码给他.代码如下.
想要设计窗口的时候直接调用一下BeginDesign函数.结束设计调用一下EndDesign就行了.
2013[......]
Delphi是最适合编写ShellCode的工具
本文是写给经常写ShellCode或者给PE文件添加代码的人的.
题目这样写有点不精确.不过Borland的编译器确实是算得上最适合编写ShellCode工具.
编写ShellCode的朋友们知道.字符串常量应该是处理起来非常麻烦.
例如:
调用GetProcAddress函数吧.参数有一个[......]