【问题标题】:TClientDataSet - SaveToStream throws Access violationTClientDataSet - SaveToStream 引发访问冲突
【发布时间】:2009-08-07 10:36:23
【问题描述】:

我在使用 ClientDataSet 将数据保存到流时遇到问题。

我将数据放入 ClientDataSet 并尝试:

...
var
strmBENU: TMemoryStream;


implementation    
...

TForm1.Button1Click(Sender: TObject);
begin
  ClientDataSet1.SaveToStream(strmBENU);
end;

...

单击 Button1,这是我得到的:

模块“Project2.exe”中地址 0049CEB2 的访问冲突。读取地址00000000。

我做错了什么?

【问题讨论】:

    标签: delphi stream


    【解决方案1】:

    可能没有创建流。试试这个:

    TForm1.Button1Click(Sender: TObject);
    var
      strmBENU: TMemoryStream;
    begin
      strmBENU := TMemoryStream.Create;
      try
        ClientDataSet1.SaveToStream(strmBENU);
        // do stuff with stream
      finally
        strmBENU.Free;
      end;
    end;
    

    【讨论】:

    • 查看对 Mitch Wheats 回答的评论
    【解决方案2】:

    看起来像一个 NULL 引用。你实例化了strmBENU吗?

    【讨论】:

    • 很好,我实例化了它,现在它说当我尝试 ClientDataSet2.LoadfromStream(strBENU) 在 project2.exe 中引发异常:EDatabaseError: 'ClientDataSet2: Missing Data-Provider or DataPackage.'进程已停止。
    • 忘记在 CDS2 上插入提供者名称。但是从流中加载然后打开 CDS2 在我的 TDBGrid2 中没有数据
    • 由于一些菜鸟错误未将数据源连接到 DBGrid 而失败。现在提问吧。如何通过套接字获得它......但这是另一个已经打开的问题。 stackoverflow.com/questions/1244465/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-08
    • 1970-01-01
    • 2017-01-17
    • 1970-01-01
    • 1970-01-01
    • 2018-02-28
    • 1970-01-01
    相关资源
    最近更新 更多