delphi
得码刘永锋
专注delphi快速开发,以高质量高速度开发给你提供优质服务.
展开
-
TcxRichEdit发送消息移动到行尾
PostMessage(CxRichEdit1.InnerControl.Handle, WM_VSCROLL, SB_BOTTOM, 0);原创 2022-11-16 10:32:00 · 171 阅读 · 1 评论 -
视频敏感内容的采样检测/multipart的应用(用微信api)
1.视频图片采样2.对图片采样进行检测:检测代码如下(微信敏感图片检测):const cntURL = 'https://api.weixin.qq.com/wxa/img_sec_check?access_token=%s';var sURL : string; sResult, sIniFilePath : string; jResult : ISuperObject;/superobject vData : TMultipartFormData;//Syste原创 2021-07-23 10:15:40 · 375 阅读 · 0 评论 -
DELPHI XE 匿名函数的应用(同h5编程中js的调用)
unit Unit2;interfaceuses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Buttons;type TForm2 = class(TForm) BitBtn1: TBitBtn; pr.原创 2021-07-13 20:41:39 · 264 阅读 · 0 评论 -
DataSetConverter4Delphi
源码主页:https://gitee.com/lim417/DataSetConverter4Delphi?_from=gitee_search功能:dataset转json(TObjectJson)原创 2021-04-22 14:36:55 · 221 阅读 · 0 评论 -
cxGrid表头合并
cxGrid1DBBandedTableView1.optionview.header := false;原理: band是可以堆叠的.隐藏column.每个column绑定一个band性别和年龄的绑定的postion设置为个人信息(实现堆叠效果)下图为未隐藏标题栏的效果.隐藏标题栏后的效果:...原创 2021-03-18 09:48:44 · 513 阅读 · 1 评论 -
delphi 获取本机IP和MAC列表(win10下测试)
网上找到,补充了一个IPTOMAC的函数.unit LGetAdapterInfo;interfaceuses Windows, SysUtils, Classes, winsock;const MAX_HOSTNAME_LEN = 128; { from IPTYPES.H } MAX_DOMAIN_NAME_LEN = 128; MAX_SCOPE_ID_LEN = 256; MAX_ADAPTER_NAME_LENGTH = 256; MAX_ADAPTER原创 2021-02-07 15:56:15 · 645 阅读 · 0 评论 -
两种常用SuperObject的遍历
memo1.text := {"MYGUID":"s3","存款金额":30000.,"规格表示":null}例子1:var item, jo: ISuperObject;begin jo := SO(Memo1.Text); for item in jo do begin Memo2.Lines.Add(item.AsJSon(False, False)); end;end;例子2:var jo: ISuperObject; item: TSuperAvlE.原创 2021-02-04 23:10:46 · 1068 阅读 · 0 评论 -
腾讯短信签名方法 v3 delphi版本源码:
文档中心>API 中心>云服务器>调用方式>签名方法 v3:https://cloud.tencent.com/document/api/213/30654#Java腾讯短信签名方法 v3 delphi版本源码:var host: String; httpRequestMethod: String;// = "POST"; canonicalUri : String;//= "/"; canonicalQueryString : Str...原创 2020-11-04 17:35:54 · 608 阅读 · 2 评论 -
delphi 做错了什么?
第一罪:自由散漫的编程风格. delphi号称面向对象Pascal,但实际写代码时,都是以窗体为中心;窗体即数据,或者tdataset即数据,并无真正的业务对象. 因为封装的不彻底,导致delphi开发中,代码可读性低,可维护性低,大多数delphi开发公司,处于处于较低的开发层次.小型程序优秀,大型程序最终都会因为维护成本或者二次开发成本太高,最终跟不上时代的步伐,被其他软件公司淘汰.第二罪:多层的编程中, 主体数据的传输,没有采用json或者xml这些通用的互联网数据标准.数据是编程的核..原创 2020-10-08 17:59:54 · 101 阅读 · 0 评论 -
cxGrid 部分使用方法(2)
激活内置编辑控件1) .Controller.EditingController.ShowEdit(); 2) .Controller.EditingController.StartEditShowingTimer(); 3) .Controller.EditingItem := ; 4) .Editing := True;隐藏内置编辑控件 .Controller.转载 2015-05-25 23:59:29 · 904 阅读 · 0 评论 -
zt我的Delphi开发经验谈
我的Delphi开发经验谈--------开发环境-------- Delphi 7是一个很经典的版本,在Win2000/XP下推荐安装Delphi 7来开发软件,在Vista下推荐使用Delphi 2007开发软件。安装好Delphi 7后,应立即安装Delphi 7 Update Pack 1,Delphi 2007则建议尽量安装最新的版本。工欲善其事,必先利其器,为转载 2015-09-03 05:52:30 · 1090 阅读 · 0 评论 -
Delphi 获取安卓手机WIFI信息(XE8)
Delphi 获取安卓手机WIFI信息(XE8)源码原创 2015-09-02 01:14:32 · 4091 阅读 · 1 评论 -
cxgrid使用小结(3):分组
订单号 商品名 单价 数量 金额001 aa 11.00 2 22.00001 bb 2.00 2 4.00001 cc 3.00 3 9.00----------------------合计 7 35.00002 ee 11.00 2 22.00002 bb 3.00 2 6.00002 cc 3.00 3 9.00------------------转载 2015-05-26 00:01:16 · 2206 阅读 · 0 评论 -
delphi xe7:Data.DBXMSSQL不能使用在android平台
ClientModuleUnit2.pas(8): F1026 File not found: 'F:\2.work\9031.DataSnapDemo\clientMuti\Data.DBXMSSQL.dcu' (unit scope "Data" indicates Android, iOSDevice, Win32, OSX32, iOSSimulator, Win64 only) F原创 2014-10-19 20:55:40 · 2445 阅读 · 1 评论 -
delphi低版本升高版本问题
首先声明,本帖更新时间不固定。另外,只愿意使用d7者勿入。为了节省篇幅,d7之前的就不提了。d7之后,对升级影响比较大的版本有这些:delphi2009,xe2以及xe5。2009开始string默认为unicode,xe2引入firemonkey,xe5支持手机开发。高版本的其它一些新特性,比如泛型,闭包,增强的rtti,dbexpress,helper等转载 2015-05-26 00:05:38 · 1193 阅读 · 0 评论 -
Delphi 怎样 把TParams 或 record写到流里面
type TRec=Record msg:string; pic:TMemoryStream;end;procedure TForm2.BitBtn1Click(Sender: TObject);var ms:TMemoryStream; Rec1,Rec2:TRec; cc:tmemorystream; jpg:TJP转载 2015-05-25 19:14:03 · 1114 阅读 · 0 评论 -
InstantObjects是delphi上的一个不错的ORM框架,可以实现类似hibernate的功能。
ORM框架是数据库和类或者record之间快速转换的一个技术(猜的),很有用的技术.InstantObjects是delphi上的一个不错的ORM框架,可以实现类似hibernate的功能。具有如下优点* 将数据表间关系转化成了对象和对象的关系,简单直观。* 可以自动创建数据库,简化了部署的和安装的过程。* 支持多种数据库,方便了程序的移植。* 便于进行测试转载 2017-01-16 22:12:21 · 1105 阅读 · 0 评论 -
delphi如何无源码调用bpl?
摘要: 如果需要动态编译,在编译时必须有dcp(可以获取类和变量信息),运行期必须有bpl. 如果需要静态编译,需要dcu文件就可以.正文:delphi开发中,link with runtime packages(delhpi 7版本叫build with runtime packages),常常给大家带来很多困惑,下面特此全面说明一下关于这个编译开关的...原创 2016-12-21 11:15:09 · 2532 阅读 · 0 评论 -
如何解决dxBarManager上面编辑框录入内容不能立刻生效的问题(光标移开,而不是tab,会导致内容revert)
dxBarManager1.AlwaysSaveText = true就可以解决.原创 2017-06-27 11:45:21 · 394 阅读 · 0 评论 -
delphi application的对话框为什么跑到主窗口后面 ?
很多人纳闷,delphi写的程序,有时候对话框会跑到主窗口后面,怎么调整都不好,以为delphi天生的缺陷,经过我的研究后终于发现了问题所在:原来很多人做循环处理的时候,常常在循环体内加入application.processmessages,这会使长时间的循环处理的时候,界面看起来不像卡死.但是这时候如果点击了其他界面,最前端的窗口就不是当前程序的application了;这是因为app...原创 2017-09-04 09:20:40 · 1678 阅读 · 0 评论 -
bcc校验(delphi版本异或校验方法)
function BytesXor(buffer:array of byte):Integer;var i:integer;begin Result:=$0; for i:=Low(buffer) to High(buffer) do begin result:=result xor buffer[i]; end;end;-------------------...转载 2018-10-10 09:22:09 · 1711 阅读 · 0 评论 -
superobject自关联会导致IInterface计数错误,从而导致内存泄漏
var a: ISuperObject;beign a := so; a.s['name'] := '张三'; a.o['data'] := a; end;如上代码,这是一个自关联的代码,接口引用计数会错误,从而导致内存泄漏。...原创 2018-10-25 10:25:01 · 334 阅读 · 0 评论 -
FDMemtable中如何在已有的字段数据集上加入字段
//在原有数据集上是加不进去的。可以再做一个FDMemtable,然后 FDMemTable_新数据集.FieldDefs.Assign(DataSet_原数据集.FieldDefs); FDMemTable_新数据集.FieldDefs.Add('新加字段', ftFloat); FDMemTable_新数据集.CreateDataSet; //建立数据集 ...原创 2019-08-06 16:48:01 · 1164 阅读 · 0 评论 -
FDMemTable让虚字段变得可以读写
select '' as temp,flag=0,sql返回的虚拟字段,以前clientDataSet可以修改,FDMemTable里不能改了。ClientDataSet1->FieldByName("flag")->AsString="1";但是FDMemTable不能改了。怎么办?以前的这种虚拟字段的方式挺好用啊。解决办法:设置属性TFDMemTable.UpdateOpt...转载 2019-08-06 16:51:20 · 409 阅读 · 0 评论 -
轻松实现DBGrid的多表头
轻松实现DBGrid的多表头 hj0791(原作) 关键字 多表头 用法: 设置DBGrid的Column的Caption属性 例如:Column1的Caption为111|222 Column2的Caption为111|333 那么Column1和Column2公用一个表头111unit转载 2013-09-26 09:57:53 · 771 阅读 · 0 评论 -
delphi 两个有意思的函数
此函数可以用variant返回多个字段的值function TDataSet.GetFieldValue(const FieldName: string): Variant;var I: Integer; Fields: TList;begin if Pos(';', FieldName) begin Fields := TList.Create原创 2015-05-25 19:24:58 · 501 阅读 · 0 评论 -
轻松实现DBGrid的多表头
轻松实现DBGrid的多表头 hj0791(原作) 关键字 多表头 用法: 设置DBGrid的Column的Caption属性 例如:Column1的Caption为111|222 Column2的Caption为111|333 那么Column1和Column2公用一个表头111unit转载 2015-05-25 19:21:57 · 2641 阅读 · 0 评论 -
cxgrid使用小结(3):分组
订单号 商品名 单价 数量 金额001 aa 11.00 2 22.00001 bb 2.00 2 4.00001 cc 3.00 3 9.00----------------------合计 7 35.00002 ee 11.00 2 22.00002 bb 3.00 2 6.00002 cc 3.00 3 9.00------------------转载 2014-05-09 22:57:50 · 703 阅读 · 0 评论 -
CxGrid使用小结(2)
激活内置编辑控件1) .Controller.EditingController.ShowEdit(); 2) .Controller.EditingController.StartEditShowingTimer(); 3) .Controller.EditingItem := ; 4) .Editing := True;隐藏内置编辑控件 .Controller.转载 2014-05-09 22:56:47 · 607 阅读 · 0 评论 -
cxGrid 部分使用方法
分享一下ExpressQuantumGrid4的cxGrid的一些使用方法,和经验。欢迎使用过cxGrid的人来灌水。 ( 积分:1, 回复:70, 阅读:5812 )分类:控件 - 使用 ( 版主:amo, cAkk )来自:wangxian11, 时间:2003-10-29 20:49:00, ID:2260672[显示:小字体 | 大字体]使用cxGrid有一些时间了,在这里总结一下使用转载 2014-05-09 22:54:36 · 851 阅读 · 0 评论 -
转:Delphi/Free pascal 终极流化技术
流化技术,有些编程语言中也称为序列化技术,亦即把一个对象的状态保存到一个文件中,也可以逆向从文件中读取内容以初始化这个对象。 Object Pascal语法提供不完全流化的能力,仅支持对Published属性的流化/反流化操作,对private、public及protected属性则无能为力。 在Delphi/Free pascal的VCL类库体系中,处于金字塔次顶转载 2013-12-27 15:52:44 · 1485 阅读 · 0 评论 -
Delphi数据库的拼音检索(查询)方案-汉字转换成拼音
Delphi数据库的拼音检索(查询)方案-汉字转换成拼音 昨夜看到一篇文章,可以用Delphi将汉字->拼音,可是将拼音转换成汉字又该如何操作哪?我的数据库:通讯录软件缺少用拼音查找功能.结果,搞到12点还是无果!唉! 中午找到输入拼音可以检索汉字,可是在数据库中怎样实现哪?2个小时,无果! 今天实现: 1.首先建立字库;2.检索:先从数据库读出转载 2013-12-26 09:56:39 · 1228 阅读 · 0 评论 -
delphi 两个有意思的函数
此函数可以用variant返回多个字段的值function TDataSet.GetFieldValue(const FieldName: string): Variant;var I: Integer; Fields: TList;begin if Pos(';', FieldName) begin Fields := TList.Create;原创 2013-11-01 11:21:17 · 1593 阅读 · 0 评论 -
Delphi 怎样 把TParams 或 record写到流里面
type TRec=Record msg:string; pic:TMemoryStream;end;procedure TForm2.BitBtn1Click(Sender: TObject);var ms:TMemoryStream; Rec1,Rec2:TRec; cc:tmemorystream; jpg:TJP转载 2013-07-26 13:53:18 · 1891 阅读 · 0 评论 -
深刻理解TNotifyEvent
function OnButton1Click(Instance, Sender: TObject);begin showMessage(Instance.ClassName); showMessage(Sender.ClassName);end;var event: TNotifyEvent;TMethod(event).Data := Button1;T转载 2013-01-24 09:48:40 · 1776 阅读 · 0 评论 -
代码分层失败的案例
<br />典型失败的代码:<br />以下代码,未遵循数据层,界面层的原则.将数据层和界面层混合写在一起.<br /> <br />procedure TfmMainHQServer.LoadPlugs;<br />var<br /> i: Integer;<br /> AListItem: TListItem;<br /> sHqPlugFilePath: String;<br /> Ahdl: THandle;<br />begin<br /> for i := 0 to lvHqPlugs原创 2010-11-09 17:07:00 · 360 阅读 · 0 评论 -
mergelist
<br />procedure TfmPubClient.AddList(Source, Dest: TList);<br />var<br /> a1count_old: Integer;<br />begin<br /> a1count_old := Dest.Count;<br /> Dest.Count := Dest.Count + Source.count;<br /> System.Move(Source.list^[0], Dest.list^[a1count_old], Sour原创 2010-06-03 08:11:00 · 746 阅读 · 0 评论 -
ztDELPHI三层架构设计方案
随便说说最近项目中的三层架构吧。讲点实际的东西。我最讨厌空讲道理。网上讲道理的太多了,不喜欢举例子。 大多数文章中都或多或少的讲到了三层架构。表示层,业务层,数据层。又把业务层再细分,分为外观服务层,主业务服务,及数据库库服务层。 今天主要讨论一下业务层吧。举个最简单的例子。客户端获取数据。 业务层要与表示层尽量解藕, 我的方法是:首先我原创 2006-06-08 12:11:00 · 1355 阅读 · 0 评论 -
关于string和pchar
Delphi 中字符串的操作很简单,但幕后情况却相当复杂。Pascal 传统的字符串操作方法与Windows 不同,Windows吸取了C语言的字符串操作方法。32位Delphi中增加了长字符串类型,该类型功能强大,是Delphi 确省的字符串类型。字符串类型 在Borland公司的Turbo Pascal和16位Delphi中,传统的字符串类型是一个字符序列,序列的头部是一个长度字节转载 2014-09-20 02:20:56 · 892 阅读 · 0 评论 -
如何将TParams类型转为Variant?
如何将TParams类型转为Variant?InParam :TParams;提供的函数为function ExecProc(const ProcName: AnsiString; const InParam: Variant): Integer;如果直接调用ExecProc('SP_Name', InParam)编译通不过如何将InParam转为Variant?在线等!------解决方案-转载 2013-07-26 13:39:55 · 993 阅读 · 0 评论