首先,做为一个从Windows下转过来的开发人员,许多时候,我们喜欢用PostMessage来触发一些异步执行的代码,但遗憾的是,FMX做为EMB的跨平台库的基础,只提供了SendMessage方法,却没有提供PostMessage方法。 那我们确实需要PostMessage怎么办?我因为用到了,所以研究了下,编写了一
月度归档: 2014 年 10 月
在Andriod程序中获取外置SD卡根目录
我们知道,Andriod是基于Linux的,所以正常的存贮设备都被挂载到/mnt目录下,我们查找SD卡根目录就是要在下面找到那个卡是外置的SD卡,但遗憾的是,目前没有一种标准的方法来做到这一点(包括Andriod本身)。下面我为大家提供了一个函数来完成这一功能: function GetExtSDDir: String
Delphi 2007 在IDE环境中无法调试程序解决方法
今天在调试程序是,D2007突然弹出几个错误对话框(类似如图1所示),然后也没仔细看,全部点了”Yes”,发现还是会继续弹,就全部点了”No”。然后就发生问题了。 【问题描述】 在Delphi2007中,Run菜单中的Run、Pause、Reset等功能永远是灰色的,工具
XE7编译Android程序时CreateAndriodMainfestFile失败的解决办法
如果你在编译Android时出现下面的错误提示,那么恭喜你,遇到了Delphi/C++ Builder编译器的一个弱智的Bug: [MSBuild Error] The “CreateAndroidManifestFile” task failed unexpectedly. System.UnauthorizedAc
QXML更新-修正了MoveTo移动到一个没有子结点的结点时出错的问题
【问题描述】 由于TQXMLNode的FItems成员是按需创建的,而在MoveTo函数实现时未检查目标父结点的FItems成员是否已创建,直接添加造成AccessVolation错误。 修改代码加入对FItems是否已经分配的检查,以解决此问题。 【严重程度】 高 【更新级别】 建议 【特别感谢】 新心晨曦
QJson与RapidJson性能的简单对比测试
盒子上一位朋友想知道QJson和C++编写的RapidJson之间的性能对比情况,限于精力,我只是简单的测试了下加载一个大的Json文件来对比解析性能(Demos\Delphi\VCL\QJson\Preferences.txt,文件大小:9.81MB),但做测试大家都知道与测试样本的关系很大,这里只对这一个测试用例负
QMsgPack更新-修正了移动节点时未检查自己是否是目标的父结点问题
【问题描述】 新增加的函数MoveTo在移动结点时,如果错误的将目标结点设置为自己的子结点,程序未报错但执行结果是错的。本更新解决这一问题,并会在发生这一情况时抛出异常,提示用户不能将自己移动到自己的子结点下。 【严重程度】 中等 【更新级别】 推荐
QJSON更新-修正了移动节点时未检查自己是否是目标的父结点问题
【问题描述】 新增加的函数MoveTo在移动结点时,如果错误的将目标结点设置为自己的子结点,程序未报错但执行结果是错的。本更新解决这一问题,并会在发生这一情况时抛出异常,提示用户不能将自己移动到自己的子结点下。 【严重程序】 中等 【更新级别】 推荐
QXML 更新 – 修正了移动节点时未检查自己是否是目标的父结点问题
【问题描述】 新增加的函数MoveTo在移动结点时,如果错误的将目标结点设置为自己的子结点,程序未报错但执行结果是错的。本更新解决这一问题,并会在发生这一情况时抛出异常,提示用户不能将自己移动到自己的子结点下。 【严重程序】 中等 【更新级别】 推荐
QMapSymbols更新-修正了2007+Win7/8环境下退出时出错的问题
【问题描述】 该问题是由于退出时,调用了DisableDeadLockChecker函数,而该函数并未检查当前是否已经启用了死锁检查造成的。 【更新级别】 建议更新 【特别感谢】 火鸟
QWorker更新-修正了在2007下无法编译的问题
【问题描述】 新版的QWorker由于下列原因造成QWorker无法在2007下编译: 1、部分匿名函数没有加入条件编译控制,而2007并不支持匿名函数。 2、Delay函数的全局作业函数版本被错误的包含到了条件编译{$IFDEF UNICODE}{$ENDIF}之间。 3、QString单元调用的Interlocke
QMsgPack更新-增加Remove、Detach、AttachTo、MoveTo函数及允许重命名
【更新内容】 1、新增Remove函数移除指定的子结点,与Delete的区别在于Remove并不会释放子结点,而只是将其从父结点中移除而已。 /// <summary>将指定索引的子结点移除</summary> /// <param name=”AItemIndex”>要移除的子结点
QJson更新-增加Remove、Detach、AttachTo、MoveTo函数及允许重命名
【更新内容】 1、新增Remove函数移除指定的子结点,与Delete的区别在于Remove并不会释放子结点,而只是将其从父结点中移除而已。 /// <summary>将指定索引的子结点移除</summary> /// <param name=”AItemIndex”>要移除的子结点
QXML更新-新增Remove/Detach/AttachTo/MoveTo函数
【更新内容】 1、新增Remove函数移除指定的子结点,与Delete的区别在于Remove并不会释放子结点,而只是将其从父结点中移除而已。 /// <summary>移除指定索引的结点</summary> /// <param name=”AIndex”>要移除的结点索引</
QWorker更新-正式加入TQJobExtData扩展方式,已兼容移动平台
【问题描述】 上次更新增加的TQJobExtData扩展数据方式,未进行移动平台相关条件编译选项的设置,造成移动平台无法编译。修改加入相关条件编译选项,目前已兼容移动平台。 【严重级别】 中 【更新级别】 可选 【特别感谢】 恢弘
QLog更新-新增TCP协议支持
【更新内容】 TQLogSocketWriter新增TCP协议的支持,通过UseTCP属性控制是否使用TCP协议,默认为UDP协议。 【更新级别】 可选
QWorker更新-修改了作业返回值为一个具体作业句柄
【更新内容】 修改Post、Delay、Wait、At、LongtimeJob的返回值类型,由原来的布尔值(Boolean)改为64位整数。返回的64位整数是对应于具体作业的句柄,在需要清理该作业时,可以直接当作参数传递给Workers.Clear函数,以更高效的清除单独作业。在投寄失败时,返回值为0. 由于此项变更,
QWorker更新-新增基于作业过程的初始化和释放方法
【更新内容】 新增了一个TQJobExtData对象类型以辅助用户来创建一个自动释放的对象实例,它有匿名版本,在支持匿名函数的Delphi 2009以上程序中,可以更方便直观的编写初始化和释放过程。 一、构造函数的声明 constructor Create(AData: Pointer; AOnFree: TQExtF
QDAC新增QCNDate单元,处理阴阳历之间的换算
该单元可以将1901-2050年间的农历日期与阳历日期之间做任意转换并提供了很多辅助函数,以帮助大家在做日程类应用时,进行相关处理。在Demos\Delphi\VCL下提供了一个Demo来演示这个用法,截图如下: 函数列表如下: /// <summary> /// 将指定的农历年月日编码为一个TCnDate
在Andriod程序中输出日志到Windows的QLogServer查看
大家知道日志是我们调试程序的一种重要方式,QDAC的QLog提供了一种异步的日志记录方式,以尽量减少到系统系统性能的影响。而且QLog支持Syslog协议输出,可以将日志输出给其它的syslogd兼容的日志查看器。当然为了方便大家,QDAC实现了一个自己的QLogServer,使用标准的UDP协议514端口来记录日志。