- 博客(34)
- 资源 (19)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Delphi XE7 FireDAC中间件&Exe+DLL主副架构源码
由拥有十年以上的相关开发经验+架构搭建心得的团队精心打造,你会发现使用我们的中间件,客户端处理数据只需简单的几步。我们的系统架构对最基础的数据处理部分已经做了完美封装,增删改查分分钟搞定,“傻瓜”式操作让新手极速上手!本套架构的技术特点:1、采用FireDAC数据控件+Dev皮肤控件技术,可随意切换皮肤风格,变身只在一秒间;不再包含其他三方控件,原生代码使用更方便;2、中间件:支持多库连...
2018-05-30 15:33:32
1694
原创 delphi(XE2)实现图片异形窗体,支持摆放控件
网上有较多使用UpdateLayeredWindow函数实现美化的图片异形窗体的代码,一般使用此场景时,对软件界面要求较高。但是实现了图片窗体后,在窗体中摆放不了其他控件,导致这个功能很鸡肋。为解决此问题,本博文中的案例使用两个窗体搭配使用,图片窗口作为背景窗体,放置控件的窗口作为功能性窗体,功能性窗口全透明展示,可实现我们预设的目标。
2022-11-22 15:05:33
1328
1
原创 delphi JDAESExtend中AES-base64解密报错的解决办法
JDAESExtend.pas中封装的与JAVA互通的AES加解密方法,base64模式下解密报错。本文提供了解决这个问题的方法,供有需要的人使用。
2022-11-02 14:03:13
445
原创 [NSIS]安装前等待读设备结束并根据设备类型选择组件
脚本功能说明:1、安装包执行前,调用第三方读取插入的设备(第三方程序执行读的功能,并将读设备的结果写到txt中)2、分析txt的设备结果,并根据读取结果弹出不同的组件。3、脚本控制了组件选择页必须只选一个才允许“下一步”可用...
2022-07-28 13:42:12
450
原创 Delphi XE7+Webservice三层架构ERP系统简介
本文介绍了使用XE7+FileDAC+WebService技术方案搭建的三层架构的ERP系统案例展示,目前在畜牧业中使用,尤其适合中小型企业。
2022-05-31 15:57:13
1591
2
原创 Delphi XE2实现字符串(base64为UTF-8 编码)的gzip解压
因业务需要,调用服务端接口返回的content内容是加密的,加密流程为:BASE64.encode(ZIP 压缩(xml 明文))。其解密流程为:BASE64.decode(ZIP 解压缩(UTF-8转码))其中的ZIP压缩实际为GZip压缩,两者的压缩方式稍有不同,使用Delphi在解压时就需要不同的方法来处理。查找了各种资料,最终确定使用zipLibEx的源码包+搜索的一些使用技巧可以解压gZip。因为业务需要,本文也加入了base64解密、utf-8转码的一些操作技巧。usesSoap..
2021-05-06 16:36:19
1219
原创 Delphi(XE2)+Win10实现系统服务使用CreateProcessAsUser调用外部界面程序
众所周知,使用Delphi创建的Service Application系统服务,在XP系统中与桌面交互十分流畅,可以随意打开自己程序的窗口,不过自Vista系统开始后台服务不再允许与桌面系统直接交互了(关于session 0 的详情百度相关文章可见原理描述)。究其原因是因为windows认为系统服务在设计的初衷就不应该与桌面UI进行交互,但是我们的项目有时候又不得不借助系统服务实现开机自启(目标是做一个开机自启的中间件,需要界面)。有人说添加注册表或者放到启动项下就可以了,的确,这是一种方式,但是如果想要更
2020-09-15 17:33:32
2595
3
原创 Delphi XE2中调用DLL窗体传递Application句柄
传统调用DLL窗体,为了达到DLL窗体与主程序融为一体的效果,通常会把主程序的Application传递到DLL工程中,类似如下方法:procedure SynAPP(App: THandle); stdcall;begin//传递ApplicationApplication.Handle:= App;end;或者直接把Application作为参数传递的:procedure DLLEntryPoint(Reason: DWORD);begin case Reason of
2020-06-02 16:51:38
1048
1
原创 云露中间件(XE7+FireDAC)开发案例
“真正的程序员用C,聪明的程序员用Delphi“——致敬。数据库说明目前中间件仅支持SQLServer2008 R2版及以上数据库Delphi开发环境作者开发环境XE7,因使用FireDAC,建议使用XE2及以上版本,运行更稳定还原测试库为了方便使用Demo,请用第二条所述数据库还原数据库【YX_DB.bak】中间件配置打开..\bin\HyService.exe 云露...
2019-11-26 19:19:32
589
原创 三层架构-服务器端:通用WebService数据交互中间件概述
网上搜索Delphi三层架构的服务器端开发,大部分的博文都详细阐述了如何使用DataSnap、Socket或者Dcom技术来时间与客户端的信息交互,大部分需要安装插件……虽然这种种方式能实现三层通讯,但是在跨语言通信方面似乎都没有招了。于是我们马上想到一个平台独立、低耦合的技术——WebService,畅想一下,如果我们的服务器端中间件能够支持Java、C#、Delphi等多种开发语言的客户...
2019-11-24 21:51:32
2415
1
原创 Delphi XE2下使用Idhttp实现带Header头发送get请求
TIdHttp带自定义头部信息发送请求的应用场景,一般是使用post请求中比较多,不过使用Get请求也是类似的。本文介绍一个简单的实现方法。在窗口中放一个TIdHttp控件,以下是具体实现的代码:procedure TForm2.Button4Click(Sender: TObject);var aStream: TStringStream;begin IdHTTP1.Han...
2019-11-07 14:30:55
4086
原创 delphi 使用cef3谷歌浏览器内核加载带header请求头的网页
上一篇博文介绍到用IE加载带Header请求头的网页,本篇介绍使用cef3实现同样的功能。我使用的谷歌浏览器内核是49版,支持XP系统的最新版,所以,版本有够低的了。procedure TForm2.LoadUrlEx(const AURL: string);var Header: ICefStringMultimap; Data: ICefPostData; Reques...
2019-11-07 14:20:18
1378
原创 Delphi XE2实现IE打开带请求头的网页
因工作要求,需要实现打开带指定格式头部信息的网页,以做防伪校验。头部信息格式与网页端经过沟通协调一致,且网页内部所有的跳转连接都需要手动增加指定格式的头信息。以下是IE中实现的代码,另外一篇博文会介绍使用CEF3实现同样功能的源码:1、打开指定网页:procedure TForm2.Button1Click(Sender: TObject);varURL:OleVariant;...
2019-11-07 14:13:20
359
原创 Delphi - TChromium 实现只显示网页的某一个DIV的内容
因为工作需要,一直在使用TChromium插件展示网页内容。今天遇到一个需求:只展示某个网页(商品购买详情页面)中的商品详情。因为TChromium具有良好的js脚本支持,当时也觉得一定可以实现这个功能。先看看网页端的源码,我需要只展示 div class = “w1000” 的内容。我的思路是先遍历网页中所有的div元素,设置其他元素不可见,只留下我需要的div就可以了(包括展示它的...
2018-12-13 15:52:57
2469
原创 Delphi XE2实现永久性安装字体
无论是安装一些系统字体还是自定义的字体文件,本方法都是适用的。需要注意的是目前网络上介绍的使用AddFontResource实现安装字体,但是仅仅对本次设置有效,重启之后字体还是会消失。使用本文方法可永久实现字体的安装。看看MSDN中关于安装字体的介绍:To install unique hidden font resources follow these steps:1 Copy t...
2018-08-09 15:21:26
1604
原创 Delphi 设置系统默认浏览器为IE
设置默认浏览器的功能其实还是通过修改注册表项来实现,本文的例子中使用了完整的Delphi源码来实现该功能,且不需要重启机器。百度各种资料会发现,基本上给出的答案都是修改HKEY_CLASSES_ROOT\HTTP\Shell\open\command就可以,可是经过我的多次验证——呵呵,并不行。于是又重新搜索了各种资料,终于让我找到了:procedure TForm1.SetDefa...
2018-08-09 15:14:19
870
原创 Delphi/XE2 使用TIdHttp控件下载Https协议服务器文件
之前的一篇博文详细描述了使用TIdhttp控件下载http协议的文件,在我项目的使用过程中发现对于下载Https协议中的文件与Http协议的文件不同,毕竟Https在HTTP协议基础上增加了SSL协议。接下来我们就来看看如何下载Https协议的服务器文件。HTTPS既然是增加了SSL协议,那么我们就处理SSL协议这关就可以了。开发环境:XE2 + Indy10Delphi控件:TIdhttp,Id...
2018-06-20 09:41:10
2502
原创 Delphi XE2 使用IdHttp下载文件(Get方法),支持断点续传
历时2天封装并自测了本页中的线程类。使用IdHttp实现文件下载,支持暂停下载、断点续传,使得文件下载更快;与UI的交互使用消息传递机制实现。源码已经在项目中使用,现将源码成果公布出来,供需要的人参考。线程处理的逻辑大致如下:1、先判断本地是否存在文件,如果没有,使用文件名+.tmp作为下载过程中的文件名;下载完成后更名为原始文件名;2、如果存在文件名+.tmp,载入内存后继续下载(断点续传);3...
2018-06-19 11:41:48
3607
原创 【云露中间件】EXE主程序+DLL窗体嵌入TabSheet架构——理解篇
前面我们已经了解过云露中间件的基本实现原理和优势,现在我们再来了解主副架构方面的知识。我们这里说的主副架构是指Exe主程序+DLL窗体模式的架构。在我的另外一篇博文里也有一篇文章给出了DLL窗体嵌入Panle的源码。但是我们现在说的是将DLL窗体嵌入TabSheet页。看起来似乎没什么区别,但是嵌入到TabSheet之后需要增加很多细节处理:嵌入的方式、页签的切换、关闭等都需要考虑。业务功能简单时...
2018-06-05 16:08:37
1104
2
原创 cxGrid设置列为按钮并设置按钮事件
因为业务需要展示,在每行的数据最后一列显示一个按钮,点击按钮删除对应的数据。使用cxGrid能完美实现。1、设置按钮列的properties是buttonedit2、设置properties下的属性 viewStyle=vsButtonsAutoWidth3、设置Options中的 ShowEditButtons=isebAlways4、点击prop
2018-06-01 10:11:53
1218
原创 [Delphi] XE2下实现标准的3DES加解密一种方法(可与Java,c#互通)
我之前在CSDN下载中放置了一个资源,介绍的是XE2实现与java互通的3DES加解密的一种解决方案。现在回想起来这个资源介绍的非常不清楚,没有交代3des的加密模式。在这里我重新介绍另一种实现3DES标准加解密的方法。目前经过测试仅实现了3DES中ECB加密模式,填充方式为pkcs5pading的加解密,加密后的内容可用在线3DES加解密来验证,可得到与网页一致的加密结果。非常遗憾的是没有找到加...
2018-03-07 17:19:44
1999
原创 [Delphi]实现使用TIdHttp控件向https地址Post请求
开篇:公司之前一直使用http协议进行交互(比如登录等功能),但是经常被爆安全性不高,所以准备改用https协议。百度了一下资料,其实使用IdHttp控件实现https交互的帖子并不少,鉴于这次成功实现了功能,再次总结分享给大家。开发环境:XE2 + Indy10;Delphi控件: TiDHTTP控件 TIdSSLIOHandlerSocketOpenSSL控件2> libeay32
2018-01-16 17:09:10
19958
1
原创 [Setup Factory]设置打包后生成的安装程序的图标
Setup Factory制作的安装包在大部分的情况下都是默认的图标,类似一个小电脑。但很多时候我们都需要一个个性化的图片,需要把打包后的安装文件setup.exe设置为我们自己的图标。网上大部分的资料是 利用eXeScope工具制作一个图标,再导入,但是Setup factory其实已经提供了现有的功能能够直接替换图标。步骤:(我用的是英文版的,大家可以对照看看)1、找到工具主页面中
2017-11-17 09:38:45
6998
原创 Delphi Debug模式下可以但是Release模式下报错原因之一
今天上午才遇到的一个问题,Delphi的DLL调用C编写的dll(不太确定是不是C语言),在debug模式下运行好好的,切换到release模式下竟然无法正确返回?这个DLL在我们的其他exe程序中调用一直没有问题,为什么现在会产生问题呢?这个问题困扰了我两天,一直以为是C语言处理的内存方式与delphi有差异而导致的,没想到竟然是因为它!!!把工程设置中的 Optimization 中的勾去
2017-11-02 15:35:45
2426
原创 Delphi 实现卸载Windows应用程序(类似360软件管家-卸载程序)
摘要:本文主要梳理的是实现卸载程序并等待卸载程序运行结束的方法,如果仅仅是调用卸载程序,相信难度也不大,但是我们需要等待卸载程序执行完毕,这就有些费脑筋了(是不是想到了360?没错,360也具有这个功能)。这套逻辑是最近项目需要自己研究出来的,可能存在不完善的地方,如果有路过的朋友可以指正,不胜感激!正文:很多人都知道获取应用程序的卸载命令很简单,都记录在注册表中,在win64系统下,
2017-10-25 15:06:41
1527
1
原创 Delphi根据进程PID等待进程结束或者结束进程
本文描述的是已知窗体标题,先获取某个程序的进程PID(即在任务管理器中的 进程ID),实现等待进程结束或者直接杀掉进程的方法。因为网络上直接结束进程的方法很多,本文不做深究,主要是等待进程结束。使用以下代码即可实现:
2017-10-25 14:57:09
1621
转载 使用SHGetFileInfo函数获取任何文件大图标
为了实现在vista和更高版本的系统中能够获取任何文件的大图标(48*48像素,甚至256*256像素),真是找了很多资料,最终经过朋友的帮忙找到了实现方法。 网络中有很多获取exe大图标的方法,可惜不能获取所有文件的,有使用ExtractIcon函数也有介绍使用注册表实现的,经过仔细测试,最终采用SHGetFileInfo函数。SHGetFileInfo的使用方法网上资料很多,但是真正能
2017-10-11 13:25:29
4548
原创 cxGrid设置列为按钮并设置按钮事件
在cxGrid实现在每一行的数据中显示一个button按钮(设置列属性为buttonEdit),并且关联点击事件。
2017-08-29 10:18:06
2518
1
转载 [Delphi]获取机器的Mac地址
从网上搜罗来的一个函数,非常实用,贴出来带大家分享,也供自己查看。//返回值是主机AServerName的MAC地址//AServerName参数的格式为\\ 或者 ServerName//参数ServerName为空时返回本机的MAC地址//MAC地址以XX-XX-XX-XX-XX-XX的格式返回//function GetMacAddress2(const AServerName
2017-07-06 16:23:01
1971
原创 [Delphi] pSafeArray与TBytes类型转换
虽然Delphi有这自己独特的语言优势,但是跟其他语言加解密互通时,处理显得尤为麻烦。比如3DES加解密,网上下载的一些加解密方法加密的字符使用java无法解密,或者java加密的文本,无法用D解密。 无奈之下使用其他语言封装加解密部分,再用D来调用。前一篇博客中说到的是使用c++封装dll的方式,但是有非常大的问题,加密串的长度有限制,且使用静态数组分配内存,占用了不少的内存空间。经过多
2017-06-27 11:16:18
1861
原创 Delphi 主窗体Panel中嵌入DLL窗体功能详细源码
自从我的博客被尘封了五年之久,终于选择在今天以主程序嵌入DLL窗体架构的源码为礼物送给大家,希望资源与大家共享,共祝未来的Delphi能够走的更远。由于现在技术的日益发达,各种软件的界面日益美化,很多客户光看到原生的Delphi程序界面就会选择抛弃我们的产品。于是我们不得不对界面进行美化,对架构进行重新整理。首先要感谢360、QQ这些软件给我们提供了漂亮界面的基础:一个大标题导航栏+操
2017-06-08 14:54:57
4175
原创 两数相除保留小数位
C#默认的除法运算符 / 返回是不带小数点的值(取整)。若要保留小数位的话,用string.Format处理。protected void btnPlainPostBack_Click(object sender, EventArgs e){ int num1 = 17; int num2 = 3; double result = 0; result = num1 / num2;
2011-04-08 14:23:00
1512
原创 开始学习ASP.NET
在目前这么局势动荡的情况下,无论如何学习总是没错的。纠结的是一会看c#教程,一会看ASP.NET的教程。好在我的目标是ASP.NET,若是学好了,那就开发网页挣外快吧~不过接触Delphi就了,很多东西都需要学习。css、JScript、连审美观也要同步跟上,否则以桌面软件的设计去做Web那怎么能富客户端呢? 最近这两天学一点记一点,万一哪天重头开始也有资料可看。
2011-04-08 14:20:00
293
原创 学会使用SafeArray 之 Delphi 篇
在学习的时候曾经百度了一下,想查找关于delphi中SafeArray的用法,没想到资料竟然如此之少,甚至连一篇相对完整的都没有。也许正如田师傅所说,现在高手们都在实行“技术封锁”了? 在CSDN技术中心有一篇关于C++的使用,说的比较详细。鉴于手中有田师傅写的代码,特拿来一部分对照自己学习的,翻译为Delphi版本。留作笔记,日后翻阅。=============================================================================== SA
2010-11-05 14:07:00
1839
XE2实现MQTT主题发布及订阅,支持MQTT协议V5、汉字传输,亲测可用
2023-07-21
delphi XE2实现与网页互通的SM2国密加解密算法
2022-11-07
【NSIS】安装前等待读设备结束并根据设备类型选择组件
2022-07-28
innoSetup-无界面静默安装系统服务脚本
2020-11-23
Delphi XE2实现带汉字的通用RSA加解密算法
2020-11-16
Delphi(XE2)+Win10实现系统服务使用CreateProcessAsUser调用外部exe
2020-11-05
Delphi/XE实现好看的日历html.rar
2020-01-17
云露XE7 FirDac+SQLSERVER中间件应用.zip
2019-11-24
Delphi XE2+与Java互通3Des加解密方法
2018-03-07
Delphi XE2+标准AES加解密算法(AES/EBC,CBC/PKCS5Padding-base64)
2017-12-08
Delphi XE2+Dev 主窗体Panle嵌入DLL窗体源码
2017-06-08
Delphi与Java互通3Des加解密类(XE2)
2017-06-01
delphi-CDMA短信猫收发短信(中英文,无报错)
2015-07-06
delphi-CDMA短信猫收发短信(中英文)
2015-06-24
delphi 文件加密解密(支持大文件)
2014-09-25
[delphi] OleContainer加载Excel文件,屏蔽菜单栏、工具栏
2014-09-11
Silverlight_4_Toolkit
2011-03-17
学会使用SafeArray 之 Delphi篇--源码
2010-11-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人