自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 资源 (5)
  • 收藏
  • 关注

原创 修正TiKnob的指示箭头显示问题

iocom官方只支持到D7,但是可以运用于新版本,只测试过显示运用,没测试过OPC特性(这个在新版本运用中估计有问题)。是由于Canvas和IndicatorRect都有Left和Top属性引起的。在10.4中拖入一个TiKnob,发现“Indicator”没有显示出来,估计其它控件也有类似的问题,一般照此修改就可以。重新编译(不用重新安装),正常。TiKnob也发现BUG。

2023-11-09 18:05:38 258

原创 FMX的TListBox单选列表框

TListBox功能比较全,对于选择项,有“两种”模式,一种就是ListItem选中(界面上就是焦点和颜色变化),可以无,单选和多选。实际上,通过DefaultItemStyles.ItemStyle可以改变ListItem的许多样式,比如字体,颜色等等。需要一种类似TRadioBox的单选列表框。如果Item项是固定的,可以直接在TRectangle里放置TRadioBox来实现,界面还灵活。如果不考虑界面的CheckBox的方框,这样就可以了。但是如果Item项是动态的,用拼凑的实现就不灵活了。

2023-08-25 12:44:47 189

原创 DelphiMVCFrameWork 源码分析(三)

框架里的JWT Token 登录授权处理中间件比较简单,不支持验证码处理,签名方法也只支持一种HS(HS256,HS384,HS512),不支持RS(RS256, RS384, RS512),ES(ES256,ES384,ES512),PS(PS256,PS384,PS512)等,实际运用中还得扩充。中间件和控制器的一个主要区别是:中间件是单例模式(所有请求共用一个实例),控制器是每个请求一个实例,所以引擎在添加这二者时,中间件是添加实例,控制器是添加类型。可以看框架自带的中间件的代码,是如何实现的。

2023-05-13 16:03:24 863

原创 DelphiMVCFrameWork 源码分析(二)

DelphiMVCFrameWork框架的路由(Router)是通过Delphi的Attribute来实现的,作用于Controler类和方法。4、每个Controler包含一个或多个动作(Action),Action就是Controler的公开方法(public Method),同时伴随着RTTI Attribute(包含Router和其它参数)。year=2021?前面说过,在方法的MVCPath Attribute 中,参数是以"($XXXX)"标识的,所以通过正则表达式可以轻松获取参数名称列表。

2023-04-27 20:44:21 1000

原创 DelphiMVCFrameWork 源码分析(一)

正如框架名称,采用服务端的MVC架构,具体是采用了路由器(Router),控制器(Controler),中间件(Middleware)等结构,这样松耦合的结构,更有利于项目的开发和构建,也更有利用项目的扩展和维护。TMVCRenderer类里定义了各种各样的Render()方法,TMVCController是TMVCRenderer的子类,可以方便调用。对URL路由,URL参数等进行解析,找到当前执行的Controler及要执行的方法(Action)及参数等,嗯,我们可以在这里"截胡"。

2023-04-21 23:53:52 966

原创 Delphi DataSnap 流程分析(二)

里分析的一样,只是到了最后,也就是方法TCustomWebDispatcher.DispatchAction(),接着进行后续处理。因而执行Dispatch := DSHTTPWebDispatcher1(TDSHTTPWebDispatcher类),这种方式只支持HTTP(普通HTTP和REST HTTP)通信,不支持TCP通信。可以看到DataSnap内部的处理还是依赖 DBX框架。这个方法比较啰嗦,要处理各种情况和格式。又到了DoCommand()方法了。客户端的方法调用处理比较繁杂。

2023-04-20 22:41:23 794

原创 Delphi DataSnap 流程分析(一)

好像和HTTP都没什么关系,和TDSServerTransport有关系,TCP的有个组件TDSTCPServerTransport,也看看它的继承关系。现在的方式2添加了HTTP支持,但是其实现方式不是直接通过WebModule来实现,而是转了个弯,通过桥接Indy的Http来实现。开始引入了Dispatch,到这里基本就明白了,后面的处理方式和一般的HTTP类似,只是简化了(DataSnap专用)。我们先来简要分析下方式2的流程,然后主要分析方式1的流程,方式3的流程类似方式1,就不做分析了。

2023-04-20 20:18:18 1171

原创 Delphi Web Server 流程分析

TIdCustomHTTPServer.DoExecute,这个方法是个复杂的处理,主要是循环处理各种HTTP 方法,解析请求头,判断请求类别,归类参数等等,然后调用DoCommandGet(子类通过此方法来具体处理),最后给客户端还回响应Response,直到连接断开。这里添加了ip6支持,然后设置IO句柄(用于https,加密,压缩等),然后是设置Scheduler(用于设置线程或纤程)。题外话:Delphi的WebBroker技术经过了多年的发展,随着大环境的发展和变化,其实现方式也不断扩展和进步。

2023-04-19 17:02:13 1073

原创 DELPHI设置Windows文件夹权限

Windows文件夹权限操作

2023-02-22 01:16:49 383

原创 delphi 验证码图片

参考网上的一些文章,写一个简单的自用验证码图片产生器。

2023-02-13 20:50:47 325

原创 扩展FMX下TGRID的TPopupColumn

FMX下的TGrid,通过扩展TPopupColumn显示枚举字段数据

2022-07-12 00:08:56 492

原创 (原创) Delphi中LiveBinding 绑定非数据库类数据的时候显示字段自定义名称(二)

DELPHI 10.4版本后,有关Bind的源代码修改了,原来的适用于10.3.3以前的方法不适用了,再来分析下10.4版本以后适用的方法。

2022-06-17 02:21:25 483

原创 (原创) Delphi中LiveBinding 绑定非数据库类数据的时候显示字段自定义名称(一)

DELPHI默认下,Grid控件通过TAdapterBindSource绑定到一个TObjectList<TObject>列表时,Grid的Header显示的是TObject的属性名称。不能像绑定数据集时显示自定义名称,我们来看看其是怎么实现的。Grid是如何绑定数据的,通过Grid的绑定类TLinkGridToDataSource,追踪到单元Data.Bind.Grid.pas。TCustomLinkGridToDataSource本身没什么相关的方法,其父类是TCustomLinkGri

2022-05-11 19:45:25 573

原创 Firemonkey Control的TabStop处理

Firemonkey Control TabStop

2022-03-11 00:00:39 385

原创 FireMonkey Control的Paint顺序

写FMX控件时,在追踪控件的绘制调用顺序的时候,研究FMX的源代码,老是看不出控件的Paint顺序,TControl的源代码里,只能追踪到源头PaintInternal(),并且PaintInternal()是不可覆盖的,然后代码里就没有看到哪里有调用PaintInternal()的地方(PaintTo(),ApplayEffect()等方法也调用了PaintInternal(),但是这个只是特别的应用Effect的调用,不是通用的调用),而且在TControl的下断点调试比较麻烦,会被其它的控件和FORM

2022-02-13 21:26:21 246

原创 openssl 几个函数运用注意

1、HASH的几个函数 md5(),sha1(),sha256()等几个函数,不能直接独立拿来用!这系列函数是库内部用的。实际运用中的HASH,要用openssl的摘要算法:EVP_DigestInit(EVP_MD_CTX *ctx, const EVP_MD *type) int EVP_DigestUpdate(EVP_MD_CTX *ctx, const void *data, size_t count) int EVP_DigestFinal(EVP_MD_CTX *ctx, unsigned

2021-10-29 11:25:22 824

原创 VCL 窗体 Z-ORDER

现在基本都是在做FMX运用,最近一个项目本来也是用FMX来做,但是在做初步规划的时候发现,FMX比较麻烦,因为要和下位机通信,并且实时显示下位机送上来的数据(SOCKET通信,各种传感器的数据),波形图显示方面的控件,FMX下没找到好用的,VCL下倒是有IOCOM等工控控件可以用。决定还是用VCL来做,而且也只在WINDOWS下运用。搞习惯了FMX的界面布局,在VCL没有LAYOUT控件真感觉不方便啊。回到正题,在一个ShowModal窗体上再弹出ShowModal窗体,如果这个窗体不是需要满屏显示

2021-05-05 17:33:05 206

原创 Delphi DataSnap/Rest 的重定向处理

DataSnap 服务器如果需要特别的重定向请求,比如:如果客户端(不管是浏览器还是客户端App)通过特别的URL请求服务器,则可以在DataSnap的WebModule模块的Actions列表的DefaultAction(向导字段生成的)事件:procedure TWebModule1.WebModuleDefaultAction(Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolea.

2021-04-22 11:31:51 546

原创 Delphi Android 下的定时对话框

一个很普通的定时对话框,比如自动更新的确认对话框,网上找了好久竟然没有,(Delphi Android下的, JAVA的一大堆,比如这个 https://github.com/MZCretin/AutoUpdateProject ,是国人写的,看着就不错,虽然看不懂)。安卓是一个很奇怪的系统,窗体都是异步的非模态的,这样实现阻塞对话框很麻烦。有人提过不要用TForm来实现对话框,用TFrame来实现,我感觉用TFrame来做也是很麻烦。看过一个高手写的DEMO,是自己“画”的,看着累。偶然看到一个帖

2021-04-15 23:08:24 398

原创 DSRestConnection的超时设置

DSRestConnection的超时设置新版本的delphi的DSRestConnection的属性HTTP是基于 THttpClient的,所以,超时设置就这样:DSRestConnection.Http.ConnectionTimeout := 5000还有个ReadTimeout,相当与THttpClient的的ResponseTimeout...

2021-03-29 20:49:15 209

转载 DataSnap的Session问题

DataSnap的Session问题DataSnap系统中,如果服务端重启或者某种原因错误,会引起客户端的Session超时错误。如果不处理,只能是客户端重启,这样不好。这里有一个帖子提到了:https://stackoverflow.com/questions/58989507/datasnap-session-has-expiredDatasnap session has expiredI've been using client server application using d

2021-03-29 20:11:04 414

原创 关于类构造器的注意点

DELPHI的类构造器class constructor 注意点。class constructor 的一般行为和initialization 行为一样,但有一点区别,就是不能在class constructor中注册自己,在initialization 中可以,见示例:unit Unit2;interfaceuses System.SysUtils, System.Cl...

2019-03-22 10:50:46 255

转载 解决delphi客户端用TIDhttp POST 传参中文乱码问题(转)

用Tidhttp post方法向服务器传参,碰到中文乱码的问题。1、delphi传中文到Java是乱码。上代码:procedure TForm18.Button1Click(Sender: TObject);var userName : String ; userPwd : String ; Url: String ; Params : TStringLis...

2019-03-18 22:27:06 6448

转载 Delphi中强制IdHTTP使用HTTP1.1(转)

Delphi中强制IdHTTP使用HTTP1.1(转)标签:delphiwindows工具server2011-07-18 07:46952人阅读评论(0)收藏举报分类:Delphi IdHttp控件(29)前两天帮人写程序用IdHTTP控件往一网站发包如下:Delphi代码IdHTTP1.Request.Connection:='Keep-A...

2019-03-18 22:15:45 2102

原创 Delphi中的观察者模式运用

delphi message

2017-10-30 15:31:17 1090

转载 量子计算

https://www.zhihu.com/question/26933442

2017-10-23 19:48:33 270

转载 Window版本

http://blog.csdn.net/wjkaola123/article/details/51721348 GetVersionEx, 该方法在WIN8.1以后无效  参看: https://msdn.microsoft.com/en-us/library/ms724451.aspxmicrosoft提供的版本帮助https://msdn.micros

2017-08-12 13:56:05 469

原创 FMX从TCustomXXX继承控件的子控件,无法同时显示的问题

这个问题,我在盒子发了,也没有满意的结果。(http://bbs.2ccc.com/topic.asp?topicid=535134)模仿FMX的标准TPanel控件(这个控件没有什么实现的代码),自己写了个Panel,可以实现改变颜色及Stroke等属性,就是增加这几个属性:    //Appreance    property Fill;    pr

2017-07-31 01:49:33 777

原创 任意改变FMX的TPanel控件的颜色

FMX的控件的外观以Style为主,但是也有不方便的地方,比如要任意改变TPanel的颜色,只能写代码,摸索了几天,初步实现了unit FMX.JKPanelEx;interfaceuses System.SysUtils, System.Classes, System.Types, System.UITypes, FMX.Types, FMX.Controls, FMX.Ob

2017-07-17 02:00:35 3172

原创 FMX的Style中的Effects的注意问题

delphi中,当我们在IDE的窗体中添加控件时,会自动把相关单元加入uses的,所以一般不用考虑这个问题。但是,如果你在设计Style时,在Style里用了Effects(不是自带控件Style里的effects),程序运行时,会出现找不到你所修改的effect类的致命错误。这是因为uses缺少了FMX.Effects 和  FMX.Filter.Effects 这两个单元,但是delp

2017-07-15 19:42:45 1341

转载 Python图像处理库(2)

1.4 SciPySciPy(http://scipy.org/) 是建立在 NumPy 基础上,用于数值运算的开源工具包。SciPy 提供很多高效的操作,可以实现数值积分、优化、统计、信号处理,以及对我们来说最重要的图像处理功能。接下来,本节会介绍 SciPy 中大量有用的模块。SciPy 是个开源工具包,可以从http://scipy.org/Download 下载。1.4.1

2017-06-09 22:05:07 597

转载 Python图像处理库(1)

第 1 章 基本的图像操作和处理本章讲解操作和处理图像的基础知识,将通过大量示例介绍处理图像所需的 Python 工具包,并介绍用于读取图像、图像转换和缩放、计算导数、画图和保存结果等的基本工具。这些工具的使用将贯穿本书的剩余章节。1.1 PIL:Python图像处理类库PIL(Python Imaging Library Python,图像处理类库)提供了通用的图像处理功

2017-06-09 22:03:33 1204

原创 访问受保护的属性

偶尔翻Marco Canto的书,看到这个小技巧,记下来,老是忘记这个小技巧。比如要访问TDBGrid的Col和Row属性,这两个属性是Protected,一般不能直接访问,可以这样加个套:type  TFakeDBGrid = class(TDBGrid);然后:TFakeDBGrid(dbgrid1).Col; TFakeDBGrid(dbgrid1).Row;

2016-07-24 17:03:36 671

原创 indy httpserver 接收URL包含中文参数乱码的问题

在测试TIdHttpServer的时候,发现浏览器提交的URL包含中文时会乱码,我用的是XE7 UPDATE1,INDY是10。procedure TForm1.idhtpsrv1CommandGet(AContext: TIdContext; ARequestInfo: TIdHTTPRequestInfo;  AResponseInfo: TIdHTTPResponseInfo);

2016-07-06 23:53:37 4517 1

原创 关于线程的停止、挂起、退出(修改)

原来的实现:http://blog.csdn.net/jankercsdn/article/details/8874469 有许多不完善的地方,使用中进行了一些改动和完善,unit uHardWorkThread;interfaceuses Windows, Messages, Classes, SysUtils, SyncObjs;const WM_QUIT_HARD_T

2016-05-05 16:03:39 2415

转载 SQL Server 中Inner join 和where的效率差异

SQL Server 中Inner join 和where的效率差异总结出来时说:对小数据量(如是有了如下比较结果(均在查询分析器中查询和计时):语句(1)declare @operatorName nvarchar(50)set @operatorName = '%'select distinct item.* from item , cu

2016-03-03 15:44:16 902

转载 解析sql语句中left_join、inner_join中的on与where的区别

解析sql语句中left_join、inner_join中的on与where的区别

2016-03-03 15:41:51 277

原创 百度地图信息提示框的修改

一个小项目,百度地图的定制,电脑用的是触摸屏,支持手写输入,中文输入直接调用系统的虚拟键盘,手写输入是参考网上高手写的一个控件。百度的信息提示框里的搜索框里要输入查询地址,就是去哪里,到哪里那个地址输入框,要解决的问题是怎么把虚拟输入键盘的内容赋值到这个地址输入框,并要判断当前是哪个输入框。一般运用信息提示框是调用这个库“http://api.map.baidu.com/library/S

2015-04-30 12:08:55 9620

原创 raize控件的安装注意

重装电脑了,又要折腾DELPHI的安装了,目前用XE6,几个控件是必装的,DEV,RAIZE,TMS,FASTREPORT等。一般安装顺序是DEV,RAIZE,TMS,FASTREPORT,装完DEV后,启动DELPHI,正常,接着装RAIZE,启动,提示找不到BPL了,重装,填加路径等等,均不行,网上找原因,收藏里找相关记录,没找到,唉,折腾人。。。。。。。。原来安装也有碰到过这个问题,

2015-01-21 09:59:42 4433

原创 关于窗体透明的注意事项

窗体透明,控件不透明,简单有2种方法:1:OnCreate中

2014-11-19 09:45:32 465

DialogTimeout.rar

一个Demo,开始是为自动升级写的,后来做成通用的。比较简单啊,纯delphi实现的。 真机在红米9A下测试过,其它机型未测试。delphi版本是10.4.2

2021-04-15

TSC_TE344.rar

控制TSC 标签打印机的源码(D7 开发,高版本可以直接用),测试过 G310,TE344 打印机。代码带TSCLIB.DLL, 实际测试时请安装打印驱动。

2020-04-05

DelphiForBaiduPictureTextRecognition.rar

delphi 百度云图片文字识别,利用Indy调用百度云API接口进行在线识别,源代码,但是KEY要首先申请才能运行。

2019-12-06

win32中的串口通信(英文)

这篇文档不错,说的比较详细,英文的,凑合着看吧

2010-03-03

MRPII原理

MRPII比较完整的文档

2007-08-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除