缓冲器:窗体的建立时机及缓冲的思想在ini文件中的应用

1 窗体建立时机问题
由于窗体属于比较占系统内存对象所以在应用中何时建立窗体就变得比较重要
窗体建立时机有下几种:
(1)、在主窗体建立时自动建立窗体
(2)、在需要时候才建立窗体然后窗体关闭时也不销毁窗体
(3)、在需要时候才建立窗体、然后窗体关闭时销毁窗体
种方式是delphi默认实现方式但是除了主窗体的外其他窗体如果不是在每次使用应用时候都定用到那么就不要让窗体自动建立不要让窗体自动建立思路方法是:点击主菜单中“project”-“option”,然后在弹出对话框中将你不想自动建立窗体名从Auo-create forms中拖到Available forms中去
第 2种方式适用于每次使用应用时候不定都用到但是旦用到那么以后会用到多次例如数据库“数据查找”对话框、网页制作软件Software中“设定文字超连接”对话框
举例代码:
在主窗体  private 部分加入
    FHouseTypeFrm: THouseTypeDlg;//THouseTypeDlg是自定义个窗体类
在您激活窗体地方加入
   not Assigned(FHouseTypeFrm) then
    FHouseTypeFrm := THouseTypeDlg.Create(self);
  FHouseTypeFrm.ShowModal;

第 3种方式适用于般情况下不会用到即使用到也不会在中多次例如“有关”对话框“系统设置”对话框等
举例代码:

var
  FUserManageFrm: TUserManageForm;//TUserManageForm是自定义个窗体类
begin
  FUserManageFrm := TUserManageForm.Create(nil);
  FUserManageFrm.SetCurrentUserName(FUsername);
  FUserManageFrm.ShowModal;
  FreeAndNil(FUserManageFrm);
end;

2 缓冲思想在ini文件中应用

下列代码是我们在用ini文件读写系统配置常用思路方法:
procedure TConfigMgr.SetDBBackupFileName(AValue: );
begin
    FIniFile.WriteString('DBBackup', 'DBFileName', AValue);
end;

function TConfigMgr.GetDBBackupFileName: ;
begin
    result := FIniFile.ReadString('DBBackup', 'DBFileName',
      FRootPath + 'DBBackup.mdf');
end;

读写磁盘文件是比较占用系统资源操作所以能够不读写硬盘就不读写可以学习操作系统中缓冲区概念来改进配置文件读写如果在读取系统配置的前已经读取过了那么只要返回上次读取值就可以了不用再去读硬盘;在向配置文件前将配置值和上次值比较如果相同就没有必要写配置文件了

type
  TConfigMgr =
  private
    FIniFileName: ;
    FIniFile: TIniFile;
    FRootPath: ;
    FFormerDBBackupFileName: ;
    procedure SetDBBackupFileName(AValue: );
    function GetDBBackupFileName: ;
  public
   ……
  published
    property DBBackupFileName: read GetDBBackupFileName write SetDBBackupFileName;
  end;

implementation
……
procedure TConfigMgr.SetDBBackupFileName(AValue: );
begin
   FFormerDBBackupFileName <> AValue then
  begin
    FIniFile.WriteString('DBBackup', 'DBFileName', AValue);
    FFormerDBBackupFileName := AValue;
  end;
end;

function TConfigMgr.GetDBBackupFileName: ;
begin
   FFormerDBBackupFileName <> '' then
    result := FFormerDBBackupFileName
  
    result := FIniFile.ReadString('DBBackup', 'DBFileName',
      FRootPath + 'DBBackup.mdf');
end;
Tags:  三重缓冲 高速缓冲存储器 缓冲区溢出 缓冲器

延伸阅读

最新评论

发表评论