作者归档:admin

跨平台的,在FMX中读取ICON文件的每一帧到Bitmap

昨天在使用FreeImage的时候发现FreeImage对ICON的处理有问题,32位的帧读出来的背景居然是黑的。我猜应该是32位没有And的Mask数据。而它按照24位以下的处理方式把Alpha值填成255了。

只能自己动手写代码,也不复杂,算上把Windows单元抽出来声明的结构体,也就3[......]

全文阅读

发表在 Delphi, 未分类 | 一条评论

关闭掉新版Delphi的几个固定导出函数(__dbk_fcall_wrapper,dbkFCallWrapperAddr,TMethodImplementationIntercept)

不知道从什么时候起Delphi编译的PE文件总是三个固定的导出函数。

一方面有强迫症的同学们会不爽,另一方面其实是不安全的。

这三个函数是:__dbk_fcall_wrapper,dbkFCallWrapperAddr,TMethodImplementationIntercept[......]

全文阅读

发表在 Delphi, 未分类 | 标签为 , , , , | 留下评论

FireMonkey在使用GDIPlus放大图像的Bug的修复

Delphi10.2中FireMonkey中GDIPlus放大图片的Bug,不知道从哪个版本开始的,还是一直都这样。

新建一个FireMonkey工程,窗口上放一个Image控件,WrapMode设置为Stretch,表示随控件大小缩放。指定一张小图。

默认使用D2D的时候放大没问题[......]

全文阅读

发表在 Delphi, 未分类 | 标签为 , , , , | 留下评论

FireMonkey GIF处理的更新

盒子上人才济济,很快就有兄弟发现在Android中有问题。

经过调试,发现Android中TCanvas.DrawBitmap对透明处理跟Windows不太一样,而是把透明部分也覆盖上去了,于是自己处理了一下帧的叠加,自己复制Bitmap的Scanline颜色,跳过透明即可。

2017.[......]

全文阅读

发表在 Delphi | 标签为 , , | 一条评论

FireMonkey跨平台的GIF解决方案

用FireMonkey的同学们一定知道FireMonkey对GIF动画的支持不是太好,只有静态的。

网上已有的解决方案就是先手动预处理GIF文件分割成多个单张,然后放到BitmapList中,缺点是要手动处理,而且帧速率也麻烦。因为项目中要实现了一个GIF的格式处理,代码整理了一下,嫁接到Fi[......]

全文阅读

发表在 Delphi | 标签为 , , , , | 留下评论

VC版本的MakeObjectInstance把WNDPROC映射到类的成员函数

这段时间用VC封装Windows类库,没有MakeObjectInstance处理窗口消息确实不爽,又不想使用MFC的消息映射,这玩意的效率和美观只能呵呵。

至于MakeObjectInstance是什么,Delphi转过来的同学必然很了解这个方便的功能,就是动态构造一个函数把普通函数转到一个[......]

全文阅读

发表在 CPP | 留下评论

Cocos2d-x程序Windows下VC中文乱码的解决

Cocos2d-x默认字符串常量编码都是UTF8的,而Windows中的VC默认都是跟系统相同,比如简体Windows是GB2312或者GBK.繁体就是BIG5编码.
而我们大多数中国人用VC编译出来的字符串常量也就是GBK编码的字符串.
在Cocos2d-x界面上绘制的时候它是不知道的,只会认[......]

全文阅读

发表在 cocos2d-x, CPP, 未分类 | 留下评论

Delphi结构体的扩展,可以自动初始化,反初始化,自定义拷贝函数.

恭贺Delphi XE7诞生,Delphi XE7在编译器内部集成了我之前所实现的动态数组扩展.http://www.raysoftware.cn/?p=278
现在有一个更悠久的历史需求,在QC的Delphi板块上置顶了好多年.官方一直没有实现.
http://qc.embarcadero.c[......]

全文阅读

发表在 Delphi, 未分类 | 标签为 , , , | 一条评论

HTML解析器更新

增加了兼容性.
对于非标准的HTML做法,Tag中的符号没有转义做了兼容.
HtmlParser
或者
http://code.google.com/p/delphi-html-parser/

发表在 Delphi, 未分类 | 13条评论

共享一个之前封装的多进程共享内存的MemoryStream

具体用处呢,有很多,比如多进程浏览器共享Cookie啦,多个进程传送点数据啦.
[code language="delphi"]
{
共享内存封装.
封装成了MemoryStream的形式.
用法如下:
var
ms : TShareMemStream;
ms :=[......]

全文阅读

发表在 Delphi | 标签为 , , | 5条评论

Delphi读取Android设备联系人.DelphiXE6中编译通过

和某牛讨论Delphi读Android联系人.写了如下代码
[code language="delphi"]
uses
FMX.Helpers.Android,
Androidapi.JNI.JavaTypes, Androidapi.JNI.GraphicsContentViewT[......]

全文阅读

发表在 Delphi, 未分类 | 标签为 , , , | 3条评论

Delphi Hook Library做了一点小更新

http://www.raysoftware.cn/?p=357

1.原来的HOOK库,当遇到函数先被别人HOOK了,会无视对方的钩子,造成函数出问题.
现在加入了处理,如果想要HOOK的函数先被别人HOOK了,那么就去HOOK对方的函数.
但是要记得UnHOOK的时候也最好在对方去掉HO[......]

全文阅读

发表在 Delphi | 28条评论

Delphi循环移位操作

如果在X86计算机上很简单,直接内嵌汇编ror和rol指令就是循环移位.
但是如果在Android的平台上,asm关键字是无效的.
只能自己实现.

function ror(const Value: DWORD; ShiftValue: Byte): DWORD; overload;
b[......]

全文阅读

发表在 Delphi, 未分类 | 3条评论

Delphi XE5开发Android程序使用自定义字体文件.

最近在做一个电子书阅读器的Android小程序来验证Delphi XE5的移动开发功能.
万事大吉,只欠根据字体文件(.ttf文件)切换阅读字体,通常Android系统只带三种以下字体.一般用Java/Eclipse开发的话比较简单,typeface的createFromAsset,createF[......]

全文阅读

发表在 Delphi, 未分类 | 标签为 , , , , | 17条评论

Delphi移动平台上生存期自管理一些问题的避免

今天和Delphi高手刘麻子讨论了一下移动平台上生存期自管理容易导致的一些问题.有几点体会

在移动平台上Delphi的对象是生存期自管理的,这和早期版本和现有的PC版本有很大不同.
大部分时间我们原来的代码不会有问题.我们原来的手动释放代码在移动平台也不会有问题,因为TObject.Free[......]

全文阅读

发表在 Delphi, 未分类 | 6条评论

跨平台的Html解析代码,甩掉包袱的选择

跨平台的Html解析代码
当时写了这个Html解析,可以跨Windows,MacOSX的平台.但是随着Delphi XE5的发布,发现这个代码在Android平台不能用了,因为Delphi在移动平台上的字符串字符索引下标变成0了,带来了很多问题.
于是把这个HTML解析器重写了一个版本,放弃对D[......]

全文阅读

发表在 Delphi, 未分类 | 16条评论

关于DelphiXE5如何获取Android手机SIM卡串号

手机号不是存在SIM卡上的,SIM卡只有一个串号.
在运营商的服务器上有手机号和序号对应的一张表.所以你SIM卡办理遗失,运营商只要把新SIM卡的串号和你原来的手机号绑定即可.

获取手机号的唯一办法是收个短信,短信里面有你的手机号码.所以很多程序为了获取手机号会要求你注册时发短信,然后它给你[......]

全文阅读

发表在 Delphi, 未分类 | 6条评论

Delphi新语法和ifthen的扩展联想.

看看Delphi重载了多少个ifthen函数.
Math单元
function IfThen(AValue: Boolean; const ATrue: Integer; const AFalse: Integer = 0): Integer; overload; inline;
functi[......]

全文阅读

发表在 Delphi, 未分类 | 3条评论

Android的路径信息

刚好有个朋友问Android中怎么获取安装路径.
Delphi早就把IO相关的都提取到System.IoUtils单元中了.

路径操作就使用TPath的方法都很方便.
uses
System.IoUtils
TPath.GetTempPath//临时目录
TPath.GetCam[......]

全文阅读

发表在 Delphi, 未分类 | 14条评论

XE5开发Android程序调用电话相关功能(短信息和电话)

其实都可以通过intent和URI调用系统功能.Windows程序员可以理解成是ShellExecute.这个是万金油.可以有调用各种功能.后面会介绍.

1.短信息.很简单

方法a.不使用Intent而是直接发短信.
smsManager对应的Delphi代码应该是:
[code[......]

全文阅读

发表在 Delphi, 未分类 | 17条评论

Delphi XE5中移动平台的字符串要注意的事项

今天把项目往移动平台移植,遇到指针错误,无效地址访问.
XE5的单步调试速度太让人崩溃了.
发现错误出在一个字符串的循环上,我是for i:= 1 to length(字符串变量) do
结果报错.
看了一下XE5的DateType的帮助说明:
Note: All the string t[......]

全文阅读

发表在 Delphi, 未分类 | 8条评论

Delphi XE5的体验

XE5发布了.
在家里装了3台计算机体验,发现了一些问题.
1.XX工具报错,发现是BDS.EXE大小校验失败.从别处弄一个覆盖然后XX成功.
2.某绿色版可以用,但是因为是绿色版,没有自动安装JDK和AndroidSDK,要手动配置在SDK Manager中添加SDK的路径.否则不能开发An[......]

全文阅读

发表在 Delphi, 未分类 | 12条评论

Delphi XE5的移动项目中对象已经是生存期自管理的了

Delphi XE5的移动项目中对象已经是生存期自管理的了
TTest = class
protected
destructor Destroy; override;

public
procedure BeforeDestruction; override;[......]

全文阅读

发表在 Delphi, 未分类 | 3条评论

跨平台的Html解析代码

前一段时间为了解析HTML在网上找Delphi版本的HTML解析器,发现没有太好用的.遇到复杂的HTML都会出错.最常见的JavaScript中嵌入HTML的字符串,会解析出错.
至于收费的没看过.不知道怎么样.

于是自己写了一个,到现在没有遇到解析出错的HTML.现在公开出来给大家用.只是[......]

全文阅读

发表在 Delphi, 未分类 | 14条评论

Delphi Hook Library

常常见到有朋友问Hook怎么做和COM的HOOK怎么弄.
来点干货,给Delphi业界朋友做点贡献.把我之前写的一个Delphi Hook库放到了Google Code上.方便大家.
微软官方钩子库Detours X86是免费的,X64可是要1000美刀的哦.
支持X86,X64的函数钩子.线[......]

全文阅读

发表在 Delphi, 未分类 | 216条评论

Delphi写ShellCode获取Kernel32.DLL的地址.

好几年前曾写过一些ShellCode代码.
Delphi是最适合写ShellCode的工具
很多年没用了,今天刚刚回头看了一下,发现是随着系统的发展,其中获取Kernel32.DLL的方法在Vista/WIN7时代和X64中都已经不使用了.
就完善了一下.
现在是XP/Vista/WIN7以[......]

全文阅读

发表在 Delphi, 未分类 | 2条评论