随笔分类 -  软件开发:Delphi

上一页 1 ··· 5 6 7 8 9 10 11 12 下一页
摘要:var s: string;begin //指令类型 type s := Format('最大整数是: %d; 最小整数是: %d',[MaxInt,Low(Integer)]); //返回: 最大整数是: 2147483647; 最小整数是: -2147483648 { 提示: 格式指令必须以 % 开始, 不区分大小写, %d 代表一个整数; 第二个参数是一个变体数组 } s := Format('最大的无负号整数是: %u',[High(Cardinal)]); //返回: 最大的无负号整数是: 4294967295 { %u表示一个无负号整数 } s := 阅读全文
posted @ 2011-09-16 14:25 Max Woods 阅读(1261) 评论(0) 推荐(0)
摘要:trytry if (you.believe(it)=true or you.believe(it)=false) begin I.believe(it); end;execept on E: Exception dobegin Showmessage('It's a miracle!'); raise;end;finallyit.justHappened();end; 阅读全文
posted @ 2011-09-09 11:32 Max Woods 阅读(605) 评论(0) 推荐(0)
摘要:如果你使用MySQL数据库,并且使用DBGO(ADO)组件通过MySQL ODBC 3.5.1 或者MySQL Connector/ODBC 5.0连接,那么你的TADOConnection连接字符串(ConnectionString)1.接本机数据库时:'DRIVER={MySQL ODBC 3.51 Driver}; SERVER=localhost; DATABASE=myDatabase; USER=myUsername; PASSWORD=myPassword;OPTION=3;'2.连接远程数据库时:'DRIVER={MySQL ODBC 3.51 Driv 阅读全文
posted @ 2011-08-29 23:24 Max Woods 阅读(1548) 评论(0) 推荐(0)
摘要:原文连接http://www.delphifeeds.com/go/s/74909google翻译并整理当开发人员开始创建Delphi的DataSnap应用时很常见的数据库连接定义方式是每个数据模块建立一个连接。这样做将产生大量的数据库连接,并产生很多问题。DelphiXe,提供了Session管理,更容易实现控制客户端连到服务器的数据库连接。客户端应用程序bu不会知道这些,服务器将完成所有的事情。当我们创建一个DataSnap服务器时,最好的做法就是定义一个服务器容器(数据模块),其中包含DataSnap服务器组件和注册所有的服务器应用程序所需的类。在这个容器中,我们将定义一个负责处理服务器 阅读全文
posted @ 2011-08-26 23:59 Max Woods 阅读(1249) 评论(1) 推荐(0)
摘要:1. 准备工作 首先下载 RemObjects SDK,我用的是 4.0.19 版,可以安装在 Delphi2007 中。用其他版本 delphi 的也可以下载 4.0.19,用起来效果一样的。需要注意的是,RemObjects 是共享的框架,如果不注册,那么编译后的程序不能脱离 delphi 的 IDE 单独运行。注册的方法是去 RemObjects 官方网站(http://www.remobjects.com/shop/)下购买定单,付费后会收到 License 文件(别问我要 License,我不会给的)。2. 创建 VCL Standalone 点击 File->New-> 阅读全文
posted @ 2011-08-26 19:33 Max Woods 阅读(799) 评论(0) 推荐(0)
摘要:使用Remobjects的单通道做服务端项目时,每当同一客户端同时发起超过一个以上的请求数据时,就会出现Channel is Busy 错误,为此我询问过Remobjects官方,他们回答是,单通道是非多线程安全的,类似这样的回答,建议我的用超级通道。可是简单地更换单通道为超级通道反而导致问题更多,由是我就想改造一下单通道。在盒子上我曾经发布关于这个问题解决方法,但是还不合理,现在贴出来最终的解决方法,这个方法在我的程序使用后,再也没有出现以上问题uROClient.pas内,请对照修改.procedure TROTransportChannel.Dispatch(aRequest, aRes 阅读全文
posted @ 2011-08-26 01:12 Max Woods 阅读(735) 评论(2) 推荐(0)
摘要:多年前接触过RemObjects的产品,当时可能他们的技术不是太成熟,实现多层架构的整体效率比较低,另外也因为当时的SOA的概念还未提出,开发的定位也就基于客户和自身的现有需求,没考虑那么多的东西,这些时间研究SOA才发现,RemObjects可能成为开发人员的另一个快速实现SOA的利器,是其他多层应用的中间件所不及。(详细的介绍请到网上搜索)RemObjects SDK for Delphi V6.0.39.777Cracked 破解版下载地址:http://www.ctdisk.com/file/8210770官方安装文件下载地址:http://www.ctdisk.com/file/82 阅读全文
posted @ 2011-08-13 11:40 Max Woods 阅读(3051) 评论(4) 推荐(0)
摘要:在上次的文章中讨论了如何把传统的Delphi 主从架构应用程序逐渐转换为DataSnap JSON服务器,在本篇文章中让我们正式讨论如何使用Delphi XE开发DataSnap/REST服务器,由于这其中牵涉到非常多的技术,因此我们将花数篇的篇幅来讨论。现在就让我们从DataSnap/REST服务器开始。开发DataSnap服务器 Delphi XE版的DataSnap允许开发人员同时在DataSnap服务器中实作RESTful架构的服务器,如此一来DataSnap服务器不但可以在网络内 部做为多层的服务服务器,也可以让网络外部的客户端使用REST的方式来存取服务。 要在Delphi XE中 阅读全文
posted @ 2011-08-11 22:43 Max Woods 阅读(1613) 评论(1) 推荐(0)
摘要:从桌面开发,主从架构,一直到多层架构,虽然都是广泛被接受的观念和技术,但在信息技术的实作上却从不是开放, 相容的世界。Delphi从桌面开发到主从架构都是使用自己的数据传递格式以及通讯传递架构,到了多层架构虽然使用了Windows平台上的通讯协议,例 如COM/DCOM/COM+,但是在传递的数据格式方面仍然是使用自己的架构,COM/DCOM/COM+也是MS专属的通讯协议,和其它平台上使用的 通讯协议也不一样。当然,不光是Delphi/BCB,大部份的开发工具也是采用类似的方式,那就是都支持桌面开发,主从架构或是多层架构等通用观念的架 构,但使用来传递数据和沟通通讯协议都是封闭的架构。直到J 阅读全文
posted @ 2011-08-11 22:41 Max Woods 阅读(1246) 评论(0) 推荐(0)
摘要:搞了我几个小时,终于成功在 Delphi 中静态链接了 SQLite (v3.5.4),下一步就是研究加密了,呵呵 中间其实遇到很多问题,今天累了,就不说了,改天补上 1.当然是下载 SQLite 的源代码啦,呵呵,不过记得要是 all in one 的 amalgamation 版本哦 (修正: amalgamation 并非 all in one, 只是 core code all in one, 源代码里的其他文件也是不能少的!) 2.解压缩,得到3个文件 sqlite3.c sqlite3.h sqlite3ext.h 然后把 sqlite3.c 编译成 obj 以便在 Delphi 阅读全文
posted @ 2011-03-25 23:03 Max Woods 阅读(1095) 评论(0) 推荐(0)
摘要:This was prompted by Deltic's answer, I wanted to provide an counter-example proving you can use generics for the animal feeding routine. (ie: Polymorphic Generic List)First some background: The reason you can feed generic animals using a generic base list class is because you'll usually hav 阅读全文
posted @ 2011-03-23 22:12 Max Woods 阅读(501) 评论(0) 推荐(0)
摘要:全局的非指针类型,声明后自动分配内存,并初始化值局部的非指针类型,声明后自动分配内存,不初始化值,值不确定(取决与别的程序对这块内存的操作)全局的指针类型,声明后不自动分配内存,值为nil局部的指针类型,声明后不自动分配内存,但会随机指向一个地址,所以地址不为nil应用程序可用的内存区分三类:全局变量区(存放全局变量)、栈(Stack)、堆(Heap)。应用程序开始时所有的全局变量的内存都被分配到全局变量区,局部变量分配到应用程序栈,应用程序结束时分配到栈中的变量内存会被栈管理器自动释放,堆上的变量内存必须手工释放。堆(内存)堆表示程序可用的内存区,也叫动态内存区。堆内存的分配与释放次序是随机 阅读全文
posted @ 2011-03-20 02:24 Max Woods 阅读(1054) 评论(1) 推荐(0)
摘要:类别 运算符 运算符标识 使用 转换 隐式转换 Implicit Implicit(a: type): resultType; 显式转换 Explicit Explicit(a: type): resultType; 一元 - Negative Negative(a: type): resultType; + Positive Positive(a: type): resultType; Inc Inc Inc(a: type): resultType; Dec Dec Dec(a: type): resultType not LogicalNot LogicalNot(a: type): r 阅读全文
posted @ 2011-03-19 21:15 Max Woods 阅读(281) 评论(0) 推荐(0)
摘要:1. 与TTable、TQuery一样,TClientDataSet也是从TDataSet继承下来的,它通常用于多层体系结构的客户端。很多数据库应用程序都用了BDE,BDE往往给发布带来很大的不便,因而TClientDataSet最大的特点是它不依赖于BDE(Borland Database Engine),但它需要一个动态链接库的支持,这个动态链接库叫DBCLIENT.DLL。在客户端,也不需要用TDatabase构件,因为客户端并不直接连接数据库。由于TClientDataSet是从TDataSet继承下来的,所以,它支持诸如编辑、搜索、浏览、纠错、过滤等功能。由于TClientDataS 阅读全文
posted @ 2011-03-19 10:28 Max Woods 阅读(650) 评论(0) 推荐(0)
摘要:Delphi做为一个快速应用开发工具,深受程序员的喜爱。其强大的组件功能,让程序员能够轻松、高效地完成常见的界面开发、数据库应用等功能。然而,帮助的相对缺乏,使得许多组件的功能并不为人们正确地使用,究其原因,仍然是认识上的问题。对于MIDAS开发中的核心部件,TClientDataSet和TDataSetProvider,由于资料的缺乏,人们在网上大多谈论的是李维的书籍内容。我有幸在BDN上见到了Cary Jensen的Professional Developer系列文章,详细阐述了DELPHI的数据库开发技术。现节选出其中的ClientDataSet部分,与大家共同分享。 ClientDat 阅读全文
posted @ 2011-03-19 10:22 Max Woods 阅读(709) 评论(0) 推荐(0)
摘要:TClientDataSet控件继承自TDataSet,其数据存储文件格式扩展名为 .cds,是基于文件型数据存储和操作的控件。该控件封装了对数据进行操作处理的接口和功能,而本身并不依赖上述几种数据库驱动程序,基本上能满足单机"瘦"数据库应用程序的需要。1.TClientDataSet的基本属性和方法介绍 1).FieldDefs: 字段定义列表属性 开发者可通过单击属性编辑器中该属性编辑按钮,或在该控件上单击右键选择弹出菜单中的"Fields Editor"菜单进行字段编辑。设置完此属性后,实际上就相当于定义了表的结构;如果想装入已有的数据表的结构和数 阅读全文
posted @ 2011-03-19 10:19 Max Woods 阅读(1312) 评论(0) 推荐(0)
摘要:核心提示:本实验证明了在类中方法的调用时候,所有的方法都隐含了一个Self参数,并且该参数作为对象方法的第一个参数传递... 首先做一个空窗体,放入一Button。在implementation下面声明两个方法如下: //外部方法,只声明一个参数,此时按照标准的对象内部事件方法TNotifyEvent声明,此声明中,Sender则对应为产生该事件的对象指针。procedure ExtClick1(Sender: TObject);begin{asmmov eax,[edx+8]call showmessageend; }showmessage(TComponent(Sender).Name); 阅读全文
posted @ 2011-03-19 00:04 Max Woods 阅读(773) 评论(1) 推荐(0)
摘要:开始,由VirtualAlloc想起 我在查看VirtualAlloc这个API的时候,思绪竟然跳到另一个地方去了。那是以前阅读VCL源码时遗留下来的问题,Classes单元的MakeObjectInstance函数调用了VirtualAlloc,我甚是不解,为什么Delphi提供了那么多内存分配函数,而MakeObjectInstance偏偏要用系统提供的API,更令我不解的是,之后再也不见有VirtualFree的调用,也就是说,VCL其实存在内存泄漏?这个问题我在网上也看到相关的讨论,有人认为这的确是VCL的Bug,有人甚至修改了Classes单元,在单元的结束节处调用VirtualFr 阅读全文
posted @ 2011-03-18 23:56 Max Woods 阅读(458) 评论(0) 推荐(0)
摘要:You use the TListView Delphi control to display a list of items in a fashion similar to how Windows Explorer displays files and folders. The items can be displayed in columns with column headers and sub-i items, or vertically or horizontally, with small or large icons. ListView Item Hints?The TListV 阅读全文
posted @ 2011-03-18 14:41 Max Woods 阅读(592) 评论(0) 推荐(0)
摘要:Ctrl+F 进行搜索快捷键描述IDE 版本EscapeSelects parent control in design mode. Left mouse click + Escape drags the parent controlDelphi 2 and upShift + ClickAfter selecting control in form designer, click on it with Shift again to select top most parent FormDelphi 5 and upTabIn Object Inspector activates increm 阅读全文
posted @ 2011-03-17 22:45 Max Woods 阅读(629) 评论(0) 推荐(0)

上一页 1 ··· 5 6 7 8 9 10 11 12 下一页