delphi 三层开发经验汇总
delphi很早就已经可以进行三层的开发了. 但一直到现在, 网上这方面的东西太少 了. 要么太老, 甚至不完全正确. 例如:
如何进行多表更新(提交), 很多回复还是说用ADOConnection的事务, (如果要同时更新SQL SERVER和Oracle数据库的表怎么办).
当然也有说用SetComplete, SetAbort的. 但说的很简单, 其中的注意事项又是什么呢. 还有的推荐看李维的那本分布式开发的书. 那本书中是写了很多值得学习和了解的东西. 但有些东西已经过时了或者说的不详细, 例如win2000中已经有COM+了. COM+已经整合了mts及其它一些东西了. 另个, 也有些贴子上有人说, 应用服务器上只用一个TDataSetPrivoder和一个 TDataSet(ADO, Query, DBXQuery之一)就可以了. 但具体怎么用呢?又看不到下文.
另外, 还有一些朋友在用第三方的一些控件. 我看了一下, 大多就像个嵌入到IE中的ActiveX, 感觉也没有什么意思---直接弄个ActiveX到IE中就不行了.
1. 如何只用一个TDataSetPrivoder和一个TADOQuery.
delphi的TRemoteDataModule集成了IAppServer接口.并且实现了IAppServer接口的方法:
view plaincopy to clipboardprint?
{ IAppServer }
function AS_GetProviderNames: OleVariant; safecall;
function AS_ApplyUpdates(const ProviderName: WideString; Delta: OleVariant;
MaxErrors: Integer; out ErrorCount: Integer;
var OwnerData: OleVariant): OleVariant; safecall;
function AS_GetRecords(const ProviderName: WideString; Count: Integer;
out RecsOut: Integer; Options: Integer; const CommandText: WideString;
var Params, OwnerData: OleVariant): OleVariant; safecall;
function AS_DataRequest(const ProviderName: WideString;
Data: OleVariant): OleVariant; safecall;
function AS_GetParams(const ProviderName: WideString; var OwnerData: OleVariant): OleVariant; safecall;
function AS_RowRequest(const ProviderName: WideString; Row: OleVariant;
RequestType: Integer; var OwnerData: OleVariant): OleVariant; safecall;
&
相关文档:
TCollection 是TCollectionItenm对象的一个容器。
类关系TObject→TPersistent
每一个TCollection都拥有一组TCollectionItem对象。
在其Items属性数组中,TCcllection保存集合项目的一个下标。Count 属性包含了集合的项目数量。使用Add和Clear方法可以向集合中加入项目和从集合中删除项目。
从TCollect ......
TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的。
常规的用法大家都知道,现在来讨论它的一些高级的用法。
先把要讨论的几个属性列出来:
1、CommaText
2、Delimiter & DelimitedText
3、Names & Values & ValuefromIndex
先看第一个:CommaText。怎么用呢?用代码说话:
const ......
windows几个重要的内核数据结构虽然网上也有相关的定义,但个人觉得不齐全定义不规范,因此用一天时间使用WinDbg+Win2000sourcecode重新定义了常用的内核数据结构,并尽可能还原微软的原结构定义,每个结构都递归到最子层的结构并且通过了测试。通过这次工作过程不仅使自己得到一次学习的机会,而且提高了自己的整体软件架� ......
Delphi7 调用 C#的Webservice 不能传入参数
解决办法:
在Delphi导入WSDL后生成的单元的最后一行,即initialization里的初始化端口的代码中加入代码
InvRegistry.RegisterInvokeOptions(TypeInfo(接口名), ioDocument);
即可
......
delphi保存读取utf-8的文本文件
给客户做了一个批量识别图像并合成双层pdf的程序,最后客户需要生成的同时附带一份记事本文件,就是OCR过后的文本,并指定utf-8格式的。在处理utf-8时出现了点小问题,现在总结如下
首先 利用delphi自带的UTF8Encode函数,将普通字符转换为utf-8编码
创建一个流,MemoryStream或FileStr ......