
delphi技术总结
骑着骆驼写程序
先后从事delphi开发,.net网站开发,java开发和安卓开发,曾担任过技术总监,项目经理,系统架构师等职位,参与过共享按摩椅、共享白酒等共享业务的开发,熟悉物联网相关前沿技术,有前端如nodejs,vue.js,bootstrap,elementui等等开发经验,从事过公安、安监、民政等政务系统的开发和项管工作,持有软考中级系统集成项目管理工程师、高级信息系统项目管理师以及高级系统架构师证书。
展开
-
delphi StringGrid背景色隔行显示
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);begin if (ARow mod 2=1) then begin StringGrid1.Canvas.Font.Color原创 2009-02-03 10:45:00 · 3816 阅读 · 0 评论 -
鸡尾酒排序算法
也就是定向冒泡排序, 鸡尾酒搅拌排序, 搅拌排序 (也可以视作选择排序的一种变形), 涟漪排序, 来回排序 or 快乐小时排序, 是冒泡排序的一种变形。此演算法与冒泡排序的不同处在于排序时是以双向在序列中进行排序。使用鸡尾酒排序为一列数字进行排序的过程可以通过右图形象的展示出来: 数组中的数字本是无规律的排放,先找到最小的数字,把他放到第一位,然后找到最大的数字放到最后一位。然后再原创 2013-01-06 15:58:41 · 540 阅读 · 0 评论 -
Base24编码以及解码的实现
unit Base24Unt;{Base24 算法}interfaceuses Windows,Sysutils,Dialogs;const EncodeTable: array[0..23] of Char ='BCDFGHJKMPQRTVWXY2346789' ; DecodeTable: array[#0..#127] of Byte = ( 25,25原创 2013-01-06 15:50:09 · 4267 阅读 · 0 评论 -
检测光盘是否正确
procedure TForm1.Button1Click(Sender: TObject);var i,DriveType:Integer; c:String; buf:array[0..MAX_PATH] of char; sno,fileflag,maxl:DWORD; volname,filesysname:PChar;begin G原创 2013-01-06 15:51:35 · 368 阅读 · 0 评论 -
stdcall关键字
表明是使用标准调用方式: 所有参数用栈传递; 参数按从左到右的顺序压栈; 被调用者负责参数的出栈。 主要用于调用API函数或编写供其它程序调用的函数(有些语言只支持这种调用方式,如VB和标准PASCAL)。原创 2013-01-06 15:54:17 · 433 阅读 · 0 评论 -
PageControl上画图片
var TmpRect,BackRect:TRect; sWidth,sHeight:integer;begin with pgcMain.Canvas do begin sWidth:=textwidth(pgcMain.Pages[TabIndex].Caption); sHeight:=textheight(pgcMain.Pages[Ta原创 2013-01-21 22:18:11 · 603 阅读 · 0 评论 -
delphi调用.net webservice需要配置的地方
在webservice单元的initialization下加: InvRegistry.RegisterInvokeOptions(TypeInfo(IInvokable接口名称), ioDocument);加编码RIO.HTTPWebNode.UseUTF8InHeader := True;原创 2013-04-03 16:31:12 · 762 阅读 · 0 评论 -
.net调用delphi webservice 不能自动创建服务实例
dServiceReference.IUpDownFile xxClient = null; xxClient = new dServiceReference.UpDownFileClient(new System.ServiceModel.BasicHttpBinding(), new System.ServiceModel.EndpointAddress("服务地址"));原创 2013-04-11 10:21:27 · 642 阅读 · 0 评论 -
delphi调用java编写的http接口
采用delphi7的indy组件提交的数据中包含中文,需要进行URL编码:function UrlEncode(const ASrc: string): string;const UnsafeChars = '*#%var i: Integer;begin Result := ''; {Do not Localize} for i := 1原创 2014-12-05 08:56:05 · 3114 阅读 · 0 评论 -
delphi生成JSON格式字符串的一个简单的类
unit JsonUtilUnt;interfacetype TJSONTokener = class(TObject) private jsonStr:WideString; public constructor Create; destructor destroy;override;原创 2014-12-05 15:38:29 · 6628 阅读 · 1 评论 -
获取主板序列号
type TCPUID = array[1..4] of Longint;function GetCPUID : TCPUID; assembler; register;asm PUSH EBX PUSH EDI MOV EDI,EAX MOV EAX,1 DW $A20F STOSD原创 2013-01-06 15:57:08 · 3723 阅读 · 1 评论 -
DBGrid加鼠标滚轮滚动
procedure TFormBase.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean);var i: SmallInt;begin if Msg.message = WM_MOUSEWHEEL then begin Msg.message := WM_KEYDOWN;原创 2013-01-06 15:56:43 · 465 阅读 · 0 评论 -
用Delphi制作DLL的方法
用Delphi制作DLL的方法 一 Dll的制作一般步骤 二 参数传递 三 DLL的初始化和退出清理[如果需要初始化和退出清理] 四 全局变量的使用 五 调用静态载入 六 调用动态载入 七 在DLL建立一个TForM 八 在DLL中建立一个TMDIChildForM 九 示例: 十 Delphi制作的Dll与其他语言的混合编程中常遇问题: 十一 相关原创 2013-01-06 15:55:24 · 485 阅读 · 0 评论 -
解决flash.ocx无法注册的问题
到控制面板中把flash的一个插件"Adobe Flash Player ActiveX"给卸载掉就ok了原创 2009-07-27 14:22:00 · 10335 阅读 · 3 评论 -
触发器的使用
触发器的作用: 触发器(trigger)是个特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由个事件来触发,比如当对一个表进行操作( insert,delete, update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。 触发器可以查询其他表,而且可以包含复杂的 SQL 语句。它们主要用于强制服从复杂的业务规则或要求。 触发器也可用于强制引用完原创 2009-07-29 14:59:00 · 485 阅读 · 0 评论 -
无边框的窗体拖动
在窗体或背景图片的鼠标按下事件里加入如下代码: ReleaseCapture; SendMessage(handle,WM_SYSCOMMAND,SC_MOVE+HTCAPTION,0);原创 2009-10-13 10:29:00 · 386 阅读 · 0 评论 -
注册及卸载dll或ocx文件过程
function RegisterOleFile (strOleFileName : STRING; OleAction : Byte ) : BOOLEAN;const RegisterOle = 1;//注册 UnRegisterOle = 0;//卸载type TOleRegisterFunction = function : HResult;//注册或原创 2013-01-06 15:47:37 · 838 阅读 · 0 评论 -
listview颜色交替显示代码
procedure TfrmRecordQuery.lvRecordInfoCustomDrawItem( Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);var i: integer;begin i:= (Sender as T原创 2013-01-06 15:48:40 · 451 阅读 · 0 评论 -
传送文件时循环冗余校验
unit CRC32;interfaceuses Windows, SysUtils;const //Crc32表 Table:Array[0..255] of DWORD= ( $00000000, $77073096, $EE0E612C, $990951BA, $076DC419, $706AF48F, $E963A535, $9E6495A3,原创 2013-01-06 15:49:39 · 638 阅读 · 0 评论 -
搜索文件夹的子目录
procedure FindFile(const filespec: TFileName;extname:String;list:TStringList;sub:boolean); procedure RFindFile(const folder: TFileName;extname:String); var SearchRec: TSearchRec; begin原创 2013-01-06 15:50:40 · 465 阅读 · 0 评论 -
自动附加Sqlserver数据库
procedure TfrmMain.RestoreDataBase;var CmdStr, Paths:String;begin Paths:=Extractfilepath(Application.ExeName); if fileexists(ConCat(Paths,'数据库文件名称')) then try CmdStr:='ISQL -原创 2013-01-06 15:53:05 · 576 阅读 · 0 评论 -
从Webbrowser中获取文本内容
Memo1.Lines.Add(WebBrowser1.OleObject.Document.getElementByID('aa').innerText);原创 2013-01-06 15:53:46 · 4596 阅读 · 0 评论 -
如何利用FastReport创建交叉报表?
转自:http://www.fastreportcn.com/Article/92.html本文我们将创建一个交叉报表,用于显示员工四年中的工资。要创建交叉报表,我们需要使用到FastReport “DEMOS\MAIN” 文件夹中的“crosstest”表。“crosstest”表包含几下几种类型的数据: 在Delphi中创建一个新项目,将“TTable”,“转载 2014-12-11 13:24:29 · 3316 阅读 · 0 评论