摘要:
有时候我们需要对其它应用程序发送和接收的网络数据进行拦截,比如要对IE发送的**头进行分析,得到请求的地址等.这次我们可以用一些例如WPE, Sniffer之类的工具来达到目的.但是工具功能有限,要想实现更强大的功能,还是我们自己动手来DIY吧.拦截网络数据封包的方法有三种,一是将网卡设为混杂模式,这次就可以监视到局域网上所有的数据包,二是HOOK目标进程的发送和接收的API函数,第三种方法是自己实现一个代理的DLL.在这里我们使用HOOK API的方法,这样易于实现,而且也不会得到大量的无用数据(如第一种方法就会监视到所有的网络数据).下面是一个尽量简化了的API HOOK的模版,原理是利用 阅读全文
posted @ 2013-04-29 14:03
小天1981
阅读(523)
评论(0)
推荐(0)
摘要:
本文简单介绍了当前Windows支持的各种Socket I/O模型,如果你发现其中存在什么错误请务必赐教。一:select模型二:WSAAsyncSelect模型三:WSAEventSelect模型四:Overlapped I/O 事件通知模型五:Overlapped I/O 完成例程模型六:IOCP模型老陈有一个在外地工作的女儿,不能经常回来,老陈和她通过信件联系。他们的信会被邮递员投递到他们的信箱里。这和Socket模型非常类似。下面我就以老陈接收信件为例讲解Socket I/O模型~~~一:select模型老陈非常想看到女儿的信。以至于他每隔10分钟就下楼检查信箱,看是否有女儿的信~~~ 阅读全文
posted @ 2013-04-29 13:59
小天1981
阅读(130)
评论(0)
推荐(0)
摘要:
记得多年前在接触SQL的时候,偶尔就会莫名安装SQL2000失败。每次这样都捣鼓半天,最后还是不知所措。导致后来我对SQL2000产生恐惧,SQL2005一出立即就用SQL2005了。 今天在公司重装系统,在安装SQL2000时又遇见该问题,总是在启动服务时失败!由于公司有任务,没太多时间再装系统。根据它的提示查看日志文件。提示为:“安装程序配置服务器失败。参考服务器错误日志和C:\windows\sqlstp.log”,查看该文件内容为“一般性网络错误”。在Google上G一把。终于找到多年来一直困扰我问题的原因! 此问题属于sql server的bug, GetComputerName 用 阅读全文
posted @ 2013-04-29 13:55
小天1981
阅读(342)
评论(0)
推荐(0)
摘要:
TCP连接建立与关闭相信各位读者现在对於 Winsock 的定义、系统环境,以及一些 Winsock Stack及 Winsock 应用程式,都有基本的认识了。接下来笔者希望能分几期为各位读者介绍一下简单的 Winsock 网路应用程式设计。我们将以 Winsock 1.1 规格所定义的 46 个应用程式介面(API)为基础,逐步来建立一对 TCP socket 主从架构(Client / Server)的程式。在这两个程式中,Server 将使用 Winsock 提供的「非同步」(asynchronous)函式来建立 socket 连结、关闭、及资料收送等等;而 Client 则采类似传统 阅读全文
posted @ 2013-04-29 13:54
小天1981
阅读(173)
评论(0)
推荐(0)
摘要:
function IsValidIP(Str: string): Boolean;vari, PartCount {用多少段,以点号分开}: Integer;Part: string;beginPartCount := 0;while Str <> '' dobegin i := Pos('.', Str); if i = 0 then begin Part := Str; Str := ''; end else begin Part := Copy(Str, 1, i - 1); Delete(Str, 1, i); end; // 阅读全文
posted @ 2013-04-29 13:53
小天1981
阅读(538)
评论(0)
推荐(0)
摘要:
设置它的几个属性:BevelEdges|_ beLeft = False;|_ beTop = False;|_ beRight = False;|_ beBottom=True; //就是下面那根横线了BevelInner=bvNone;BevelKind =bkSoft;BevelOuter=bvRaised;BorderStyle=bsNone;ParentColor=True;就这些了,看看效果吧!! 阅读全文
posted @ 2013-04-29 13:50
小天1981
阅读(140)
评论(0)
推荐(0)
摘要:
部分朋友注意到自己的 Live Hotmail 的 发信/收信 记录里的时间不对,会错上好几个小时,这是为什么,难道 Live Hotmail 延时发送/接收了我的邮件?经过了解这是由于 Windows Live Hotmail 电子邮件上的时间戳是根据 您在 Windows Live ID 个人注册信息中指定的时区进行设置的。如果该时间戳显示得不正确,您需要确认在 Windows Live ID 个人注册信息中时区设置是否正确。1. 登陆 Windows Live ID 账号管理页:https://account.live.com2. 进入 个人注册信息 修改页面;3. 在这里选择你所处的 阅读全文
posted @ 2013-04-29 13:48
小天1981
阅读(392)
评论(0)
推荐(0)
摘要:
IF Not Exists(select * from syscolumns where [name]='字段名'and OBJECTPROPERTY(id,'IsUserTable')=1 and object_name(id)='表名')beginAlter Table [表名] add 字段名 nvarchar(50)end 阅读全文
posted @ 2013-04-29 13:44
小天1981
阅读(806)
评论(0)
推荐(0)
摘要:
1. 关于嵌入桌面原理很简单,找到 Progman 并将窗口 SetParent 过去即可(当然也可以嵌入到 Progman 的子窗口以保证窗口不覆盖桌面的图标,不过我的要求是我的窗口必须覆盖桌面图标,呵呵)但是问题来了,我发现我的窗口在桌面上F5或者Win+D的时候会隐藏,尝试拦截 WM_SYSCOMMAND/SC_MINIMIZED消息无效但是其他嵌入桌面的程序则没有此问题查看了一下Window Style,发现我的窗口的 Ex Style 多了一个 WS_EX_APPWINDOW 属性(因为是主窗口)但是我的主窗口此属性去不掉,因此 New 了一个 Form 动态创建后 OK代码(就一句 阅读全文
posted @ 2013-04-29 13:43
小天1981
阅读(525)
评论(0)
推荐(0)
摘要:
SQLite是一个很好用的单机数据库,体积小巧,支持大多数SQL 92语法,速度快,健壮,使用和分发都很简单。但是免费开源版并不提供加密功能,需要加密得购买原作者的一个插件,价格$2000!我们只好使用第三方的加密版本,这是被逼的。当然还有一个选择就是,在开源的C文件中已经预留了加密接口,有能力的可以自己去实现。闲话休提。第三方的加密版本已经有人实现了,还不止一个。下面分别介绍一下:※ SQLite原装版,http://www.sqlite.org/目前最新版本是。但我们现在不使用它的DLL而用第三方,所以可以无视它了。需要源文件的可以去下载。 ※ 第三方其一是用于.NET环境下的System 阅读全文
posted @ 2013-04-29 13:41
小天1981
阅读(1617)
评论(0)
推荐(0)
摘要:
操作时写的代码并不多,主要问题是需要将所有的数据读内存表不太合适,在修改上应该可以将数据源改为动态。使用的重点是设置DbGridEh1的RowDetailPanel打开,再将DbGridEh2放入,设置MemTableEh2的MasterFields和DetailFields,接入数据源,好,出锅!使用这个功能要注意一点,MasterDBGridEh的DataSet必须是MemtablEh,而DetailDBGridEh的Dataset却可以为其它DataSet类。 阅读全文
posted @ 2013-04-29 13:39
小天1981
阅读(584)
评论(0)
推荐(0)
摘要:
procedure windowsposchange(var Msg:TWMWINDOWPOSCHANGING);message WM_WINDOWPOSCHANGING;varForm13: TForm13;//oleft:integer;otop:integer;owidth:integer;oHeight:integer;implementation{$R *.dfm}procedure TForm13.FormCreate(Sender: TObject);beginoleft:=Left;otop:=Top;owidth:=Width;oheight:=Height;end;proc 阅读全文
posted @ 2013-04-29 13:38
小天1981
阅读(151)
评论(0)
推荐(0)
摘要:
//首先看它的声明:function Format(const Format: string; const Args: array of const): string; overload;//事实上Format方法有两个种形式,另外一种是三个参数的,主要区别在于它是线程安全的,//但并不多用,所以这里只对第一个介绍:function Format(const Format: string; const Args: array of const): string; overload;//Format参数是一个格式字符串,用于格式化Args里面的值的。Args又是什么呢,//它是一个变体数组,即它 阅读全文
posted @ 2013-04-29 13:36
小天1981
阅读(399)
评论(0)
推荐(0)
摘要:
今天调试一个开源的例子程序,无意中发现一个IDE用来测试内存泄漏的语句。不过应该是Delphi2006以后的版本才能使用。实施方法方法非常简单,在Project source中加入如下第一条语句。ReportMemoryLeaksOnShutdown := DebugHook <> 0;Application.Initialize;Application.CreateForm(TForm1, Form1);Application.Run;为了测试效果,在你的主窗体onCreate事件中写一个引起泄漏的Test Case。varsl : TStringList;beginsl := 阅读全文
posted @ 2013-04-29 13:32
小天1981
阅读(277)
评论(0)
推荐(0)
摘要:
主表:单号 客户aa abcbb baccc cab从表:单号 产品明细 数量aa A1 100aa A2 500aa A3 1000bb B1 3000bb B2 1500cc C1 200cc C2 280cc C3 300期望报表格式:单号 客户 产品明细 数量aa abc A1 100 A2 500 A3 1000bb bac B1 3000 B2 1500cc cab C1 200 C2 280 C3 300我用以下方法实现可是不能完全满足我的要求:用 adoquery1 连接主表(select * from 主表),然后在adoquery1的afterscroll过程中用adota 阅读全文
posted @ 2013-04-29 13:30
小天1981
阅读(539)
评论(0)
推荐(0)
摘要:
从原来使用cxGrid4系列开始,都是使用ExportGrid4ToExcel的办法,可是使用了6系列后,发现这个办法已经不行了,从Dev官方找了解决办法。usecxGridExportLink;procedure TMainForm.cxButton_MemoExcelClick(Sender: TObject);beginif SaveDialog1.Execute thenbeginExportGridToExcel(SaveDialog1.FileName,cxGrid1,True,True,True);end;end;///////////注意:ExportGridToExcel导出 阅读全文
posted @ 2013-04-29 13:28
小天1981
阅读(209)
评论(0)
推荐(0)
摘要:
library project1;uses Windows, SysUtils, MSODSApi;... {$R * .res}Function GetParamStr(pSrvProc: SRV_PROC; Index : integer; Var Param : String ) : integer;var PType : Byte; cbMaxLen , ParaLen : DWORD; IsNULL : BOOL;begin Result : = NO_ERROR; srv_paraminfo(pSrvProc, index, @PType, @cbMaxLen, @ParaLen, 阅读全文
posted @ 2013-04-29 13:26
小天1981
阅读(204)
评论(0)
推荐(0)
摘要:
如果需要传递对象参数则放在函数参数里,这样就由调用者来创建和释放对象。例:[允许] function SomeOne(list:PStrList):boolean;当然,NewXXX之类的创建对象的函数除外。一直存在的全局对象也除外,这些全局对象将在初始化时创建,结束时释放。类定义中如果重载了Destory必须在里面加上inherited,否则不会释放的。使用对象(object)还是记录结构(record)。在有关性能方面的服务程序中:只产生单个实例或少于10个实例则允许使用对象。否则一律使用记录结构。在GUI方面都使用对象,但是不得超过五级继承。纯数据信息必须使用记录结构。错误、异常处理规则 阅读全文
posted @ 2013-04-29 13:24
小天1981
阅读(171)
评论(0)
推荐(0)
摘要:
1.防止刷新时闪烁的终极解决办法{ 防止刷新时闪烁的终极解决办法(对付双缓冲无效时) }Perform($000B, 0, 0); //锁屏幕 防止闪烁// 做一些会发生严重闪烁的事情..//解锁屏幕并重画Perform($000B, 1, 0);RedrawWindow(Handle, nil, 0, RDW_FRAME + RDW_INVALIDATE + RDW_ALLCHILDREN + RDW_NOINTERNALPAINT);2.图片上显示透明文字//图片上显示透明的文字//直接用.Canvas.Brush.Style:=bsClear;//然后.Canvas.TextOut(x, 阅读全文
posted @ 2013-04-29 13:22
小天1981
阅读(373)
评论(0)
推荐(0)
摘要:
主表 contracts(id,name,clientname,note…)从表 payments(id,contractid,amount,updated)adoquery1:select * from contracts;datasource1->adoquery1adoquery2:select * from payments;datasource2->adoquery2—————cxgrid建2个level,level2为level1的子level连接两个tableview,分别连接到datasource1,datasource2设置tableview1的keyfieldn 阅读全文
posted @ 2013-04-29 13:20
小天1981
阅读(673)
评论(0)
推荐(0)
摘要:
最近在开发项目的过程中遇到这么一个问题,就是在插入一条记录的后立即获取其在数据库中自增的ID,以便处理相关联的数据,怎么做?在sql server 2000中可以这样做,有几种方式。详细请看下面的讲解与对比。一、要获取此ID,最简单的方法就是:(以下举一简单实用的例子)–创建数据库和表create database MyDataBaseuse MyDataBasecreate table mytable(id int identity(1,1),name varchar(20))–执行这个SQL,就能查出来刚插入记录对应的自增列的值insert into mytable values(‘李四’ 阅读全文
posted @ 2013-04-29 13:19
小天1981
阅读(285)
评论(0)
推荐(0)
摘要:
从官方下载到uniSynedit的压缩包后,只有for2009的版本,用2010打开,也是没有问题的。编译的时候,在SynEditHighlighter.pas报错:function TSynCustomHighlighter.IsWordBreakChar(AChar: WideChar): Boolean;begin case AChar of #0..#32, '.', ',', ';', ':', '"', '''', '?, '`', 阅读全文
posted @ 2013-04-29 13:17
小天1981
阅读(468)
评论(0)
推荐(0)
摘要:
安装上sqlserver2005以后,打开程序时总报这个错误,后来解决了,但是现在学生都有这个问题,觉的有必要拿出来讲一下了:试用vs打开一个决绝方案时出错,如下图所示:产生这个的原因其实也很简单,细心的读者如果打开这个文件的话,从列表中选择打开方式的时候就会发现项目文件的打开方式已经不是visual studio了,而是Micrisoft visual studio version selector.因此,解决的办法就是用visual studio打开,并且选择始终用它打开项目文件,下次就不会这样了。那么是什么情况导致项目文件的打开关联被篡改了呢?原因可能有很多,恐怕最普遍的原因莫过于安装S 阅读全文
posted @ 2013-04-29 13:05
小天1981
阅读(209)
评论(0)
推荐(0)
摘要:
自从Delphi2010增强了RTTI反射机制后,编译出来的程序变得更大了,这是因为默认情况下 Delphi2010 给所有类都加上了RTTI信息(呵呵,不管你用不用它,好像实用价值确实不高,至少目前我不会去用的)。虽说对程序的运行速度影响不大,但会增加安装程序的大小,这也是我们不愿看到的。有没有办法禁用RTTI信息,从而减小编译后程序的大小呢?,从文档中我们找到了方法。一、在工程中用编译指令禁用RTTI禁用的方法很简单,就是要在工程(dpr文件中。Delphi2010下项目文件是dproj文件,但dpr文件仍然是默认的编写代码的项目文件)的Uses语句前添加下面的定义就可以了:{ Reduc 阅读全文
posted @ 2013-04-29 13:03
小天1981
阅读(196)
评论(0)
推荐(0)
摘要:
varY: Integer;beginY := 1;// if Y < 0 then Exit;//安全检查// if Y >= RichEdit1.Lines.Count then Exit;//安全检查RichEdit1.CaretPos := Point(0, Y);RichEdit1.SelLength := Length(RichEdit1.Lines[Y]);RichEdit1.SelAttributes.Color := clRed;end; 阅读全文
posted @ 2013-04-29 13:02
小天1981
阅读(656)
评论(0)
推荐(0)
摘要:
改为: if Button = mbRight then begin if TreeView1.GetNodeAt(X, Y)<>Nil then begin TreeView1.GetNodeAt(X, Y).Selected := true; PopupMenu1.Popup(Mouse.CursorPos.X, Mouse.CursorPos.Y); end; end; 阅读全文
posted @ 2013-04-29 12:57
小天1981
阅读(178)
评论(0)
推荐(0)
摘要:
CTRL + SHIFT + B 生成解决方案CTRL + F7 生成编译CTRL + O 打开文件CTRL + SHIFT + O打开项目CTRL + SHIFT + C显示类视图窗口F4 显示属性窗口SHIFT + F4显示项目属性窗口CTRL + SHIFT + E显示资源视图F12 转到定义CTRL + F12转到声明CTRL + ALT + J对象浏览CTRL + ALT + F1帮助目录CTRL + F1 动态帮助F1 帮助SHIFT + F1当前窗口帮助CTRL + ALT + F3帮助-搜索SHIFT + ALT + ENTER全屏显示CTRL + -向后定位CTRL + SH 阅读全文
posted @ 2013-04-29 12:56
小天1981
阅读(185)
评论(0)
推荐(0)
摘要:
当使用 sp_attach_db 系统存储过程附加数据库时- -Tag: 当使用 sp_attach_db 系统存储过程附加数据库时//附加数据库sp_attach_db当使用 sp_attach_db 系统存储过程附加数据库时。sp_attach_db:将数据库附加到服务器。语法sp_attach_db [ @dbname = ] 'dbname' , [ @filename1 = ] 'filename_n' [ ,...16 ]参数[@dbname =] 'dbname'要附加到服务器的数据库的名称。该名称必须是唯一的。dbname 的数据 阅读全文
posted @ 2013-04-29 12:53
小天1981
阅读(735)
评论(0)
推荐(0)
摘要:
//zip 用的是 VCLUnZip, VCLZip 控件//得到所有子目录列表function GetAllSubDir(Directory: string; var RetList: TStringList): Boolean;//得到所有子目录文件列表function GetAllDirFile(Directory: string; var RetList: TStringList): Boolean;//压缩一个目录function ZipDir(sDir, sFile: string): Boolean;//解压一个目录function UnZipDir(sFile, sDir: s 阅读全文
posted @ 2013-04-29 12:51
小天1981
阅读(435)
评论(0)
推荐(0)
摘要:
progressbar1.Max:=myzip.ZipSize;procedure TForm1.myzipFilePercentDone(Sender: TObject; Percent: Integer);beginprogressbar1.Position:=percent;end;procedure TForm1.myzipTotalPercentDone(Sender: TObject; Percent: Integer);beginprogressbar2.Position:=percent;end; 阅读全文
posted @ 2013-04-29 12:48
小天1981
阅读(277)
评论(0)
推荐(0)
摘要:
有的时候,我们会碰到一些比较烦人的东西,打开某个继承的窗体,会提示说基类窗体找不到,并且找不开这个窗体,必须先打开基类窗体,然后再打开此窗体,才可以进行设计模式。其实出现这种情况的原因,就是因为工程dpr文件中,没有添加此基类的Form文件造成的,多是由于系统移植造成的,你也可以自己来玩一下。 解决办法:可以在View菜单中选择Project Manager或者Ctrl+Alt+F11来查看,基类中一定只有pas文件,如果继承的窗体少,你可以直接将继承的窗体去掉,然后将基类的单元文件先移除工程,然后再添加进去就可以了,或者你直接在dpr文件中添加此窗体的声明,形如{XXForm}之类的内容。下 阅读全文
posted @ 2013-04-29 12:47
小天1981
阅读(696)
评论(0)
推荐(0)
摘要:
delphi 2010中有时继承窗体会提示类似“frmBase 1 is not a valid identfier”的提示,经过反复研究发现问题出在delphi2010自带的源码格式化工具上,在工程文件的源码中,有类似如下的窗体列表代码:Base in 'Form\Base\Base.pas' {frmBase} ,启用自带的源码格式化后会在{}注释中产生两个空格,如下:Base in 'Form\Base\Base.pas' { frmBase }问题就出在这里,删除frmBase两侧的空格就可以了。但是这个不是长久之计,又来研究下这个源码格式化功能,发现自 阅读全文
posted @ 2013-04-29 12:45
小天1981
阅读(235)
评论(0)
推荐(0)
摘要:
delphi的示例程序从这里下载:http://www.progdigy.com/files/sevenzip.zipThis API use the 7-zip dll (7z.dll) to read and write all 7-zip supported archive formats.- Autor: Henri Gourvest <hgourvest@progdigy.com>- Licence: MPL1.1- Date: 15/04/2009- Version: 1.1Reading archive:Extract to path:with CreateInArc 阅读全文
posted @ 2013-04-29 12:44
小天1981
阅读(1806)
评论(0)
推荐(0)
摘要:
unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;typeTMemo = class(stdctrls.TMemo)private procedure WMPaint(var Message: TWMPaint); message WM_PAINT; procedure WMSize(var Message: TWMSize); message WM_SIZE; procedure WMMove(var Messa 阅读全文
posted @ 2013-04-29 12:42
小天1981
阅读(896)
评论(0)
推荐(0)
摘要:
SELECT TOP 100 PERCENT --a.id,CASE WHEN b.keyno = 1 THEN c.name ELSE '' END AS 表名,CASE WHEN b.keyno = 1 THEN a.name ELSE '' END AS 索引名称, d.name AS 列名, b.keyno AS 索引顺序, CASE indexkey_property(c.id, b.indid, b.keyno, 'isdescending')WHEN 1 THEN '降序' WHEN 0 THEN '升序 阅读全文
posted @ 2013-04-29 12:39
小天1981
阅读(173)
评论(0)
推荐(0)
摘要:
SELECT DISTINCTTOP 100 PERCENT isnull(p.name,'') AS 父对象, o.xtype,CASE o.xtype WHEN 'C' THEN 'CHECK 约束' WHEN 'D' THEN '默认值或DEFAULT约束'WHEN 'F' THEN 'FOREIGNKEY约束' WHEN 'L' THEN '日志' WHEN 'FN' THEN '标量函数'WHEN 'I 阅读全文
posted @ 2013-04-29 12:37
小天1981
阅读(159)
评论(0)
推荐(0)
摘要:
TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的。 常规的用法大家都知道,现在来讨论它的一些高级的用法。 1、CommaText 2、Delimiter &DelimitedText 3、Names &Values &ValueFromIndex 先看第一个:CommaText。怎么用呢? const constr :String = 'aaa,bbb,ccc,ddd'; var strs :TStrings; i :Integer; begin strs := TStringList.Create; strs.CommaTex 阅读全文
posted @ 2013-04-29 12:34
小天1981
阅读(237)
评论(0)
推荐(0)
摘要:
unit Unit1;interface{接口部分开始}uses{引用单元列表,这是可选的,如果包含必须紧跟interface关键字}{接口部分声明常量/类型/变量/过程和函数,这些声明对引用单元就像自己的声明一样}{在接口部分声明的过程和函数,就像使用了forward关键字}{接口部分结束}implementation{实现部分}uses{如果包含uses字句,必须紧跟关键字implementation}{在这里实现interface中定义的过程和函数,可以任意顺序的定义和调用.}{在这里可以省略过程和函数的列表,如果包括,必须一样.}{可以定义单元私有的常量/类型(包括类)/变量/过程和函 阅读全文
posted @ 2013-04-29 12:32
小天1981
阅读(153)
评论(0)
推荐(0)
摘要:
varList: TStringList;i: Integer;beginList := TStringList.Create;List.Add('Strings1'); {添加}List.Add('Strings2');List.Exchange(0,1); {置换}List.Insert(0,'Strings3'); {插入}i := List.IndexOf('Strings1'); {第一次出现的位置}List.Sort; {排序}List.Sorted := True; {指定排序}List.Count; {总数}Lis 阅读全文
posted @ 2013-04-29 12:28
小天1981
阅读(148)
评论(0)
推荐(0)
摘要:
DELPHI常见属性说明:ALIGN 设置组件对齐(同其父容器)方式BORDERSTYLE 设置组件边框形状CAPTION 设置组件标题CTL3D 设置组件边框是否为3D模式,若BORDERSTYLE设置为BSNONE则此属性无效COLOR 设定组件背景颜色CURSOR 设定鼠标经过组件时光标所显示的形状ENABLED 设定组件是否能使用,当设为FALSE时组件会呈灰色FONT 设定组件内文字的字型、字体大小、颜色等HEIGHT 设定组件高度HELPCONTENT 用来为帮助说明文件中的索引值建立关联LEFT 设定组件与父组件左边框间的距离POPUPMENU 设定鼠标右键(弹出式)快捷菜单TA 阅读全文
posted @ 2013-04-29 12:03
小天1981
阅读(465)
评论(0)
推荐(0)
摘要:
function StringReplace (const S, OldPattern, NewPattern: string; Flags: TReplaceFlags): string;rfReplaceAll:全部替换rfIgnoreCase:忽略大小写For Example:varaStr: String;beginaStr := 'This is a book, not a pen!';ShowMessage(StringReplace (aStr, 'a', 'two', []));//This is two book, not a 阅读全文
posted @ 2013-04-29 12:02
小天1981
阅读(189)
评论(0)
推荐(0)
摘要:
其他网站也有这份代码,不过有问题,我修改后发表上来.uses ShlObj;function SelectFolderDialog(const Handle: integer; const Caption: string;const InitFolder: WideString; var SelectedFolder: string): boolean;varBInfo: _browseinfo;Buffer: array[0..MAX_PATH] of Char;ID: IShellFolder;Eaten, Attribute: Cardinal;ItemID: PItemidlist;b 阅读全文
posted @ 2013-04-29 12:00
小天1981
阅读(261)
评论(0)
推荐(0)
摘要:
学习设计模式要对面向对象的程序设计有一定的理解,特别是多态性,如果能看懂下面的例子就没问题了,呵呵!//水果类,它是一个抽象产品TFruit =Class(TObject)...end;//苹果类,水果类的具体化TApple =class(TFruit)...end;functionFactory(): TFruit;var f:TFruit;begin//精髓就是这条语句了,明明创建了TApple对象,//却将他赋值给TFruit类型的变量//其实这样做好处大大的,后面就体会到了 f:=TApple.Create(); result:=f;end 在例程中我用到了接口,不明白得可以把它当成一 阅读全文
posted @ 2013-04-29 11:55
小天1981
阅读(517)
评论(0)
推荐(0)
摘要:
“开闭原则”:一个模块应该易于扩展,免于修改问题:请考虑上一章的例子中,如果添加一个新的具体水果类“西瓜”需要做哪些工作。 本章完成以下内容: 1、代码用支持中文的 Delphi 2005 编译并通过,并去除了其中一些无关紧要的地方,如异常处理等 ; 2、重新设计一个情景,分别用“简单工厂模式”和“工厂方法模式”两种方法实现,请体会其中的差别 ; 3、在情景中添加一个子类后,请体会“简单工厂模式”和“工厂方法模式”两种方法不同的处理方式; 4、如果不理解什么是接口、多态、静态函数等概念,这里不作解释,请看第一章或找相关资料; 5、本章的情景和上一章差不多,只是把工厂从“果园”变成了“水果小贩” 阅读全文
posted @ 2013-04-29 11:53
小天1981
阅读(362)
评论(0)
推荐(0)
摘要:
Stream对象,又称流式对象,是TStream、THandleStream、TFileStream、TMemoryStream、TResourceStream和TBlobStream等的统称。它们分别代表了在各种媒介上存储数据的能力,它们将各种数据类型(包括对象和部件)在内存、外存和数据库字段中的管理操作抽象为对象方法,并且充分利用了面向对象技术的优点,应用程序可以相当容易地在各种Stream对象中拷贝数据。 下面介绍各种对象的数据和方法及使用方法。TStream对象 TStream对象是能在各种媒介中存储二进制数据的对象的抽象对象。从TStream 对象继承的对象用于在内存、Windo.. 阅读全文
posted @ 2013-04-29 11:21
小天1981
阅读(194)
评论(0)
推荐(0)
摘要:
用什么实现HTML的界面用Delphi实现HTML界面的应用主要有两种选择:WebBrowser Control或MSHTML。为了弄清两者如何选择,我们先来看看Internet Exporer 4.0及其后续版本的体系结构:IE浏览器是建立在SHDOCVW.DLL组件之上的,而SHDOCVW.DLL则建立在MSHTML.DLL组件之上,底层则包括脚本引擎等。SHDOCVW.DLL提供了对活动文档(Active Document)的支持----例如Word等文档可以在IE中显示,并提供导航、in-place*连接、收藏夹、浏览历史和分级内容选择(PICS: Platform for Inter 阅读全文
posted @ 2013-04-29 11:19
小天1981
阅读(322)
评论(0)
推荐(0)
摘要:
为了实现在自己的程序中显示HTML文档,我们一般采用IE(Internet Explorer本文中简称为IE)发行时附带的一个ActiveX控件WebBrowser。这个控件使用和IE相同的内核,功能强大,并从Delphi5开始,正式得到Inprise公司的支持,取代了原来的那个THTML控件,成为Delphi中显示HTML文档的首选控件。 但是在实际编程过程中,这个控件提供的功能有很多限制,比如对HTML文档的浏览,只能通过指定URL或文件名来实现,不能像以往使用THTML控件那样直接读写HTML源码。因此如果程序动态生成了一段HTML文本,就必须把文本内容先写到一个临时文件,然后再将此文件 阅读全文
posted @ 2013-04-29 11:06
小天1981
阅读(397)
评论(0)
推荐(0)
摘要:
WebService使得不同开发工具开发出来的程序可以在网络连通的环境下相互通信,它最大的特点就是标准化(基于XML的一系列标准)带来的跨平台、跨开发工具的通用性,基于HTTP带来的畅通无阻的能力(跨越防火墙)。WebService给我们的软件开发带来了诸多好处,但是有一点还是必须要考虑到的,那就是安全问题。提供Service的一方要控制用户的限制访问,就要对来访的用户进行身份验证。验证成功则继续提供服务,否则就触发无权访问的异常,返回给客户。那么现在我们要解决的问题是这样的:用户的身份认证信息如何在调用主要服务前发送到服务方,从而进行验证?在WebService中,用户身份认证信息可以在客户 阅读全文
posted @ 2013-04-29 11:05
小天1981
阅读(500)
评论(0)
推荐(0)
摘要:
title= 压缩备份Delphi工程@ECHO OFF:color 后面的数字,第一位代表背景色,第二位的数字代表前景色color 0a:删除临时文件del /S *.~*del /s *.cfgdel /s *.dofdel /s *.ddpdel /s *.dcudel /s *.dskdel /S *.hppdel /S *.mpsdel /S *.mptdel /S *.bak:删除history文件夹中临时文件del /s/f/q __historyRD __history:备份文件echo 当前盘符:%~d0echo 当前盘符和路径:%~dp0set "lj=%~p0& 阅读全文
posted @ 2013-04-29 11:00
小天1981
阅读(530)
评论(0)
推荐(0)
摘要:
随着“金盾工程”建设的逐步深入和公安信息化的高速发展,公安计算机应用系统被广泛应用在各警种、各部门。与此同时,应用系统体系的核心、系统数据的存放地――数据库也随着实际应用而急剧膨胀,一些大规模的系统,如人口系统的数据甚至超过了1000万条,可谓海量。那么,如何实现快速地从这些超大容量的数据库中提取数据(查询)、分析、统计以及提取数据后进行数据分页已成为各地系统管理员和数据库管理员亟待解决的难题。在以下的文章中,我将以“办公自动化”系统为例,探讨如何在有着1000万条数据的MS SQL SERVER数据库中实现快速的数据提取和数据分页。以下代码说明了我们实例中数据库的“红头文件”一表的部分数据结 阅读全文
posted @ 2013-04-29 10:52
小天1981
阅读(149)
评论(0)
推荐(0)
摘要:
首先在数据库中创建一个存放流水号的表CREATE TABLE [dbo].[NumSeq] ([Cate] [varchar] (2) NOT NULL ,[DateNo] [varchar] (4) NOT NULL ,[Seq] [int] NULL ,[CrTime] [datetime] NOT NULL) 上面的代码中,Cate 字段为流水号的头,可以在下面的存储过程中用参数的方式传入,我的定义是2个字符,这个可以根据具体需要更改DateNo 字段为获取日期信息Seq 字段为流水号,但最终生成的流水号是这三个字段的相加创建存储过程CREATE PROC dpPMT_SGetMaint 阅读全文
posted @ 2013-04-29 10:48
小天1981
阅读(339)
评论(0)
推荐(0)

浙公网安备 33010602011771号