DELPHI 个人小心得
以后换名字
这个作者很懒,什么都没留下…
展开
-
idhttp与XE10自带的REST系列,ADO与FDC系列对比
一、idhttp与restclient对比二、idhttpserver与dsserver对比三、ADO与FDC连接数据库对比原创 2022-10-08 17:21:52 · 1037 阅读 · 1 评论 -
数据上云(单机或内网C/S升级INTERNET版)
数据上云(单机或内网C/S升级INTERNET版)原创 2022-09-13 14:04:02 · 1100 阅读 · 0 评论 -
windows server 运行带界面服务端的问题
在windows server 上运行的服务端软件,如果服务端的软件需要调用界面的控件时,远程登录服务器和在本机调试时一切都好用,但一旦退出服务器的远程桌面,服务端软件就不正常了。原创 2022-06-28 15:38:59 · 816 阅读 · 0 评论 -
DELPHI仿花生壳(外网穿透内网)
主要使用的功能就是在内网络架设服务器软件,然后在外网进行访问。内网网络穿透原创 2022-06-22 18:23:27 · 1284 阅读 · 0 评论 -
delphi中idhttp完成restserver
为什么要使用IDHTTP代替restserver呢?个人感觉还是IDHTTP更底层一点,而且还支持XML,并且接收值可以是JSON,也可以不是,返回值也是一样。可以任意返回内容,包括返回类似于HTML的内容。原创 2022-06-20 18:42:58 · 986 阅读 · 0 评论 -
人脸识别服务器端软件设计(delphi XE10)
人脸识别服务器端软件设计(delphi XE10)原创 2022-04-27 13:22:17 · 1138 阅读 · 1 评论 -
DELPHI数据导入金蝶
部分金蝶软件需要的表格其实并不是标准的EXCEL表格,所以如果按EXCEL的方式生成,就无法在金蝶中进行导入。直接上代码var WXLogFile: TextFile; WXLogFileName: string;begin WXLogFileName := 'd:\jd.XLS'; Assignfile(WXLogFile, WXLogFileName); rewrite(WXLogFile); Closefile(WXLogFile); Assignfile(WXLo原创 2021-12-11 16:47:30 · 473 阅读 · 0 评论 -
扫呗接口单元设计
为了应景2022年3月禁止个人收款码用于商业场景,把以前的扫呗独立单元记录一下。语言环境:DELPHI一、建立一个独立单元,可以在程序任何地方进行调用。二、单元内容:1、为了简单,先把扫呗的原JSON内容定义成常量。2、生成订单号函数:生成毫秒级时间字符串+5位随机数+用户名(随便定义)3、生成POST通用函数:支付、查询、退款,只是地址与带入JSON不同,其它相同4、支付函数:带入必要固定参数------带入必要动态参数-----函数内生成拼接令牌(根据参数,采用替换法,或者自己写命令生成也原创 2021-11-28 18:40:53 · 328 阅读 · 0 评论 -
软件架构逐步调整过程(二)
四、各端直连硬件的独立程序:1、独立程序仅对硬件进行操作,不与数据库进行连接,所有执行参数由各端连接数据库后采用进程间通讯的方式传输。2、按通讯原路返回硬件执行结果与硬件状态,完成代码复用,避免一次修改后需要把想同代码部署到其它端的情况。五、后台端内部调整:1、由单标签模式修改为多标签模式,实现多表格可以自由切换查询结果,互相印证。2、设计通用参数表作为与其它端的数据交互基础,将权限等经常需要增加的内容保存在通用参数表中,避免其它端要使用开发新功能时必须后台先进行数据设置,达到各端可自行研发。3原创 2021-09-28 12:09:00 · 138 阅读 · 0 评论 -
软件架构逐步调整过程(一)
一、原软件架构说明(行业软件):1、各端内网直连sql server 数据库2、各端与外网服务器采用HTTP方式进行交互3、各端有连接打印机等其它外设需求,如PLC、串口设备、网络设备等4、各端包含后台、前台、专业端、不同外设端等。5、前台端固定周期生成历史数据二、调整过程:1、架设内网REST服务端,逐步接管非主营业务,如报表、查询、定时任务等2、各端连接其它外设方式修改为单独程序,采用进程间通讯的方式,达到代码复用3、通过内网REST服务端,采用JSON的方式,支持安卓或苹果等移动端原创 2021-09-06 12:01:48 · 322 阅读 · 0 评论 -
关于程序集成线上支付模块
关于线上支付的那些小问题:不涉及技术方面内容一、与线上支付对接阶段:1、先作小DEMO,把SDK等跑通,至少需要获取token、支付、查询、退款2、由小DEMO提取出最小单位的函数组成一个新的单元,如获取支付环节可以分解为支付前获取基础信息、支付前根据基础信息生成所有数据、支付后获取支付结果、支付后分析支付界面等。3、设置数据库内容,将支付、查询、退款中所有小函数单元的执行前参数,执行后结果保存到数据库中,这点很重要,一旦后期支付出现问题,如果只保存了执行后的结果根本没有办法去判断问题出在哪里。二原创 2021-07-28 17:01:06 · 174 阅读 · 0 评论 -
DELPHI 函数内容与函数的复用
完全从个人的DELPHI经验进行的总结,不一定适用其它风格:1、如果一个函数未来有可能还会增加参数,可以使用结构体作为参数,增加的参数放到结构体中,但多次复用后,发现如果漏修改了使用的位置,会导致数据不准确。为了避免这个情况发生,所有新增加的参数都单独添加,这样漏写了程序编译不过去,避免了数据不准确的问题。2、每个函数中坚决不调用函数外的变量,这样才会方便函数的迁移,针对系统中包含多端应用时效果很明显,针对不同的DELPHI版本,可以作开关变量进行适应。3、每个函数进入后,先接收入口参数的值,将入口参原创 2021-07-12 16:35:35 · 158 阅读 · 0 评论 -
统计数据池
软件产品统计数据池:背景:软件产品经常需要根据不同客户的不同需求进行统计修改,而统计必然会涉及到数据库、SQL语句,为了适应不同的需求,SQL会越来越长不方便维护,如果统计模块有多人进行代码研发,很容易造成在不同的统计时得到的结果不同。统计数据池:在数据库与统计模块中增加一个统计数据池,涉及统计时到数据池中进行读取数据,不使用SQL读取,这样可以保证不同人取到的数据不同问题,解决了每个人都需要对SQL进行维护的问题。统计数据池如果放到服务器中由单独程序负责,可以提高数据量大时进行统计的效率。...原创 2021-05-29 11:41:36 · 84 阅读 · 0 评论 -
DELPHI 编译开关
DELPHI 编译开关的简单应用场景1、根据不同的系统版本进行不同的编译//安卓编译{$IFDEF ANDROID}{$ENDIF}//windows 编译{$IFDEF MSWINDOWS}{$ENDIF}2、在工程中的某一个单元中,进行特殊的编译,手动调整为建立,或者不使用,就可以改变编译结果{$DEFINE qt}{这行可以理解为 qt 这个变量建立了}{.$DEFINE SOA}{这行可以理解为 SOA 这个变量不使用了}{$IFDEF qt} {写代码}{$原创 2021-04-03 09:25:06 · 508 阅读 · 0 评论 -
美团验票或其它在线验票思路
方案一:最正规的方法是向对方要接口文档。方案二:完全模拟人为操作进行验票方案三:模拟HTTP包操作与网站进行交互方案二说明:1、使用IE浏览器打不开的网站可以使用谷歌浏览器插件。2、模拟人为操作如果有可能被封账号可以考虑增加随机模拟干扰操作3、网站类的有可能需要增加定时刷新功能,即与网站保存心跳...原创 2021-02-23 18:00:27 · 791 阅读 · 0 评论 -
DELPHI 界面及操作小技巧
1、SHOW出来的窗口按ALT后会切换到主窗口,原因应该是按ALT时调用了主窗口的WINDOWS功能的菜单解决方案一:主窗口的borderstyle 修改为 bsnone。解决方案二:将SHOW出来的窗口的父窗口设置为一个PANLE等控件2、listview记录多时的记录定位for i := 0 to ListView3.Items.Count - 1 do begin if ListView3.Items.Item[i].SubItems[0] = edit1.Text the.原创 2021-02-23 17:51:48 · 671 阅读 · 0 评论 -
DELPHI 微信公众平台 订阅号(二)
一、采用IdHTTPServerunit fun_send;interfaceuses Winapi.Windows, System.Classes, IPPeerClient, REST.Client, REST.Types, System.JSON;function rest_get(server_url: string; send_name_strlist: TStringList; send_info_strlist: TStringList): string;func原创 2020-10-22 15:59:03 · 554 阅读 · 0 评论 -
DELPHI 微信公众平台 订阅号(一)(restserver 的方式失败了,得换控件了)
重无到有,记录连接微信公司平台的过程一、需要准备的资料1、一台有外网的服务器,开放80端口2、注册一个微信公众平台订阅号(个人只能申请这个)二、建立一个 restserver(dshttpserver的端口号必须是80)用来接入微信开发模式,参考以前写的https://blog.csdn.net/weixin_44387646/article/details/106218176。然后测试一下,能通讯并且收到返回值就可以三、建立一个新函数让微信可以验证//引用IdHashSHAf原创 2020-06-04 17:44:41 · 387 阅读 · 0 评论 -
delphi 时间函数
一、不同的电脑时间格式有可能不同,会导致转换时间格式数据时意外报错。二、需要写几个小函数来统计软件运行过程中的时间格式。1、数据库日期时间格式函数function format_sql_datetime(temp_datetime: string; date_interval: string = '/'; time_interval: string = ':'): string;var yyyy: string; mm: string; dd: string; hh: str原创 2020-05-26 11:28:26 · 397 阅读 · 0 评论 -
优惠思路设计
一、设计数据库1、优惠类型表(至少包括优惠类型名称、大类名称、小类名称)2、优惠信息表(至少包括优惠名称、所属优惠类型名称)3、优惠构成条件表(至少包括优惠名称、构成条件)4、优惠目标表(至少包括优惠目标,优惠金额)二、优惠计算例如:有一个优惠名称为‘10元优惠券’,购买A商品与B商品,则C商品减10元1、判断是否有A商品,如果有,A商品添加‘临时标记’,继续2、判断是否有B商品,如果有,B商品添加‘临时标记’,继续3、判断是否有C商品,如果有,C商品添加‘临时标记’原创 2020-05-21 16:33:56 · 286 阅读 · 0 评论 -
delphi xe10 restserver
一、NEW一个datasnap server基本默认选择,中间把HTTP打上挑二、打开ServerContainerUnit1单元三、DSHTTPService1控件的FormatResult事件中增加代码procedure TServerContainer1.ds_h_datacountFormatResult(Sender: TObject; var ResultVal: TJSONValue; const Command: TDBXCommand; var Handled: Boole.原创 2020-05-19 17:26:16 · 1104 阅读 · 0 评论 -
DELPHI编程中各种加速度方法
1、自己写代码生成程序,比如总需要向数据库增加新表,可以作一个程序,输入表名、字段名、属性等,自动生成代码2、函数通用,多写一些通用的函数。3、善用fraem控件,把常用的功能作成小框架4、复制粘贴辅助软件,把常用代码变成组合快捷键,然后直接CTRL+V5、函数如果入口参数未知,把参数作成结构体,省的每次加参数修改的地方太多6、善用窗口继承7、如果写APP程序,善用编译开关,先在WINDOWS下调试。8、常用的数据库表内容可以作成保存到TLIST中,什么时候用什么时候用函数调用出原创 2020-05-19 16:41:30 · 477 阅读 · 0 评论 -
delphi 项目软件架构升级之后台部分-行业软件
我对后台的理解,应该包括账号管理、参数设置、软件规则的设定、保密的设置与数据来源的设置。其它的功能应该分离出去,后台应该是独立于其它部分,后台与数据库相当于土建中的地基,只是基础而已,不应该涉及高级业务。当然也是分情况的,不要太绝对,比如我接手的这个后台,是管理员、财务、老板使用,所以包含的功能很多。功能划分:功能按使用人员或者功能类型进行划分,我是按功能类型分的。...原创 2020-05-02 19:16:03 · 217 阅读 · 0 评论 -
delphi 项目软件架构升级-行业软件
洗浴行业软件之delphi19年7月到新公司,居然是用delphi写的洗浴行业软件。软件架构为c/s+mssqldelphi部分:前台端、技师端、自助结账机、后台管理端、闸机程序线上部分mysql:php网上商城、微信公众平台软件涉及的技术相当’全面’,代码风格百花齐放,变量名称应有尽有,控件的用法也是各尽其能,整个系统没有数据库表说明、开发文档、流程图,比较统一的就是基本没有注解(其中...原创 2020-05-02 11:24:04 · 258 阅读 · 0 评论 -
delphi idhttp post json 上传 PHP $_post 接收
前提:PHP端用$_post 接收一、delphi idhttppost上传数据时如果使用temp_stream: TStringStream; 内存流的方式上传则需要指明IDHTTP的contentypevar idhttp2: TIdHTTP; temp_stream: TStringStream; temp_url: string; temp_str: ...原创 2019-12-26 10:03:03 · 1344 阅读 · 0 评论 -
DELPHI XE 2 JSON 生成与解析
一、生成var json: ISuperObject; json_sub: array of ISuperObject; i: integer;begin json := SO; json.S['i'] := '5'; json.O['show'] := SA([]); SetLength(json_sub, 3); for i := 0 to Length...原创 2019-12-25 16:18:56 · 1079 阅读 · 0 评论 -
delphi 7 升级 到 xe2 CHAR类型变化
7.0代码ROOM,STIME,GNAME,GID,gate:ARRAY[0..50] OF CHAR;function ReadCard(ROOMNO,GATE,STIME,GUESTNAME,GUESTID,track1,track2:pchar;CARDNO,st,Breakfast:pinteger):integer;stdcall external 'MainDll.Dll';...原创 2019-11-05 15:13:08 · 279 阅读 · 0 评论 -
delphi 中SetLength 错误问题
delphi 中SetLength 错误问题一、上代码var newbutton: array of TButton;//定义一个全局变量......SetLength(newbutton, 30);//设置长期newbutton[1] := TButton.Create(self);//赋值.....//如长度不够用,或重新分配了,newbutton[1...原创 2019-02-15 16:58:00 · 1183 阅读 · 0 评论 -
delphi 结构体的使用、Tbitmap和TMemoryStream的转换
一、定义结构体type Tfrequency_band_list = class frequency_band_name: string; frequency_band_pic_color: string; frequency_band_pic_Stream: TMemoryStream; end;二、结构体的使用//全局变量var frequ...原创 2019-02-26 15:25:55 · 2169 阅读 · 0 评论 -
DELPHI 控件的相对坐标与屏幕坐标转换
一、直接上代码var pt: TPoint; r: TRect;begin pt := Point(Edit1.Top, Edit1.Left); pt := ClientToScreen(pt); Edit2.Text := inttostr(pt.X); Edit3.Text := inttostr(pt.y); Mouse.CursorPos := Poi...原创 2019-02-27 13:51:45 · 3583 阅读 · 1 评论 -
DELPHI xe 动态效果多时的控件闪烁
一、问题:界面中有时会发生控件闪烁问题。二、解决方法:把闪烁控件的父控件的DoubleBuffered属性修改为TRUE原创 2019-03-07 11:26:24 · 1017 阅读 · 0 评论 -
DELPHI XE10 ANDROID 界面设计-个人心得
功能性的代码可以在WINDOWS下先调试好(代码中增加WINDOWS与ANDROID的编译开关,方便调试),否则在ANDROID里太费劲。一、用LAYOUT控件布局,使用控件的ALIGN属性来适应不同的屏幕大小二、先布局,后调整界面。三、有确定按钮的地方尽量放在屏幕上方,否则弹出输入法后,还得调整界面。...原创 2019-03-07 13:36:15 · 4983 阅读 · 0 评论 -
DELPHI XE 编译开关-一套代码不同平台编译
随便找个地方用就行,省的每个平台都要一个工程了{$IFDEF ANDROID} 这里是安卓{$ELSE} {$IFDEF IOS} 这里是苹果 {$ELSE} 这里是除了安卓和苹果 {$ENDIF}{$ENDIF}...原创 2019-04-10 08:52:54 · 763 阅读 · 0 评论 -
DELPHI XE 与PLC通讯(INTCPSERVER 二进制)
一、与PLC通讯采用TCPSERVER方式二、配合PLC发送二进制数据。var i: integer; RecClient: TIdContext; buf: TIdBytes;begin SetLength(buf, 2); buf[0] := ord('W'); buf[1] := BintoInt(Edit7.Text); with c_tcp_lis...原创 2019-04-10 08:57:51 · 1847 阅读 · 0 评论 -
delphi XE LISTVIEW导出EXCEL
1、调用listtoexcel('abcd', jjd_list, 5);//第一个参数没什么用,随便写的。第二个参数就是LISTVIEW。第三个参数代表哪列是数值型。2、代码function listtoexcel(ttname: string; tt: TListView; num_num: integer): string;var h, k, i: integer; ...原创 2019-05-21 10:59:04 · 835 阅读 · 0 评论 -
DELPHI 到底有啥用
DELPHI 可以写WINDOWS、ANDROID上的应用。基础控件也够用了,适合单人作战。WINDOWS上其实还挺丰富的,开发个东西也快,但现在用的人不多。ANDROID上资料更少了,但是开发点界面的东西还可以,作点演示小程序没毛病。 ...原创 2019-02-15 13:52:09 · 656 阅读 · 0 评论