-
近期文章
- 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 日
分类目录
文章归档
链接表
近期评论
- tiktok发表在《Delphi循环移位操作》
- tiktok发表在《FireMonkey在使用GDIPlus放大图像的Bug的修复》
- tiktok发表在《Delphi写ShellCode获取Kernel32.DLL的地址.》
- tiktok发表在《跨平台的Html解析代码,甩掉包袱的选择》
- tiktok发表在《Delphi2010的RTTI增强》
- tiktok发表在《Android的路径信息》
- tik tok发表在《Delphi读取Android设备联系人.DelphiXE6中编译通过》
- tik tok发表在《给Delphi的工具条按钮添加BTNS_WHOLEDROPDOWN风格》
- tik tok发表在《跨平台的,在FMX中读取ICON文件的每一帧到Bitmap》
- tik tok发表在《Delphi2007以后编译器进步的简单测试》
分类目录归档:未分类
跨平台的,在FMX中读取ICON文件的每一帧到Bitmap
昨天在使用FreeImage的时候发现FreeImage对ICON的处理有问题,32位的帧读出来的背景居然是黑的。我猜应该是32位没有And的Mask数据。而它按照24位以下的处理方式把Alpha值填成255了。
只能自己动手写代码,也不复杂,算上把Windows单元抽出来声明的结构体,也就3[......]
关闭掉新版Delphi的几个固定导出函数(__dbk_fcall_wrapper,dbkFCallWrapperAddr,TMethodImplementationIntercept)
不知道从什么时候起Delphi编译的PE文件总是三个固定的导出函数。
一方面有强迫症的同学们会不爽,另一方面其实是不安全的。
这三个函数是:__dbk_fcall_wrapper,dbkFCallWrapperAddr,TMethodImplementationIntercept[......]
FireMonkey在使用GDIPlus放大图像的Bug的修复
Delphi10.2中FireMonkey中GDIPlus放大图片的Bug,不知道从哪个版本开始的,还是一直都这样。
新建一个FireMonkey工程,窗口上放一个Image控件,WrapMode设置为Stretch,表示随控件大小缩放。指定一张小图。
默认使用D2D的时候放大没问题[......]
Cocos2d-x程序Windows下VC中文乱码的解决
Cocos2d-x默认字符串常量编码都是UTF8的,而Windows中的VC默认都是跟系统相同,比如简体Windows是GB2312或者GBK.繁体就是BIG5编码.
而我们大多数中国人用VC编译出来的字符串常量也就是GBK编码的字符串.
在Cocos2d-x界面上绘制的时候它是不知道的,只会认[......]
Delphi结构体的扩展,可以自动初始化,反初始化,自定义拷贝函数.
恭贺Delphi XE7诞生,Delphi XE7在编译器内部集成了我之前所实现的动态数组扩展.http://www.raysoftware.cn/?p=278
现在有一个更悠久的历史需求,在QC的Delphi板块上置顶了好多年.官方一直没有实现.
http://qc.embarcadero.c[......]
HTML解析器更新
增加了兼容性.
对于非标准的HTML做法,Tag中的符号没有转义做了兼容.
HtmlParser
或者
http://code.google.com/p/delphi-html-parser/
Delphi读取Android设备联系人.DelphiXE6中编译通过
和某牛讨论Delphi读Android联系人.写了如下代码
[code language="delphi"]
uses
FMX.Helpers.Android,
Androidapi.JNI.JavaTypes, Androidapi.JNI.GraphicsContentViewT[......]
Delphi循环移位操作
如果在X86计算机上很简单,直接内嵌汇编ror和rol指令就是循环移位.
但是如果在Android的平台上,asm关键字是无效的.
只能自己实现.
function ror(const Value: DWORD; ShiftValue: Byte): DWORD; overload;
b[......]
Delphi XE5开发Android程序使用自定义字体文件.
最近在做一个电子书阅读器的Android小程序来验证Delphi XE5的移动开发功能.
万事大吉,只欠根据字体文件(.ttf文件)切换阅读字体,通常Android系统只带三种以下字体.一般用Java/Eclipse开发的话比较简单,typeface的createFromAsset,createF[......]
Delphi移动平台上生存期自管理一些问题的避免
今天和Delphi高手刘麻子讨论了一下移动平台上生存期自管理容易导致的一些问题.有几点体会
在移动平台上Delphi的对象是生存期自管理的,这和早期版本和现有的PC版本有很大不同.
大部分时间我们原来的代码不会有问题.我们原来的手动释放代码在移动平台也不会有问题,因为TObject.Free[......]
跨平台的Html解析代码,甩掉包袱的选择
跨平台的Html解析代码
当时写了这个Html解析,可以跨Windows,MacOSX的平台.但是随着Delphi XE5的发布,发现这个代码在Android平台不能用了,因为Delphi在移动平台上的字符串字符索引下标变成0了,带来了很多问题.
于是把这个HTML解析器重写了一个版本,放弃对D[......]
关于DelphiXE5如何获取Android手机SIM卡串号
手机号不是存在SIM卡上的,SIM卡只有一个串号.
在运营商的服务器上有手机号和序号对应的一张表.所以你SIM卡办理遗失,运营商只要把新SIM卡的串号和你原来的手机号绑定即可.
获取手机号的唯一办法是收个短信,短信里面有你的手机号码.所以很多程序为了获取手机号会要求你注册时发短信,然后它给你[......]
Delphi新语法和ifthen的扩展联想.
看看Delphi重载了多少个ifthen函数.
Math单元
function IfThen(AValue: Boolean; const ATrue: Integer; const AFalse: Integer = 0): Integer; overload; inline;
functi[......]
Android的路径信息
刚好有个朋友问Android中怎么获取安装路径.
Delphi早就把IO相关的都提取到System.IoUtils单元中了.
路径操作就使用TPath的方法都很方便.
uses
System.IoUtils
TPath.GetTempPath//临时目录
TPath.GetCam[......]
XE5开发Android程序调用电话相关功能(短信息和电话)
其实都可以通过intent和URI调用系统功能.Windows程序员可以理解成是ShellExecute.这个是万金油.可以有调用各种功能.后面会介绍.
1.短信息.很简单
方法a.不使用Intent而是直接发短信.
smsManager对应的Delphi代码应该是:
[code[......]
Delphi XE5中移动平台的字符串要注意的事项
今天把项目往移动平台移植,遇到指针错误,无效地址访问.
XE5的单步调试速度太让人崩溃了.
发现错误出在一个字符串的循环上,我是for i:= 1 to length(字符串变量) do
结果报错.
看了一下XE5的DateType的帮助说明:
Note: All the string t[......]
Delphi XE5的体验
XE5发布了.
在家里装了3台计算机体验,发现了一些问题.
1.XX工具报错,发现是BDS.EXE大小校验失败.从别处弄一个覆盖然后XX成功.
2.某绿色版可以用,但是因为是绿色版,没有自动安装JDK和AndroidSDK,要手动配置在SDK Manager中添加SDK的路径.否则不能开发An[......]
Delphi XE5的移动项目中对象已经是生存期自管理的了
Delphi XE5的移动项目中对象已经是生存期自管理的了
TTest = class
protected
destructor Destroy; override;
public
procedure BeforeDestruction; override;[......]
跨平台的Html解析代码
前一段时间为了解析HTML在网上找Delphi版本的HTML解析器,发现没有太好用的.遇到复杂的HTML都会出错.最常见的JavaScript中嵌入HTML的字符串,会解析出错.
至于收费的没看过.不知道怎么样.
于是自己写了一个,到现在没有遇到解析出错的HTML.现在公开出来给大家用.只是[......]
Delphi Hook Library
常常见到有朋友问Hook怎么做和COM的HOOK怎么弄.
来点干货,给Delphi业界朋友做点贡献.把我之前写的一个Delphi Hook库放到了Google Code上.方便大家.
微软官方钩子库Detours X86是免费的,X64可是要1000美刀的哦.
支持X86,X64的函数钩子.线[......]
Delphi写ShellCode获取Kernel32.DLL的地址.
好几年前曾写过一些ShellCode代码.
Delphi是最适合写ShellCode的工具
很多年没用了,今天刚刚回头看了一下,发现是随着系统的发展,其中获取Kernel32.DLL的方法在Vista/WIN7时代和X64中都已经不使用了.
就完善了一下.
现在是XP/Vista/WIN7以[......]
从DelphiXE4的例子分析FireMonkey ListBox效率问题.
DelphiXE4有一个Demo CustomListBox.
演示的是一个自定义Item的ListBox.其中有一个按钮,一次添加1000个Item.
尝试着把循环加到10000.乖乖,添加时慢得不得了,接近10秒才能添加完.我当初做光速搜索的时候几百万文件搜索都是100毫秒内解决的.差距怎么[......]
奇技淫巧之Delphi和JavaScript互通
Delphi2010以后增加了新的RTTI信息,也就是通过RTTI可以在运行时获取/调用对象的公开成员或者函数.
ScriptControl可以添加外部的对象,这个对象是个IDispatch接口,脚本调用的时候实际上是调用IDispatch的Invoke方法.
那么我们只要实现了IDispatc[......]
奇技淫巧之获取Delphi所有类的类信息
这个绝大多数朋友应该是用不上的,纯属玩的.
昨天和业界某几个人讨论delphi的class的typeinfo问题,一般implementation部分实现的类在别处是拿不到类型信息的,尽管它有.
还比如私有的嵌套类在别处也拿不到.
于是写了几行代码扫描进程中所有类的类型信息,把这些Unpubl[......]
Delphi的DateTimeToUnix/UnixToDateTime的一点小改进
Delphi的DateTimeToUnix/UnixToDateTime转换时间并没有考虑到本地时间和格林尼治时间的差,结果我天朝时间被赤裸裸的差了8个小时.
[code language="delphi"]
type
time_t = Int64;
function DateTimeT[......]