摘要: 采用Selenium+Chromedriver方式下载,具体安装Selenium+Chromedriver请看 https://zhuanlan.zhihu.com/p/588679601 (1)Python没有自带selenium库,需要自行下载,只需要用简单的命令即可实现: pip instal 阅读全文
posted @ 2023-06-04 00:19 子航 阅读(246) 评论(1) 推荐(0) 编辑
摘要: 银河麒麟V10软件商店中的lazarus安装报错#0002,只能自己手动安装。 安装lazarus需要使用安装工具fpcupdeluxe: https://wiki.freepascal.org/fpcupdeluxe 依照上面链接的用apt-get安装Missing Packages时,会出错卡在 阅读全文
posted @ 2023-05-30 21:17 子航 阅读(1220) 评论(0) 推荐(0) 编辑
摘要: 本文提供一种简便快速的方法,实现任意模态窗口相对父窗口居中显示。 阅读全文
posted @ 2022-03-30 22:17 子航 阅读(846) 评论(0) 推荐(0) 编辑
摘要: 本文将以Android的USB串口通讯库为例,介绍Delphi如何在Android中使用Java的库。 USB串口通讯库地址: https://github.com/felHR85/UsbSerial 一、Java库编译 1.安装Android Studio 2.在Android Studio中将S 阅读全文
posted @ 2018-11-14 13:32 子航 阅读(1372) 评论(0) 推荐(1) 编辑
摘要: 本文来自:http://www.cnblogs.com/hezihang/p/6083555.html Delphi采用接口方式设计模块,可以降低模块之间的耦合,便于扩展和维护。本文提供一个实现基于接口(IInterface)方式的监听器模式(观察者模式、订阅者模式),实现一个自动多播器。 下面程序 阅读全文
posted @ 2016-11-20 21:18 子航 阅读(2663) 评论(1) 推荐(0) 编辑
摘要: Embarcadero开源了几个FireMonkey的小游戏,支持Windows, Android,Ios, MacOS等。 源码地址: https://github.com/EmbarcaderoPublic/DelphiArcadeGames 游戏介绍: http://community.emb 阅读全文
posted @ 2016-10-05 00:24 子航 阅读(1918) 评论(0) 推荐(1) 编辑
摘要: 通过TObject.GetInterface可以获得对象的实例实现某个接口,前提条件是必须实例化对象后才能运行GetInterface 下面的方法可获取类是否实现了某个接口,并返回接口的偏移: 下面我们看下通过偏移量的快速获得对象的接口,以及通过接口快速获取对象: 快速获取对象的接口: 快速通过接口 阅读全文
posted @ 2016-08-04 11:06 子航 阅读(2324) 评论(1) 推荐(2) 编辑
摘要: RAD Server是一个应用服务框架平台,可快速构建和部署应用服务。RAD Server提供自动化的Delphi和C++ REST/ JSON API的 发布与管理、企业数据库集成中间件、智能物联网设备软件(IoT Edgeware)和一系列通用应用服务如用户目录和认证服务,消息推 送服务,室内/ 阅读全文
posted @ 2016-05-28 13:37 子航 阅读(1933) 评论(0) 推荐(1) 编辑
摘要: 以往的Delphi版本,不支持接口的Weak,和UnSafe的引用,支持对象的Weak, UnSafe,而且仅在Android和Ios平台上支持。 现在Delphi XE10.1 Berlin终于增加了对接口的Weak, UnSafe的支持。 1.Weak Weak引用,不影响引用计数器,但是如果对 阅读全文
posted @ 2016-05-28 12:12 子航 阅读(2939) 评论(1) 推荐(2) 编辑
摘要: Delphi XE10支持MongoDB的数据库,提供了个例子restaurants可批量导入数据。 本文对比Delphi例子与MongoDB自带的mongoimport导入批量数据的性能。 步骤: 1.运行例子前需要先安装MongoDB, MongoDB安装及运行mongod.exe,安装完成后b 阅读全文
posted @ 2016-04-22 21:01 子航 阅读(3795) 评论(0) 推荐(1) 编辑
摘要: 在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 子航 阅读(1497) 评论(0) 推荐(1) 编辑
摘要: 本人设计了一个高效读写锁,可实现多个线程读一个线程写的锁,应该比Delphi自带的读写锁高效,本人没有做对比测试。 本文的锁不可以在一个线程里重入,否则会锁死,另外读写锁最多支持65535个线程同时读。 阅读全文
posted @ 2016-04-02 13:30 子航 阅读(1956) 评论(1) 推荐(1) 编辑
摘要: 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 子航 阅读(2395) 评论(1) 推荐(1) 编辑
摘要: 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 子航 阅读(2297) 评论(1) 推荐(0) 编辑
摘要: 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 子航 阅读(1166) 评论(0) 推荐(0) 编辑
摘要: 先看下面的FMX.Layouts.pas中一段代码procedure TCustomScrollBox.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Single);begin FMouseEvents := True; i... 阅读全文
posted @ 2015-06-25 20:41 子航 阅读(2853) 评论(0) 推荐(0) 编辑
摘要: 下面的程序,可以实现Android下获取GNSS的NMEA0183数据:unit utAndroidNmea;interfaceuses Androidapi.JNIBridge, Androidapi.JNI.App, Androidapi.NativeActivity, Androidapi.J... 阅读全文
posted @ 2015-05-06 11:44 子航 阅读(1841) 评论(0) 推荐(0) 编辑
摘要: Delphi在Android开发中还不是很完善,也有一些修改,需要注意:1.不要用IXMLDocument的SaveToStream, XML.Text等,用了OXML,QXML,VerySimpleXML2等,目前版本中只有VerySimpleXML2在Andriod下没发现问题,http://b... 阅读全文
posted @ 2014-12-17 22:15 子航 阅读(1359) 评论(0) 推荐(0) 编辑
摘要: Delphi通过inherited 可以调用父类的方法,但是没有提供直接调用父类的父类的方法(爷爷类),通过变通的方式实现如下:假设父类是TFather,爷爷类TGrand,调用爷爷类的Write方法:type TWriteProc=procedure of Object;var WritePr... 阅读全文
posted @ 2014-12-03 11:51 子航 阅读(1323) 评论(3) 推荐(0) 编辑
摘要: 如果我们需要调试USB程序且Android设备只有一个USB口,那么可以通过WiFi来调试程序,这样USB口就可以用了。大致步骤如下:1.在有root权限的Android设备里安装“Wifi ADB无线调试器”2.通过“Wifi ADB无线调试器”,设置好端口,启动WiFi ADB,假设Androi... 阅读全文
posted @ 2014-09-18 22:55 子航 阅读(1991) 评论(0) 推荐(0) 编辑
摘要: 在Android里,用java通过实现BroadcastReceiver接口,就可以获得Intent消息。可是Delphi程序不能直接实现JBroadcastReceiver,如何能够实现类似Java的BroadcastReceiver功能呢?幸运的是Delphi提供了TJFMXBroadcastR... 阅读全文
posted @ 2014-09-18 02:55 子航 阅读(3474) 评论(1) 推荐(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 子航 阅读(1992) 评论(1) 推荐(0) 编辑
摘要: 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 子航 阅读(827) 评论(0) 推荐(0) 编辑
摘要: 在Windows下只要uses Windows,就有这两个API可调用GetTickCount,GetCurrentThreadID如果我们需要跨平台使用这两个函数,就不能仅仅UsesWindows了。如果需要跨平台使用GetTickCount,可以uses System.Classes,然后使用类... 阅读全文
posted @ 2014-09-13 11:47 子航 阅读(2233) 评论(1) 推荐(0) 编辑
摘要: Delphi写的DLL,OCX中如果使用了TThread.Synchronze(Proc),可能导致线程死锁,原因是无法唤醒EXE中主线程,Synchronze并不会进入EXE主线程消息队列.下面的程序自动解决此问题,只需要加入DLL,OCX工程文件中,在DLL,OCX中便可以使用TThread.S... 阅读全文
posted @ 2014-09-10 21:20 子航 阅读(2226) 评论(2) 推荐(1) 编辑
摘要: Delphi的线程可以通过调用AThread.Synchronize(AProc),可以将Proc放入主线程中同步运行,此时AThread将挂起,直到主线程执行完AProc。如果有BThread,调用了BThread.Synchronize(BProc),而BProc中释放了AThreadproce... 阅读全文
posted @ 2014-09-10 21:07 子航 阅读(4484) 评论(0) 推荐(0) 编辑
摘要: Delphi XE7已经内建了蓝牙功能,提供了System.Bluetooth.pas单元顾名思义,System表示XE7的蓝牙功能可以在Windows,Android,IOS系统内使用System.Bluetooth单元中主要包含一下几个类,其中带LE的支持所有系统,不带LE的类不支持Ios系统,... 阅读全文
posted @ 2014-09-10 19:01 子航 阅读(7216) 评论(0) 推荐(2) 编辑
摘要: Delphi XE5,XE6,XE7编译的程序在Android下启动会有一段时间黑屏,以前需要用Java扩展Activity增加Splash显示,现在Delphi XE7增加了Splash Image显示功能了。步骤:1.鼠标右键点击工程,选择Options,2.进入Application分页3.勾... 阅读全文
posted @ 2014-09-10 17:46 子航 阅读(2122) 评论(2) 推荐(1) 编辑
摘要: 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 子航 阅读(5438) 评论(2) 推荐(0) 编辑
摘要: 一个简易 无锁池 1.所有读写无等待,不需要判断条件直接读写(除自动扩充容量时),效率是一般带锁或带条件判断池的两倍以上。 2.预先开辟2的幂大小容量,可自增,每次翻倍 3.仅提供思路,工程应用可靠性还不确定。 // 无锁池 // hezihang @cnblogs.com // 20160228 阅读全文
posted @ 2014-06-08 18:47 子航 阅读(1065) 评论(2) 推荐(0) 编辑
摘要: 本文提供Delphi下一个基于原子操作的无锁队列,简易高效。适用于多线程大吞吐量操作的队列。 可用于Android系统和32,64位Windows系统。 阅读全文
posted @ 2014-06-04 20:50 子航 阅读(5760) 评论(6) 推荐(1) 编辑
摘要: 来源: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 子航 阅读(1770) 评论(0) 推荐(0) 编辑
摘要: STM32的I2C硬核为了规避NXP的知识产权,使得I2C用起来经常出问题,因此ST公司推出了CPAL库,CPAL库在中断方式工作下仅支持无子地址的器件,无法做到中断方式完成读写大部分I2C器件。同时CPAL库在多个I2C同时使用时,经测试也有问题,因此我们项目中放弃了使用ST公司的CPAL库以及标... 阅读全文
posted @ 2014-04-19 10:20 子航 阅读(3502) 评论(0) 推荐(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 子航 阅读(1425) 评论(0) 推荐(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 子航 阅读(1172) 评论(0) 推荐(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 子航 阅读(624) 评论(3) 推荐(0) 编辑
摘要: 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 子航 阅读(2163) 评论(0) 推荐(0) 编辑
摘要: 安装好Altium Designer (DXP) 09板和2013后,运行后原理图复制粘贴元件或者放心的器件后出现下面异常,原因是:1。未启动 Print Spooler服务2。没有安装任何打印机只需要启动服务以及随意安装一个打印机后,异常就不出现了。另外AD 2013如果重复安装多次,也可能不能正常启动DXP,需要用AltiumUninstaller卸载所有以前安装的版本后重新装。 阅读全文
posted @ 2014-03-07 11:14 子航 阅读(2150) 评论(0) 推荐(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 子航 阅读(17082) 评论(0) 推荐(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 子航 阅读(11505) 评论(0) 推荐(0) 编辑