如何自动去除Delphi源代码中的with语句

解决方案 »

  1.   

    去除with干嘛?想让代码编译不过还是想让速度变慢?
      

  2.   

    with 看上去舒服多了。。干嘛要去掉
      

  3.   

    写的时候不要写就好了. 如果是已有代码, 慢慢重构吧. 
    自动处理不太好写, 
    简单的字符串处理的话, 如下:
    with qry1 do 
    begin
      if active then active := false;
      Sql.Text := "selet ... from ..where...order by ...";
      Open;
      
      Result := not Eof;   Close;
    end;你需要把active, Sql.Text, Open, Eof, Close等全部加上qry1.这也许可以通过提供一个关键字列表, 如:active, Sql.TExt, Open, Eof, Close..., 如果出现这些关键字前面没有实例的, 就把with后的实例加进去. 
    但是, 如果with 套with, 或是with qry1, button1 do ...这样的, 就不太好处理了. 
      

  4.   

    有一套现有的代码.嵌套的with太复杂了,可读性好差.
      

  5.   

    with语句如果能扩展为:
    with obj1 as a,obj2.rec3 as b do
    begin
      a.xxx:=...;
      a.yyy:=...;
      b.zzz:=...;
    end;就好了:即同时支持多个结构、对象,但是必须有别名区分,而且在使用时也必须有别名
      

  6.   

    这样,想去除with,也很简单(嵌套的话,以最近的别名为准)
      

  7.   

    那是代码写的易读性差,但不是with的问题