在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.
责任编辑:小草