肉夹膜式执行方法

很多时候,我们遇到这样得情况:

       在很多方法的前面部分和后面部分(可能只有一句代码)都一样,或者相似。 比如在一个需要花费些许时间的处理中,我们经常会在处理的同时显示一个进度条,这样给客户和我们自己一点信心。 可是如果有很多这样的处理,我们就会发现有这样代码

procedure  perform1;

begin

    ShowAProgress('正在连接。。。');

   .....

   CloseProgress;

end;

procedure performN

begin

    ShowAProgress('正在处理××,请稍等。。。');

   .....

   CloseProgress;

end;

显然我们的代码重复了。 解决这样的问题,应该有很多办法吧。 我不知道别人怎么解决的,下面是我的解决办法:

type
  TProc = procedure of object;
 

  procedure RunWithProgress(P: TProc);   ///  我管它叫夹饼方法。  不知道大家有没有意见。

implementation

procedure TForm1.Aloop;  //  某个处理。
var
  iLoop: Integer;
begin
  chk1.Checked := True;
  while chk1.Checked do
  begin
    Application.ProcessMessages;
    Inc(iLoop);
  end;
end;

procedure TForm1.RunWithProgress(P: TProc);   // 夹饼的实现。
begin
  ShowGaugeWithAvi('it is running....');
  p;
  CloseGauge;
end;

procedure TForm1.Button1Click(Sender: TObject);  //  每次只要调用夹饼就可以了。
var
  P: TProc;
begin
   P := aloop;
   RunWithProgress(p);  
end;

end.

 

  不知道有没有不同看法。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值