编程技术
aroc_lo
这个作者很懒,什么都没留下…
展开
-
DELPHI编译软件时带上当前IDE的版本号
即可得到一个大小为 90K左右的控制台程序 GetIDEVER.exe(这就是为什么用D2007编译的原因,目前我的电脑最低是2007,用最新的DXE12,编译出来得有4.5MB左右)我想得到的是IDE的版本号,比如当前最新版本的DELPHI是:Embarcadero® RAD Studio 12 Version。IDE提供的API中,好象没有与之相关的东西;想要得到这个版本号,也许只能用变通的方式。此时,只需要在你的单元文件中导入这个INC即可直接读取了。得到的也只是编译器的版本号。原创 2024-09-21 09:27:14 · 597 阅读 · 0 评论 -
使用CleintDataset 蜂巢式主从结构,修改主表KEY字段出现 Cascaded updates not enabled
在provider的option属性中将 opCascadeDeletes 与 opCascadeUpdates 设置为 True 即可。原创 2020-06-04 13:31:53 · 270 阅读 · 0 评论 -
Method pointer and regular procedure
This is the difference between a "procedure" and a "procedure of object"TheOnClickis defined as aTNotifyEvent:type TNotifyEvent = procedure(Sender: TObject) of object;You cannot assign a pro...转载 2019-12-07 11:18:22 · 674 阅读 · 0 评论 -
DLL详解
DLL文件(Dynamic Linkable Library 即动态链接库文件),是一种不能单独运行的文件,它允许程序共享执行特殊任务所必需的代码和其他资源 比较大的应用程序都由很多模块组成,这些模块分别完成相对独立的功能,它们彼此协作来完成整个软件系统的工作。可能存在一些模块的功能较为通用,在构造其它软件系统时仍会被使用。在构造软件系统时,如果将所有模块的源代码都静态编译到整个应用转载 2008-09-20 20:45:00 · 536 阅读 · 0 评论 -
Tiburon遊記3 動手建立一個DataSnap JSON伺服器吧
也許讓我們先動手用Tiburon實作一個DataSnap JSON分散式架構再搭配前面說明的觀念的話,各位將會更加瞭解Tiburon把這些強大的功能做得多麼的方便。DataSnap新的JSON分散式架構可以有許多不同的型態,更可以結合資料庫和Web應用程式,不過在一開始讓我們先學習如何建立最簡單的JSON分散式架構,下面是我們即將實作的JSON分散式架構的簡單說明:1. 建立一個分散式JS转载 2008-09-23 22:53:00 · 699 阅读 · 0 评论 -
淺談如何使用Delphi 2009的泛型容器類別
Delphi2009在Delphi程式語言方面加入了兩個主要的功能,一個是泛型程式設計(GenericsProgramming),另外一個就是匿名方法(Anonymous Method)。Delphi2009在Win32加入了泛型程式設計之後,Delphi程式語言便可以同時在Win32,.NET平台下使用泛型程式設計。由於Delphi2009在Delphi程式語言本身加入了泛型程式转载 2008-09-23 23:01:00 · 732 阅读 · 0 评论 -
控件编写:增强 TMEMO (一)
相信没有什么人对 MEMO 陌生了吧。尽管其组件的功能不错。但是,对它进行一些功能的改进,可以更好的使用。 有的时候,我们想要知道,当前的坐标是什么?甚至,想要在 滚动条滚动时触发一些事件。 但,TMemo 本身并没有这样的功能。那我们就要扩展它; 那我们现在就来作: file -> new -> other -> package 在 dpk 窗口上,原创 2008-10-14 22:05:00 · 1092 阅读 · 0 评论 -
使用飞信SDK开发短信收发程序
利用飞信的协议可以在线收发消息,或是向手机发送消息。由此,可以自己来完成一个IM工具。本文即是对飞信SDK的使用方法,及如何开发作一个说明。一、引用FetionSDK飞信是采用C#开发的,所有的程序集均是.NET,因此我们也需要使用Delphi.NET/Chrome来进行相关的开发。在Chrome中,新建一个工程,并引入FetionSDK.dll,当然您也可以使用Delphi转载 2008-10-14 21:41:00 · 1802 阅读 · 0 评论 -
两个数据表同步的触发器
假如有两个表,TableName1和TableName2,两个表字段相同,都是有一个fID(TableName1表为标识,自动+1,TableName2表设置为普通字段),和一个varchar类型的content两个字段。现在要实现TableName2作为TableName1的备份,对TableName1的所有修改(增、删、改)都要对TableName2同时生效。可以使用以下触发器CREATE T原创 2008-09-26 15:09:00 · 632 阅读 · 0 评论 -
Delphi流操作技巧
1、文件流 TStreamMemoery 读写内存 TMemoryStream的继承关系如下TObject|TStream|TCustomMemoryStream|TMemoryStream 如何使用TMemoryStream?其实TmemoryStream使用就跟TStream 一样具体的属性,方法可看帮助。下举一例:如我想在内存中直接读写一个Bitmap,怎么办?TmemoryStream帮原创 2008-10-02 21:03:00 · 867 阅读 · 0 评论 -
返回某年某月有多少天
闰年的判断:1、能被 400 整除2、能被 4 整除但是不能被 100 整除function ResultMonthDays(const yy, mm: Word): Byte;begin case mm of 1,3,5,7,8,10,12 : Result :=31; 4,6,9,11 : Result :=30; 2 : begin if (yy原创 2008-10-16 10:50:00 · 635 阅读 · 0 评论 -
DBGridEh 多行选择
procedure TfrmMain.Button5Click(Sender: TObject);var I,J: Integer; SelectedRows :TBookmarkListEh ; s:string;begin ListBox1.Clear; if DBGridEh1.SelectedRows.Count >0 then begin with DBGridEh1.转载 2008-10-17 11:17:00 · 1085 阅读 · 1 评论 -
Delphi&C#代码模拟“显示桌面”的功能
今天有人问我:“用shell打开文件(显示桌面.scf)的方式还是用模拟键盘(Win+D)显示桌面”这应该有更好的方法,就搜了搜,关键字定位“ToggleDesktop”因为显示桌面.scf的内容是:[Shell]Command=2IconFile=explorer.exe,3[Taskbar]Command=ToggleDesktop找到了MSDN http://msdn.转载 2008-10-18 08:38:00 · 629 阅读 · 0 评论 -
26个常用的方法优化 ASP.NET 的性能
1. 数据库访问性能优化 数据库的连接和关闭 访问数据库资源需要创建连接、打开连接和关闭连接几个操作。这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源。ASP.NET中提供了连接池(Connection Pool)改善打开和关闭数据库对性能的影响。系统将用户的数据库连接放在连接池中,需要时取出,关闭时收回连接,等待下一次的连接请求。连接池的大小是转载 2008-10-01 14:45:00 · 453 阅读 · 0 评论 -
外部程序控制技术
最近做一个项目,需要从外部控制挰序,好比做一个外挂,要获取游戏里各个控件的句柄,然后对它进行操作。在网上查了查,这方面的例子无一例外都是C++的,找不到Delphi的,在几个网站上问了,回答的人都说不知道,并且推荐我用C++进行开发,难道Delphi真的不能对外部程序操作?经过一天的努力,我证明了Delphi也是可以做到的,并且比C++做起来更方便,我把它做成一个控件,以便随时拖出来就用。转载 2008-10-04 12:43:00 · 821 阅读 · 0 评论 -
Delphi2009 反射机制的使用
Delphi2009中添加了一个用于实现反射的单元,即ObjAuto,用它可以轻松的实现反射。对于原本的RTTI,只能够得到published区分符下的属性,而反射机制则可以得到拥有反射支持的类的公开方法,成员变量和属性。下面是一个小例子:首先写一个拥有反射支持的类,注意类必须继承自TPersistent,并且类声明带有MethodInfo编译预处理。MethodInfo是一个全新的预处理指令,转载 2008-10-04 14:45:00 · 805 阅读 · 0 评论 -
线程排序
在数据处理量很大的情况下,如何在数据处理的同时响应用户操作?Windows95/98和WindowsNT作为多线程的多任务操作系统,其调度单元是线程,即线程是系统分配处理器时间资源的基本单元,所以我们可以利用线程实现在处理大批量数据的同时响应用户操作。 DELPHI作为一个优秀的开发平台,对开发多线程应用程序提供了强有力的支持,即可直接利用32位Windows环境提供的Win32API接口函转载 2008-10-04 12:49:00 · 551 阅读 · 0 评论 -
Delphi操作Excel的技巧
procedure TForm1.Button1Click(Sender: TObject);vareclApp,WorkBook:Variant;//声明为OLE Automation 对象 xlsFileName:string;beginxlsFileName:=ExtractFilePath(Application.ExeName)+zzdm.转载 2008-10-04 12:52:00 · 569 阅读 · 0 评论 -
修改 DBNavigator 的 click事件;
下面的代码,功能在于 把按下 nbPost 和 nbInsert 键时,先判断一下,相关的输入框是否符合你自己的要求。如果不符合就 Abort 它即可。同理,可以将其它 按钮进行相应的处理以达到 修改其事件的目的。procedure TfrmBaseSetup.DBNavigator1BeforeAction(Sender: TObject; Button: TNavigateBtn);beg原创 2008-10-22 16:58:00 · 1116 阅读 · 0 评论 -
最直白的言语来解释什么是“云计算”
很多东西,明明很简单。有些人就是在故作高深。有一些雾里看花的词来形容。 但最终说的本质,你会发觉。那些高深的语言表达竟然就是这么个玩儿。 最拿现在说得最多的“云计算”吧。 光看这三个字挺高深的吧,由一个大公司GOOGLE提出来,微软、IBM等表示支持甚至作相关的产品等。 可是什么是“云计算”呢? 其实不就是用一堆廉价服务器进行并联来使用吗?这个东西的出现就是为原创 2008-10-06 12:48:00 · 787 阅读 · 0 评论 -
delphi的万能数据库操作
好多人都抱怨delphi没有提供一个可以把任意数据放入数据库的控件,虽然说用代码实现也不难,但是有控件会更方便,这次我终于还是抽出空来做了这么个控件,以后就可以直接拖放了。它支持把任意数据类型写入数据库,也可以从数据库读出到流,或是直接保存为文件。另外,我加了一些对常用图像的处理,保存 jpg或是gif格式的图像很方便,并且可以直接显示到image上。 unit RaDBOLE;转载 2008-10-04 13:08:00 · 597 阅读 · 0 评论 -
使用 RemObjects SDK 建立 WebService 应用
请看: http://hi.baidu.com/rarnu/blog/item/b6acba09e95a70266b60fb8b.html转载 2008-10-04 14:01:00 · 807 阅读 · 0 评论 -
函数返回多个值的方法;
其实,定一个类,就可以了。type TDEMO = record ISOK : boolean; Comment : string; end;function abc : TDEMO;begin Result.ISOK := True; Result.Comment := Hello;end;procedure test;var AAA:TDE原创 2008-10-07 16:11:00 · 673 阅读 · 0 评论 -
函数可以返回一个值,变通一下,过程也行。
procedure CC(var a,b,c :Integer);begin c := a+b;end;procedure TForm1.FormCreate(Sender: TObject);var a ,b,c :Integer;begin a :=5; b:=5; c :=0; CC(a,b,c); ShowMessage(IntToStr(c)); {结果为 10 }end;原创 2008-10-26 20:22:00 · 540 阅读 · 0 评论 -
回车自动跳了下一个编辑框。
if Key=#13 then begin key:=#0; perform(WM_NEXTDLGCTL,0,0); end;原创 2008-10-25 13:11:00 · 847 阅读 · 0 评论 -
飞信的协议分析
转自:http://hi.baidu.com/nathan2007/blog/category/%B7%C9%D0%C5%D0%AD%D2%E9%B7%D6%CE%F6作者:nathan以下分析均基于飞信的这一版本:Fetion 2006 beta 版本 2.1.0.0。 被迫开始用飞信(Fetion),痛苦啊,这玩意儿开发了几年(飞信博客上一家伙说参加飞信项目两年了),而转载 2008-10-11 11:27:00 · 4073 阅读 · 1 评论 -
在Delphi中编写控件的基本方法(1)
作为Delphi程序员,要想进一步提高编程水平就必须掌握控件的编写方法,本篇文章将通过一个简单的例子来为初学者介绍编写控件的一些基本方法和模式。 这个例子控件叫TLeiLabel,是在TLabel的基础上增加两个实用的功能:一是使文字具有立体形状,二是使文字具有超链接属性。下面就让我们一步步来实现这些功能。转载 2008-10-13 00:07:00 · 683 阅读 · 0 评论 -
DELPHI常用技巧
等待程序运行结束procedure TForm1.Button1Click(Sender: TObject); var sCommandLine: string; bCreateProcess: boolean; lpStartupInfo: TStartupInfo; lpProcessInformation: TProcessInformation; b转载 2008-10-28 11:32:00 · 682 阅读 · 0 评论 -
Delphi 內存数据表
function CreateTableInMemory(const AFieldDefs:TFieldDefs):TDataSet;var TempTable:TClientDataSet;begin TempTable:=nil; Result:=nil;if AFieldDefsnil then begin try TempTable:=TClien转载 2008-10-28 11:38:00 · 1223 阅读 · 0 评论 -
DBGrid 应用全书
在 Delphi 语言的数据库编程中,DBGrid 是显示数据的主要手段之一。但是 DBGrid 缺省的外观未免显得单调和缺乏创意。其实,我们完全可以在我们的程序中通过编程来达到美化DBGrid 外观的目的。通过编程,我们可以改变 DBGrid 的表头、网格、网格线的前景色和背景色,以及相关的字体的大小和风格。 以下的示例程序演示了对 DBGrid 各属性的设置,使 Delphi 显示的表转载 2008-10-30 23:25:00 · 2319 阅读 · 0 评论 -
字符串加密解密函数
//// 字符串加密的过程...Function Encrypt(Src: String; Key: String):string;var KeyLen: Integer; KeyPos: Integer; offset: Integer; dest: string; SrcPos: Integer; SrcAsc: Integer; Range: Integer;b转载 2008-11-03 09:36:00 · 881 阅读 · 0 评论 -
将图片自己转换成BMP并缩放保存。
//只支持jpeg、bmp 格式uses jpegprocedure SmoothResize(var TargetBmp:TBitmap; SourceBmp : TBitmap ; frameColor:TColor =-1);begin SetStretchBltMode(TargetBmp.Canvas.Handle,STRETCH_HALFTONE); StretchBlt(Tar原创 2008-11-06 11:57:00 · 910 阅读 · 0 评论 -
Delphi2007中Combox控件中文乱码问题解决办法
方法1.把combobox的autocomplete属性设为false可以解决乱码问题。方法2.乱码是因为你使用了TXPMan控件,且在NT系统中使用。 在KeyPress事件中执行ComboBox_XPMan_KeyPress可解决北问题。 function IsNTSystem:Boolean;varinfo:OSVERSIONINFO;begininfo.dwOSVersionI原创 2008-11-07 16:37:00 · 2331 阅读 · 0 评论 -
从字符串转换为 datetime 时发生语法错误
with adoquery1 do begin close; sql.text :=format(insert into( fid,fDate) values(%s,%s) , [1,datetimetostr(now())]); execsql; end; 以上代码看上去没有什么问题。但是,有实际应该用。。 经常在电脑上出现 从字符串转换为 dateti转载 2008-12-31 14:56:00 · 1905 阅读 · 0 评论 -
识别 中国农业银行,的小键盘,和验证码
unit MainForm;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, OleCtrls, SHDocVw, adodb, db, ActiveX, ComObj, StdVcl, shellapi, ShlObj, R转载 2009-01-02 00:17:00 · 4203 阅读 · 0 评论 -
隐藏任务图标
var dwExStyle : DWORD;begin dwExStyle := GetWindowLong(Application.Handle, GWL_EXSTYLE); dwExStyle := dwExStyle + WS_EX_TOOLWINDOW ; SetWindowLong(Application.Handle, GWL_EXSTYLE, dwExStyle);原创 2009-01-03 12:40:00 · 944 阅读 · 0 评论 -
DELPHI 日期与时间的计算
如果要加多少天,你就直接a := a + N 即可,整数部分就是天。 Delphi中日期时间型就是Float型,操作可以和Float一样。整数是以天为单位的,小数部分算法就是 1小时=1/24;1小时X分就是 1/24 + (1/24)/60*x。其它的自己算吧原创 2009-01-04 17:31:00 · 1989 阅读 · 1 评论 -
注册热键
private id:integer; procedure WMHotKey(var Msg : TWMHotKey); message WM_HOTKEY;{ Private declarations }//一个热键消息过程 格式如上 public { Public declarations } end;var Form1:转载 2009-01-03 13:03:00 · 594 阅读 · 0 评论 -
DELPHI技巧 动态创建窗体时,应该注意/
窗口创建var frmForm :TfrmForm;begin if not Assigned(frmForm) then //检查窗口实例是否己经存在....这行很重要, frmForm :=TfrmForm.Create(Application); frmForm.Show ;end;窗口关闭在 窗口的 close 事件中原创 2009-01-17 00:22:00 · 1054 阅读 · 0 评论 -
Delphi 程序对 Windows VISTA 的支持
以前一直在 WIN XP /2003 下编程,现在有客户使用 VISTA 系统,运行程序的时候报错。我的程序用到了注册表,还是对HKLM 进行读写,VISTA 的安全机制肯定是不让了,别人的软件在遇到这个问题的时候都有一个 WINDOWS的安全提示,询问是否以管理员身份运行,我的程序就什么提示都没有,直接报错。后来在网上查到了解决办法,让我的程序也支持 VISTA 了。操作步骤:转载 2008-11-24 08:41:00 · 701 阅读 · 0 评论