正文内容加载中...
posted @ 2016-11-20 21:18 子航 阅读(223) 评论(0) 编辑
摘要: Embarcadero开源了几个FireMonkey的小游戏,支持Windows, Android,Ios, MacOS等。 源码地址: https://github.com/EmbarcaderoPublic/DelphiArcadeGames 游戏介绍: http://community.emb阅读全文
posted @ 2016-10-05 00:24 子航 阅读(234) 评论(0) 编辑
摘要: 通过TObject.GetInterface可以获得对象的实例实现某个接口,前提条件是必须实例化对象后才能运行GetInterface 下面的方法可获取类是否实现了某个接口,并返回接口的偏移: 下面我们看下通过偏移量的快速获得对象的接口,以及通过接口快速获取对象: 快速获取对象的接口: 快速通过接口阅读全文
posted @ 2016-08-04 11:06 子航 阅读(297) 评论(1) 编辑
摘要: RAD Server是一个应用服务框架平台,可快速构建和部署应用服务。RAD Server提供自动化的Delphi和C++ REST/ JSON API的 发布与管理、企业数据库集成中间件、智能物联网设备软件(IoT Edgeware)和一系列通用应用服务如用户目录和认证服务,消息推 送服务,室内/阅读全文
posted @ 2016-05-28 13:37 子航 阅读(534) 评论(0) 编辑
摘要: 以往的Delphi版本,不支持接口的Weak,和UnSafe的引用,支持对象的Weak, UnSafe,而且仅在Android和Ios平台上支持。 现在Delphi XE10.1 Berlin终于增加了对接口的Weak, UnSafe的支持。 1.Weak Weak引用,不影响引用计数器,但是如果对阅读全文
posted @ 2016-05-28 12:12 子航 阅读(897) 评论(1) 编辑
摘要: Delphi XE10支持MongoDB的数据库,提供了个例子restaurants可批量导入数据。 本文对比Delphi例子与MongoDB自带的mongoimport导入批量数据的性能。 步骤: 1.运行例子前需要先安装MongoDB, MongoDB安装及运行mongod.exe,安装完成后b阅读全文
posted @ 2016-04-22 21:01 子航 阅读(642) 评论(0) 编辑
摘要: 在Windows下编译mongo-c-driver 1.3.x 在Windows下编译mongo-c-driver 1.3.x 1.安装 MSYS2https://sourceforge.net/projects/msys2/2.如果是32位系统或编译32位程序,运行 mingw32_shell.b阅读全文
posted @ 2016-04-04 10:51 子航 阅读(230) 评论(0) 编辑
摘要: 本人设计了一个高效读写锁,可实现多个线程读一个线程写的锁,应该比Delphi自带的读写锁高效,本人没有做对比测试。 本文的锁不可以在一个线程里重入,否则会锁死,另外读写锁最多支持65535个线程同时读。阅读全文
posted @ 2016-04-02 13:30 子航 阅读(449) 评论(0) 编辑
摘要: Delphi Seatle can link Delphi project with Static library files(*.a): 1.at Delphi IDE, Add the "*.a" file Path to Library Path: a. Tools Menu b.Option阅读全文
posted @ 2016-03-17 21:56 子航 阅读(346) 评论(0) 编辑
摘要: Delphi有时候无法连接调试一些手机,解决方案:1.安装Google USB Driver2.通过设备管理器查看手机或平板USB的VID,PID3.修改你的电脑上的android_winusb.inf,将第2步找到的VID,PID加到inf中。例如:;Samsung Galaxy S3 %Sing...阅读全文
posted @ 2015-12-25 17:52 子航 阅读(291) 评论(1) 编辑
摘要: http://blogs.embarcadero.com/davidi/2014/01/16/43281There are many available Delphi and C++Builder components that will let you build cool desktop and...阅读全文
posted @ 2015-10-28 00:56 子航 阅读(391) 评论(0) 编辑
摘要: 先看下面的FMX.Layouts.pas中一段代码procedure TCustomScrollBox.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Single);begin FMouseEvents := True; i...阅读全文
posted @ 2015-06-25 20:41 子航 阅读(520) 评论(0) 编辑
摘要: 下面的程序,可以实现Android下获取GNSS的NMEA0183数据:unit utAndroidNmea;interfaceuses Androidapi.JNIBridge, Androidapi.JNI.App, Androidapi.NativeActivity, Androidapi.J...阅读全文
posted @ 2015-05-06 11:44 子航 阅读(364) 评论(0) 编辑
摘要: Delphi在Android开发中还不是很完善,也有一些修改,需要注意:1.不要用IXMLDocument的SaveToStream, XML.Text等,用了OXML,QXML,VerySimpleXML2等,目前版本中只有VerySimpleXML2在Andriod下没发现问题,http://b...阅读全文
posted @ 2014-12-17 22:15 子航 阅读(675) 评论(0) 编辑
摘要: Delphi通过inherited 可以调用父类的方法,但是没有提供直接调用父类的父类的方法(爷爷类),通过变通的方式实现如下:假设父类是TFather,爷爷类TGrand,调用爷爷类的Write方法:type TWriteProc=procedure of Object;var WritePr...阅读全文
posted @ 2014-12-03 11:51 子航 阅读(416) 评论(3) 编辑
摘要: 如果我们需要调试USB程序且Android设备只有一个USB口,那么可以通过WiFi来调试程序,这样USB口就可以用了。大致步骤如下:1.在有root权限的Android设备里安装“Wifi ADB无线调试器”2.通过“Wifi ADB无线调试器”,设置好端口,启动WiFi ADB,假设Androi...阅读全文
posted @ 2014-09-18 22:55 子航 阅读(593) 评论(0) 编辑
摘要: 在Android里,用java通过实现BroadcastReceiver接口,就可以获得Intent消息。可是Delphi程序不能直接实现JBroadcastReceiver,如何能够实现类似Java的BroadcastReceiver功能呢?幸运的是Delphi提供了TJFMXBroadcastR...阅读全文
posted @ 2014-09-18 02:55 子航 阅读(1219) 评论(1) 编辑
摘要: 自己转的比较全面的USB声明文件:unit Androidapi.JNI.USB;interfaceuses AndroidAPI.JNIBridge, Androidapi.JNI.JavaTypes, Androidapi.JNI.os, androidapi.JNI.App;type ...阅读全文
posted @ 2014-09-17 12:57 子航 阅读(744) 评论(1) 编辑
摘要: 1.将jar转换为dexcall dx --dex -verbose--output=.\output\dex\test_classes.dex --positions=lines .\output\jar\test_classes.jar2.Delphi XE6,XE7下,通过Project菜单下...阅读全文
posted @ 2014-09-16 21:58 子航 阅读(327) 评论(0) 编辑
摘要: 在Windows下只要uses Windows,就有这两个API可调用GetTickCount,GetCurrentThreadID如果我们需要跨平台使用这两个函数,就不能仅仅UsesWindows了。如果需要跨平台使用GetTickCount,可以uses System.Classes,然后使用类...阅读全文
posted @ 2014-09-13 11:47 子航 阅读(397) 评论(1) 编辑
摘要: Delphi写的DLL,OCX中如果使用了TThread.Synchronze(Proc),可能导致线程死锁,原因是无法唤醒EXE中主线程,Synchronze并不会进入EXE主线程消息队列.下面的程序自动解决此问题,只需要加入DLL,OCX工程文件中,在DLL,OCX中便可以使用TThread.S...阅读全文
posted @ 2014-09-10 21:20 子航 阅读(511) 评论(1) 编辑
摘要: Delphi的线程可以通过调用AThread.Synchronize(AProc),可以将Proc放入主线程中同步运行,此时AThread将挂起,直到主线程执行完AProc。如果有BThread,调用了BThread.Synchronize(BProc),而BProc中释放了AThreadproce...阅读全文
posted @ 2014-09-10 21:07 子航 阅读(782) 评论(0) 编辑
摘要: Delphi XE7已经内建了蓝牙功能,提供了System.Bluetooth.pas单元顾名思义,System表示XE7的蓝牙功能可以在Windows,Android,IOS系统内使用System.Bluetooth单元中主要包含一下几个类,其中带LE的支持所有系统,不带LE的类不支持Ios系统,...阅读全文
posted @ 2014-09-10 19:01 子航 阅读(2032) 评论(0) 编辑
摘要: Delphi XE5,XE6,XE7编译的程序在Android下启动会有一段时间黑屏,以前需要用Java扩展Activity增加Splash显示,现在Delphi XE7增加了Splash Image显示功能了。步骤:1.鼠标右键点击工程,选择Options,2.进入Application分页3.勾...阅读全文
posted @ 2014-09-10 17:46 子航 阅读(869) 评论(2) 编辑
摘要: Delphi XE5,XE6需要用户手工编译并将Classes.Dex加入到包中,不过Delphi XE7可以省掉这些工作了。如何在XE7中调用Java,具体步骤如下:1.将jar文件添加到XE7的工程中2.生成Delphi的JNI接口文件可以使用Java2op命令,http://docwiki.e...阅读全文
posted @ 2014-09-10 16:36 子航 阅读(1217) 评论(2) 编辑
摘要: 一个简易 无锁池 1.所有读写无等待,不需要判断条件直接读写(除自动扩充容量时),效率是一般带锁或带条件判断池的两倍以上。 2.预先开辟2的幂大小容量,可自增,每次翻倍 3.仅提供思路,工程应用可靠性还不确定。 // 无锁池 // hezihang @cnblogs.com // 20160228 阅读全文
posted @ 2014-06-08 18:47 子航 阅读(428) 评论(2) 编辑
摘要: 本文提供Delphi下一个基于原子操作的无锁队列,简易高效。适用于多线程大吞吐量操作的队列。 可用于Android系统和32,64位Windows系统。阅读全文
posted @ 2014-06-04 20:50 子航 阅读(1450) 评论(6) 编辑
摘要: 来源:http://www.bverhue.nl/g2dev/?p=65Delphi Android USB Interface with the G2Leave a reply I first tried to use Libusb to connect my Android tablet wit...阅读全文
posted @ 2014-04-21 12:37 子航 阅读(762) 评论(0) 编辑
摘要: STM32的I2C硬核为了规避NXP的知识产权,使得I2C用起来经常出问题,因此ST公司推出了CPAL库,CPAL库在中断方式工作下仅支持无子地址的器件,无法做到中断方式完成读写大部分I2C器件。同时CPAL库在多个I2C同时使用时,经测试也有问题,因此我们项目中放弃了使用ST公司的CPAL库以及标...阅读全文
posted @ 2014-04-19 10:20 子航 阅读(721) 评论(0) 编辑
摘要: FIFO主要用于多个不同线程或进程之间数据交换时做缓冲区用,尤其适合实时数据通讯应用中的数据缓冲,接收线程(进程)将数据写入FIFO,处理线程(进程)从FIFO取出数据本单元中:TMemoryFIFO类适用于单进程内不同线程之间交换数据TMapFileFIFO类适用于不同进程之间交换数据Unit UtFIFO;InterfaceUses Windows, SysUtils, SyncObjs;Type PFIFOStruct= ^TFIFOStruct; TFIFOStruct= Record FSize: Integer; FWritePtr: Integer; ...阅读全文
posted @ 2014-04-09 16:34 子航 阅读(527) 评论(0) 编辑
摘要: 本人根据歼10博主的此博文的思路进行改进,目的是高效的实现FormatDateTime('YYYY-MM-DD HH:NN:SS.ZZZ', Now);在DelphiXE3 32Bits环境测试10,000,000次,Delphi自带的FormatDateTime = 20405 ms歼10的优化...阅读全文
posted @ 2014-04-09 15:34 子航 阅读(426) 评论(0) 编辑
摘要: I found a Bug of Delphi XE3 Compiler,It may exists in XE4,XE5.Here is the code to show the bugprocedure Test;overload;begin ShowMessage('procedure Test;');end;procedure Test(Value:Integer);overload;begin if Value=1 then ShowMessage('procedure Test(Value:Integer);');end;var T:procedur阅读全文
posted @ 2014-03-31 18:19 子航 阅读(216) 评论(3) 编辑
摘要: 1。如果查询方式进行数据收发,不管是Master,还是Slave,流程如下:(假设收发n+1个字节) a。等待TXE,写入一个字节 b。等待TXE,写入一个字节 c。等待RXNE,读取一个字节 循环b,c两个步骤n次 d。等待RXNE,读取一个字节2。如果是DMA中断方式收发数据,不管是Master,还是Slave,需要注意: a。不要在DMA发送Stream的中断中重新启动DMA发送 b。应该在DMA接收Stream中断后,同时启动收发DMA3。如果设置SPI时钟空闲电平为高电平,则应该设置SCK引脚上拉,如果SPI时钟空闲电平为低电平,则应该设置SCK引脚下拉本人建议将Mas...阅读全文
posted @ 2014-03-07 11:26 子航 阅读(485) 评论(0) 编辑
摘要: 安装好Altium Designer (DXP) 09板和2013后,运行后原理图复制粘贴元件或者放心的器件后出现下面异常,原因是:1。未启动 Print Spooler服务2。没有安装任何打印机只需要启动服务以及随意安装一个打印机后,异常就不出现了。另外AD 2013如果重复安装多次,也可能不能正常启动DXP,需要用AltiumUninstaller卸载所有以前安装的版本后重新装。阅读全文
posted @ 2014-03-07 11:14 子航 阅读(355) 评论(0) 编辑
摘要: 在冯.诺依曼结构CPU(如i386,ARM A8,A9)的保护模式或者哈佛结构(如8051, ARM M0,.. M3)的CPU下,C++编译器将放置常量的内存设置为只读模式或者放入只读内存中,如果出现往常量内存中写入数据就会产生访问冲突异常。如果在DOS的实模式的编译器,如Turbo C/Borland C++下,可能就不会报错。举例,反转字符串:#include "stdio.h"#include "string.h"//反转字符串char* ReverseStr(char* str, int len) { char* header= str; ch阅读全文
posted @ 2013-10-25 09:33 子航 阅读(646) 评论(0) 编辑
摘要: 由于工作的原因,有时需要用两台电脑工作,而搞开发的人大多又是追求计算机性能的人,所以笔记本电脑自然不轻,更何况两台。两台电脑折磨我半年多,终于下定决心将个系统安装到移动固态硬盘中,背一台无硬盘电脑加两个移动固态硬盘来减负。本人经过1天的摸索,网上很多方法均告失败,主要原因有1.SATA的工作模式AHCI和兼容问题2.主板不兼容问题3.USB驱动开机加载注册表被Windows自动恢复4.固态盘对齐问题5.不兼容USB3.0最后融各家所长,将Windows 7 安装到移动固态硬盘安装成功,步骤如下:准备一个维护U盘,Win7的安装 ISO文件,一直到2.c步骤才能用移动硬盘启动,否则可能会蓝屏。1阅读全文
posted @ 2013-09-18 16:13 子航 阅读(2186) 评论(0) 编辑
摘要: Delphi 2009+ 的 System.SysUtils提供了一个类似.Net的StringBuilder,用于存储字符数组。很多人不明白为什么要用TStringBuilder, Delphi中有string,有几乎所有TStringBuilder的功能函数,System.SysUtils中还有TStringHelper方便扩展String,更方便String的使用。从Delphi提供的源码看,TStringBuilder与string最大的区别是,TStringBuilder是可以预先申请了内存空间,并限制最大内存空间,不会自动释放,而string是用多少申请多少内存,自动释放。由此可见阅读全文
posted @ 2013-09-14 19:24 子航 阅读(729) 评论(1) 编辑
摘要: Delphi XE5支持Android ARM的开发,可以在Android虚拟机里运行,因此建议将XE5安装在64bit的Windows,内存可以大于3GBDelphi XE5安装光盘中包含了最基本的Android开发的环境文件,但是并没有提供Android模拟机。我们需要安装Android的SDK后生成Android模拟机,安装步骤:1.到http://www.oracle.com/technetwork/java/javase/downloads/index.html下载JDK1.7安装2.到http://developer.android.com/sdk/index.html下载Andr阅读全文
posted @ 2013-09-13 23:51 子航 阅读(6365) 评论(6) 编辑
摘要: 我们知道Delphi的每个对象可以包含多个Property,Property中可以是方法,例如TButton.OnClick属性。Delphi提供的仅仅是 一对一的设置,无法直接让TButton.OnClick去调用多个方法,而Java中采用Listener模式有类似AddListener方法提供多阅读全文
posted @ 2013-09-03 19:22 子航 阅读(895) 评论(6) 编辑
摘要: TValue是Delphi的RTTI系统的重要类型。 经过摸索,发现TValue功能强大,可以实现很多功能。本文章中所有程序采用XE3运行通过。一、TValue结构TValue定义在System.Rtti.pasTValue = record ...private FData: TValueDataend;TValue提供了一些系列方法,几乎都是操作FData.TValueData描述如下: TValueData = record FTypeInfo: PTypeInfo; // FValueData vs old FHeapData: // FHeapData doub...阅读全文
posted @ 2013-08-25 10:07 子航 阅读(1197) 评论(0) 编辑