首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TADOBlobStream将这个类重写为ZEOS组件以及更多

TADOBlobStream将这个类重写为ZEOS组件以及更多
EN

Stack Overflow用户
提问于 2018-02-13 16:30:28
回答 1查看 217关注 0票数 0

每当ADO (DBgo)被取消,或者有人想将基于Data.Win.ADODB的应用程序带到UNIX世界时,只要不用重写应用程序,单元unit Data.Win.ADODB中给出的ADO类的转换就会在这里有所帮助。对于TADOConnection来说,在这个超限过程中映射到TZConnection是很明显的,TADOTable,TADOQuery也是如此。

为了启动这个作业,现在还没有存在的类需要转换,这段代码使用的是TADOBlobStream类。如前所述,我希望创建一个TZEOSBLobStream类而不是它,以最小化代码重构工作

在ZEOS中创建兼容类的最佳方法是什么?以及如何考虑ADO单元中给出的其他类,如

  • TADOCommand =类;TCustomADODataSet =类;TADODataSet =类;TParameters =类;…… TADOCommand =类; TCustomADODataSet =类; TADODataSet =类; TParameters =类; ;
EN

回答 1

Stack Overflow用户

发布于 2018-02-14 05:36:27

不应该使用特定的BLOB流实现,也不应该实现自己的BLOB流。这就是图书馆附带的内容。您应该使用公共TDataSet类提供的抽象层接口。它有一个CreateBlobStream方法,它将特定库BLOB流类实现的实例作为要与之接口的抽象TStream类返回。

在大多数情况下,只使用这个返回的TStream实例就可以满足您的实际需要。使用BLOB流是非常常见的方法,它独立于已使用的库。例如,在这样的代码中,MyDataSet可以是ADO、ZEOS或理论上任何正确实现的dataset对象:

代码语言:javascript
复制
var
  Stream: TStream;
begin
  Stream := MyDataSet.CreateBlobStream(MyDataSet.FieldByName('MyBlob'), bmReadWrite);
  try
    { ← read of write from or to the Stream here }
  finally
    Stream.Free;
  end;
end;

因此,即使在您的情况下这可能很困难,我也强烈建议您重构代码,以便尽可能使用TDataSet类的抽象层。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48771367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档