delphi 专家,熟悉Delphi,Oracle,Sqlserver Web,Android,IOS,Javascript。企业信息化建设。
今天早上,KbmMW发布了4.30.00 版,这个版本开始支持XE4 的WIN/WIN64/OSX. 暂时不支持ios开发,同时加强了通过JSON 的对象序列化。还有就是解决了我提交的几个有关 汉字处理的BUG.
DevExpress VCL 的2013 第一个公开版发布, 基本上就是一些维护,没有大的变化,也没有FM 的支持。 What's New in DevExpress VCL 13.1.2 Release Notes Feature Highlights To learn ab...
kbmMWEncodeEscapes 是kbmmw 里面的一个函数,用来对URL 中的汉字进行编码,例如 http://127.0.0.1/getname?name=春节,由于'春节'是汉字,浏览器向台发送请求时,会把这个连接转会为 http://127.0.0.1/getdata?name=%B4%BA%BD%DA 而kbmMWEncodeEscapes 就是实现转换的函数,但是由于D2009 以后,delphi 支持unicode。
这几天仔细研究了一款使用Pascal 语言开发web 的工具 具体介绍可以参照这里。 先上几张他开发的页面照。 这是他的开发页面 经过几天的摸索,基本上了解了他的工作原理: 1.使用类似delphi界面编辑器,绘出所见即所得的页面。
Basic4android v2.70 is now available. I would first like to thank the beta testers for their help and feedback .
很多网友询问如何制作basic4android 的库,由于我个人没有对这一块详细研究,因此 不能给大家太多的建议,大家可以参考官网的教程。同时官网上有一个视频教程,由于是在国外视频 网站上,大家可能无法访问,我问作者要了这个视频文件,放到了优酷网上,大家可以在 在http://v.youku.com/v_show/id_XNTMzNDY5MTQ0.html 访问。
上次写了b4a 通过xmlrpc 访问rtc 的远程服务,有网友询问如何通过b4a 访问RTC web 的二进制流,例如如何下载 服务器上的照片,其实访问二进制流和访问字符串类似,不同的地方是,由于是通过http 协议,对于二进制流,需要先转换成 base64 编码,到客户端后再再把base64 转换回去成二进制码,就可以了。
RTC 作为delphi 的最专业的web 应用服务器,如果客户端要使用JSON 的话,那么使用RTC 应该也是一种 非常好的选择。下面我们做一个使用RTC web 服务器返回数据库JSON 的例子。
RealThinClient (以下简称RTC) 也是一款delphi 多层开发的框架,由于其底层通讯协议是自己封装SOCK 库,抛弃了 大家诟病的indy,因此表现的非常稳定,效率也非常高,深受很多人的追捧。
利用kbmMW的QueryServices,对数据集进行提交,当改用JSON格式时,客户端提交时,会产生这个错误,明明已经更新数据库,也产生这个错误!如果换成Bin格式,则正常。 能过查看kbmMWJSONStreamFormat单元,问题产生在这行代码:nIndexDefs:=nDefs.AsArray['indexes']; 可以这样理解: 客户端提交数据后,服务器会返回一个错误结果数据集,不管有无错误,都要返回这个结果集。
I'm very happy to release Basic4android v2.50. This version includes many important new features and improvements.
2012年12月份,玛雅人的预言没有实现,一个内部进行了7年开发的CrossFPC 终于见光了。 网址:http://www.crossfpc.com/ Welcome to CrossFPC, a free toolkit to integrate the FreePascal compile...
Release Notes Breaking Changes To learn about breaking changes in this version, please refer to the following page: Breaking Changes - DevExpress VCL 12.
想利用TkbmMWUNIDACQuery插入一条记录,结果遇到问题,显示: 不允许从数据类型 sql_variant 到 varchar 的隐式转换。请使用 CONVERT 函数来运行此查询。这是什么问题啊?下面是出问题的代码,很常规的写法。
首先,当一个企业要给外网用户提供服务时,应用服务器上应该配置外网IP,同时外网防火墙也要进行相关的配置, 但是当对外的服务器比较多时,可能需要很多外网IP,同时防火墙上要频繁设置,非常麻烦。第二,分发客户端后,一般 配置都要默认设置好(否则会给客户造成不必要的麻烦),那么客户端都会指向一个相对比较固定的服务器IP,也就是说 客户端理想状态是通过一个统一的入口连接到服务器上,调用相关的服务。
关于kbmMW的事务控制,前文已经在客户端实现,通过kbmMWClientTransaction来控制多个数据集的提交,在客户端提交多数据集,实际上,是在客户端实现业务逻辑,并通过一个事务来完成数据处理,这是违反多层架构的做法,实际项目中,需要在服务端,往往是利用多个数据集进行业务处理,并且用事务来控制,那我们该怎么办呢?换句话说,如何在服务实现事务的控制。
TStringList不是线程安全的,当我们在线程用到他是,要做保护。方法有两种,一种是用delphi自带的Critical,另外一种就是kbmMW为我们提供的TkbmMWLock类。 现在我们看看如何用TkbmMWLock为TStringList做线程安全: 1.
在kbmMW创建服务向导中,有个“Eventoperated service”,其描述信息:同TkbmMWSimpleService一样,就是公布了一个附加的事件,来控制客户端请求,取代了ProcessRequest.
kbmMW提供了QueryService,供我们在客户端象传统数据库应用一样,直接利用ClientQuery做SQL查询,以及提交,并且能够在客 户端以事务的方式提交多个数据集,应该说,QueryService为我们提供了非常好的便利,快速将两层应用转为多层应用,如果用过ASTA,就会发 现,QueryService在对两层应用的转化上,要比其实现的更完美,层次更清晰。
做一个简单的QueryService,在跟踪过程中发现,客户端一个查询,会被触发两次。怎么会这样,这严重影响服务器性能。 客户端的代码非常简单,就是执行一个SQL,通过QueryService返回结果: kbmMWClientQuery2.
kbmMW提供了稳顾机制,分为服务端的Cache及客户端的Cache。以客户端为例,当客户端发出相同的数据查询请求时,kbmMW会在客户端的Cache中查找,如果找到,则不再向服务器请求数据。 为了启用一个ClientQuery使用稳存,首先要设置其以下两个属性: kbmMWClientQuery.
开始利用kbmmw实作项目,第一件事就是为的服务端加用户的认证。如果客户端发来的请求无法在服务器端通过认证,即客户端认证失败,会在客户端弹出一个错误提示窗口:Authorization failed.总不能让用户看到这样的提示信息,得想办法,截获这样的错误,并给出自己的提示。
This version includes the following improvements: For Each blocks Declaration and assignment in the same statement - Two new language features in t...
TkbmMWClientQuery有一个ErrorTable属性,用于记录提交Query时返回的错误结果。当用户保存修改的业务数据,出错时,可以用ErrorTable定位出错的记录并提示错误信息。 下面是实现代码: procedure TForm2.
多层应用中的事务处理,是必须的,如果处理不好,就会出现各种数据不同步的现象,无法投入使用。以前用ASTA实现的多层应用,是在客户端利用ASTA机 制,将要提交的数据集、执行的SQL及SP,统统生成到一个脚本中,在ASTA是TAstaParamList,然后一次性提交到服务器,在服务器端在执 行这个脚本时,开启事务,执行脚本,如果成功则Commit,失败则Rollback。
按客户端使用事务更新多个表数据到kbmMW服务器,使用TkbmMWClientTransactionResolve, 可以一次性提交多个修改的数据集到服务器端,服务器利用事务来执行数据的更新,成功,提交事务,不成功,则Rollback事务。
所谓命名查询(Named Query),指客户端的Query通过指定的名称,使用服务器端的Query操作(查、增、删、改)数据库。通过Named Query机制,实现事先在服务器端设置好SQL,达到在客户端不用写SQL的目的,同时,我们只需要将QueryService的AllowClientNamedQuery设置为True。
总结一下这两天学习QueryService,一个SQL从客户端是如何从服务端取得查询结果的。 客户端: 1.第一个出场是是内存表,这要用到的kbmMWClientQuery,从TkbmCustomMemTable继承而来,通过Query属性准备 SQL语句,利用QueryService及QueryServiceVersion指定使用服务端ServiceName及Version;2.
这两天,用xalion的入门文章学习kbmMW的使用,当用kbmMW向导生成一个Service后,需要注册到kbmMWServer中,具体的方法在生成的Service中已经有说明: // INSTRUCTIONS FOR REGISTRATION/USAGE // ---------------...
kbmWTCPIPInfyClientTransport联接状态 当客户端请求一个Service时,kbmWTCPIPInfyClientTransport.Active是什么样呢?做一个简单的测试,原来是这样:当 kbmMWSimpleClient1.Request时,会检查使用的Transport是否Active,如果没有打开,则Active=True. 调用后,Transport.Active自动为True!当检查到已经为Active,则直接发出请求Request。
There be must at least one field 用uniDAC+kbmMW+SQL Server做服务器,当客户端查询时,出现这个错误,在QQ群请教,一位朋友说,在服务器端查询不对,憋了一天,最终,朋友改了TkbmMWUNIDACConnection,得以解决,原来是这样,如果uniDAC+SQL Server,则需要调用CoInitialize。
kbmmw 开发点滴:EarlyAuthentication 1.kbmMWServer.EarlyAuthentication的作用:当为真是,当客户端请求时,先触发kbmMWServer的OnAuthenticate事件,如果请求的Service需要验证,再触发Service的OnAuthenticate事件.当为假时,如果Service需要验证,则执行顺序相反;Service不需要验证,则不触发kbmMWServer.OnAutherticate事件。
苹果首席执行官蒂姆·库克(Tim Cook)刚刚结束了发布iPhone 5的活动。 理论上来看,iPhone 5的升级给人留下了深刻印象。这款产品拥有更快的处理器,更大、更亮的显示屏, 支持长期演进技术(LTE)网络,而且要比上一代产品更薄。
呵呵,devexpress 里面现在也可以贴瓷砖了。 What's New in DevExpress VCL 12.1.3 Release Notes To learn about major improvements introduced in this version, pl...
Basic4android v2.00 is now available. This upgrade is probably the most significant upgrade since v1.
4.01.00 Beta 1, Jun 1 2012 Important notes (changes that may break existing code) =====================================================...
New Features/Changes ExpressBars Suite S39446 - Documentation - The "TdxStatusBarContainerPanelStyle Object" help topic - Add information about ho...
前面说了basic4android 直接访问kbmMW server 的方法,由于javaclient 不直接支持服务器端数据库的操作, 要显示数据的内容就需要通过JSON 方式来转换。今天就大概介绍一下转换的办法。
由于目前delphi xe2 还不直接支持Android 的开发,因此kbmMW 客户端的功能也没办法直接在Android 上运行。 由于kbmMW 为了与java 应用程序通讯,在企业版里面提供了一个JavaClinet. 具体文件名为kbmMWClient.jar。
由于kbmMW 服务器与客户端交互是使用它的专用数据格式,因此与其它语言及平台相互访问的话就会有兼容问题, 为了最大化的利用kbmMW 服务器,从kbmMW 4.0 以后,其开始支持JSON 格式传递数据,其实就是可以通过 Webserver根据客户端的request 来返回对应的JSON串.
用kbmMW 开发webserver也是非常方便的。 还是以前面的简单服务器为基础,我们先要通过kbmMW的service wizard 来建立web 服务。 如图,先选择web server service 点下一步,出现选择文件目录的界面 我们这里用webfiles 相对路径,就是在网页文件放到可执行文件目录下的webfiles 目录。
达梦数据库是一个国产大型数据库管理系统。其实现了大型数据库的各种功能。由于一直是听说,没有用过,今天想来 测试一下它的实际运行性能到底如何?就在其官网上下载了一份试用版,并安装到本地机器上。由于以前的数据库我用的是 Oracle.
前面讲了如何建立和访问服务器,但是前面建的服务器都没有安全控制,这里有很大的安全问题,第一是任何人做一个客户端都可以都可以访问 服务器。第二是数据在网络传输过程中都是明码的,没有加密,使用网络侦听器就可以检测到传输的内容。
GPS在很多Android设备上扮演很重要的角色. 幸运的是可以很方便的使其工作起来. 在这个教程里面我们将完成一个程序,它可以显示当前位置并显示卫星状态. GPS功能被封装在GPS库里面. 因此我们首先要把这个库加入到引用里面: 与其相关的有种类型.
ListView 控件是一个非常强大的控件. 它可以以非常雅致的方式来显示长的或者短的列表. 建立一个ListView 非常简单: Code: Sub Globals Dim ListView1 As ListViewEnd SubSub Activity_Create(FirstTime As Boolean) ListView1.
类型Basic4android的类型系统是直接从Java的类型系统中派生的. 有两种类型的变量: 基本类型 and 非基本类型. 基本类型包括数字类型: Byte, Short, Int, Long, Float 和 Double.
到目前为止,我们在开发中有两种方法来测试应用. 一种是通过Android 模拟器来测试.另外就是当你的设备支持ADB调试的话,可以直接连到真实设备上测试. Android模拟器相比真实设备慢得多(尤其是安装应用).
简而言之 : 每个 Basic4android 程序在它自己的进程中运行. 一个进程拥有一个主线程,这个主线程也叫做UI 线程,它会一直运行到进程结束.一个进程也可以有好几个线程,这些线程用来做一些后台工作.
这个教程说明在Basic4android v1.50 后加入的新的调试功能及其他相关的工具. 在Project菜单下有一个叫Attach Debugger的新选项. 如果这个选项是选上的话,那么编译的的代码就会包含调试代码.
basic4android 的 IDE 功能强大,它帮助你专注于写代码和建立你的应用. 下面列出一些不容易发现的特色: - Ctrl + Space = 自动完成 按 Ctrl + Space 激活自动完成功能,它会把得到的关键字,变量,模块,方法,子程,属性,字段等以列表显示出来 .