Delphi XE 使用
sunstone
这个作者很懒,什么都没留下…
展开
-
pos、ansipos、fillchar在delphi2010中unicode的问题
今天研究了一下delphi2010的unicode,发现一大堆的转换问题,建议大家老项目还是别转换到2010版本上,否则出问题都不知道在哪里。新项目可以直接使用delphi2010工作。 在delphi2010中定义一个变量str,无论这个变量定义为string 还是 ansistring,pos和ansipos函数都将该变量str当做unicodestring类型处理,大家可要小心了。原创 2009-10-22 08:09:00 · 7547 阅读 · 3 评论 -
Delphi2010中DataSnap高级技术(5)—建立稳定服务程序之TCP心跳包的使用
为了能让我们的服务程序更加稳定,有些细节问题必须解决。就如上一讲中提到的客户端拔掉网线,造成服务器上TCP变成死连接,如果死连接数量过多,对服务器能长期稳定运行是一个巨大的威胁。 另外,经过测试,如果服务器上有TCP死连接,那么服务程序连接数据库,也会产生那个一个死连接。这样的话,给数据库服务器也造成威胁。所以,服务器程序编写的好坏,直接影响系统的稳定性! 如何解决TCP死连接的问原创 2009-12-17 10:33:00 · 9108 阅读 · 6 评论 -
Delphi2010中DataSnap高级技术(4)—TCP keepAlive和KeepAliveInterval参数详解
Delphi2010中DataSnap,如果客户端异常掉线或拔掉网线,那么在服务端会留下一个TCP连接,这个连接会变成死连接(经过测试,如果windows的TCP保持连接禁用的话,三个小时该死连接还不消失)。如果大量客户端并发,出现的死TCP连接过多,服务器内存和端口将会增加,直到占满服务器的端口和耗尽内存为止。如果这样的话,服务器无法健壮稳定的运行。 大家可以另开线程来监控客户端连接,但原创 2009-12-16 07:17:00 · 11675 阅读 · 4 评论 -
Delphi2010中DataSnap高级技术(3)—DataSnap服务器如何得到客户端的IP和端口
作为一个服务器软件,必须做到对客户端强有力的控制,想要控制,就必须得到客户端的网络基本信息,比如客户端IP和端口。有了客户端IP就能随心所欲操控客户端,比如终止某些客户端的连接、限制功能等等。 在delphi2010中的datasnap服务器如何获得客户端ip,的确花了我点时间,奇怪为什么这个功能不做的更人性化点呢,功能总是藏着掖着。还得让程序员像寻宝一样摸索,浪费时间。现在把我整理的结果原创 2009-12-12 10:03:00 · 8549 阅读 · 6 评论 -
Delphi2010中DataSnap高级技术(2)—DataSnap服务端和客户端发布分发方法
这几天继续研究DataSnap技术。针对服务器和客户端软件,如何发布呢?经过研究发现,分发方法非常简单! 服务器发布方法:1.在unit ServerMethodsUnit1单元中,添加uses MidasLib;(添加MidasLib的目的是省去发布Midas.dll)2.我用的是火鸟数据库,只需拷贝dbxfb.dll和fbclient.dll 分发的服务器软件只需三原创 2009-12-09 11:14:00 · 8900 阅读 · 2 评论 -
Delphi2010中DataSnap高级技术(7)—TDSServerClass中Lifecycle生命周期三种属性说明
Lifecycle 三种属性: Session、Invocation、Server这三种属性都用在什么情况,有什么要注意的事项,Delphi2010中罕有说明。如果乱用这三种属性,你的服务程序有可能崩溃,数据混乱,内存占用大,效率低等问题!下面我对这三种属性的使用环境逐一介绍: 1. Session说明:这是delphi2010中默认属性,也是delphi推荐设置。Sess原创 2010-02-02 21:11:00 · 6647 阅读 · 11 评论 -
Delphi2010中DataSnap高级技术(1)—为DataSnap系统服务程序添加描述
这几天一直在研究Delphi 2010的DataSnap,感觉功能真是很强大,现在足有理由证明Delphi7该下岗了。DataSnap有三种服务模式,其中Service Application方式建立的windows服务没有描述,描述部分是空的,感觉总是欠缺点什么。现找到办法添加描述: procedure TServerContainer2.ServiceAfterInstall(原创 2009-12-05 10:40:00 · 6356 阅读 · 1 评论 -
delphi2010中DElphi class explorer妙用
delphi2010中view -> Delphi class explorer ,将显示所有类,包括全局变量,而且右键菜单还可以在已有类中新增 字段、属性、方法。但是没找到如何新建类,不行的话,就手工吧!原创 2009-11-19 22:13:00 · 1769 阅读 · 0 评论 -
Delphi2010中TResourceStream流使用
Resource可以是任意文件(图像、声音、office都可以),直接打包到编译的exe文件中,调用也非常方便 打开一个新的或已有的delphi工程 1.先在 Project->resources..添加一个图片,并更改名字为myfirst,类型为RT_RCDATA2.在窗体上方一个image和button3.button代码如下 procedure TForm原创 2009-11-19 22:01:00 · 6496 阅读 · 4 评论 -
关于delphi2010读取MySQL数据库TEXT类型乱码的解决方案
今天在测试delphi2010的DBExpress读取mysql数据库功能的时候,发现了一个问题: 我的mysql是5.1版本,字符集全部设置为utf8,使用delphi2010读取intger、tinyint、char、varchar等类型,中文显示正常。但是当读取text类型字段时候,出现乱码。如果将该字段更换为varchar,内容显示正常。这就奇怪了,我百思不得其解。 接着,原创 2009-11-11 15:48:00 · 5786 阅读 · 7 评论 -
编译变量$REGION用法
今天新学习了一个 编译变量$REGION,用于在delphi2006以后版本的折叠代码显示,非常方便。 procedure TForm2.Button1Click(Sender: TObject);var uStr: UnicodeString;begin{$REGION 显示uStr变量内容} uStr := ok; ShowMessage(uStr);{$ENDREGIO原创 2009-11-13 21:49:00 · 3801 阅读 · 1 评论 -
delphi 2010 fastMM 内存泄露使用方法
Delphi2010集成了fastMM,这回大家调试程序是的时候可以方便地检查内存泄露了。使用方法如下:在project中,添加一行 ReportMemoryLeaksOnShutdown := DebugHookDebugHookprogram Project1;uses Forms, Unit1 in Unit1.pas { Form1 } ;{$R *.res}原创 2009-11-06 19:20:00 · 5933 阅读 · 0 评论 -
让delphi2010操作界面回到delphi7模式
在使用delphi2010的过程中,很不习惯它的窗口在一个框框内,感觉很不方便,可能是因为使用delphi7很多年了,已经习惯了delphi7的版面。如何让delphi2010能有delphi7的版面布局呢?答案是肯定的,方法如下:1)在工具栏点右键,选择components 会看到delphi7中的组件显示面板2)tools > options > environment op原创 2009-11-06 19:22:00 · 5399 阅读 · 1 评论 -
delphi2010打开后显示"displayNotification: 内存不够"解决办法
今天打开delphi 2010,提示"displayNotification: 内存不够",以前从来没碰到,经过研究发现时welcome page 产生的问题,正好对这个 welcome page页很反感,每次启动都出现。这次就干脆干掉它,禁止这个页面的办法如下:打开桌面或启动组中的 delphi2010图标的属性,在命令行后面加一个 -np"C:/Program Files/Embarc原创 2009-11-06 19:13:00 · 5006 阅读 · 2 评论 -
Delphi2010中DataSnap高级技术(6)—加强服务程序对访问者的控制能力
1)作为一个服务程序,如果不限制客户端访问数量,后果将是很可怕的。如果有人恶搞,服务器不堪重负,内存将耗尽,最终服务器将宕机。如何限制访问者的数量呢? 我们可以设置一个变量,来记录来访者的数量,如果超过我们既定的数字,那么后续的连接服务器请求,都将被断掉。 2)限制了访问数量,但是如果不做密码身份认证,无关的人员也将能登陆服务器!解决办法是客户端传入用户名和密码,如果用户名和密码不原创 2010-01-06 20:36:00 · 6525 阅读 · 5 评论