Delphi垃圾回收功能
来源:优易学  2011-7-3 21:12:36   【优易学:中国教育考试门户网】   资料下载   IT书店
在Delphi中没有垃圾回收功能,因此每次都要用try finally结构来创建和释放对象很是麻烦。经过研究,我用接口技术实现了Delphi中的垃圾回收功能。并且封装了TFileStream类。
  unit Unit1;
  interface
  uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
  type
  IStream = interface
  function Write(const Buffer; Count: Longint): Longint;
  function Read(var Buffer; Count: Longint): Longint;
  end;
  TInterfaceStream=class(TInterfacedObject,IStream)
  private
  FStream:TStream;
  public
  function Write(const Buffer; Count: Longint): Longint;
  function Read(var Buffer; Count: Longint): Longint;
  destructor Destroy;override;
  end;
  TInterfaceFileStream=class(TInterfaceStream,IStream)
  public
  constructor Create(const FileName: string; Mode: Word);
  end;
  TForm1 = class(TForm)
  Button1: TButton;
  Edit1: TEdit;
  procedure Button1Click(Sender: TObject);
  private
  { Private declarations }
  public
  { Public declarations }
  end;
  var
  Form1: TForm1;
  implementation
  {$R *.dfm}
  {TInterfaceStream}
  destructor TInterfaceStream.Destroy;
  begin
  FStream.Free;
  inherited Destroy;
  ShowMessage(’Destory’);
  end;
  function TInterfaceStream.Read(var Buffer; Count: Integer): Longint;
  begin
  Result:=FStream.Read(Buffer,Count);
  end;
  function TInterfaceStream.Write(const Buffer; Count: Integer): Longint;
  begin
  Result:=FStream.Write(Buffer,Count);
  end;
  { TInterfaceFileStream }
  constructor TInterfaceFileStream.Create(const FileName: string;
  Mode: Word);
  begin
  FStream:=TFileStream.Create(FileName,Mode);
  end;
  procedure TForm1.Button1Click(Sender: TObject);
  var
  Stream:IStream;
  begin
  Stream:=TInterfaceFileStream.Create(’c:\\1.txt’,fmCreate);
  Stream.Write(PChar(Edit1.Text)^,Length(Edit1.Text));
  end;
  end.

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训