程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> Delphi6的TClientDataSet.XMLData 存在內存洩漏

Delphi6的TClientDataSet.XMLData 存在內存洩漏

編輯:.NET實例教程

Delphi6的TClIEntDataSet.XMLData 存在內存洩漏,當你循環調用它獲取XML文本,達到一定的循環次數後,你的程序就會報“InsufficIEnt memory for this Operation”錯誤,查看內存也是節節攀升,說明存在bug。

如何解決呢?見代碼:

type
  ThcClientDataSet = class(TClIEntDataSet)
  private
    ...
    function GetXMLData: string;
    procedure SetXMLData(const Value: string);
  protected
    ...
  public
    ...
    property XMLData: string read GetXMLData write SetXMLData;
  published

    ...
  end;
...

function ThcClIEntDataSet.GetXMLData: string;
var
  Stream: TStringStream;
begin
  Stream := TStringStream.Create('');
  try
    SaveToStream(Stream, dfXML);
    Result := Stream.DataString;
  finally
    Stream.Free;
  end;
end;

procedure ThcClIEntDataSet.SetXMLData(const Value: string);
var
  Stream: TStringStream;
begin
  Stream := TStringStream.Create(Value);
  try
    LoadFromStream(Stream);
  finally
    Stream.Free;
  end;
end;

測試證明TClientDataSet.通過Stream導入導出XML是不存在內存洩漏的,用上文繼承的ThcClIEntDataSet 重寫XMLDATA屬性,可以解決問題。

 


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved