delphi里得with是做什么用得呢?
 例如:with query1 do

解决方案 »

  1.   

    举个例子:
    with Query1 do
      begin
        Free;
      end;
    就相当于 Query1.Free
    如果还不懂就要好好看书。
      

  2.   

    For Example:
    Adoquery.close;
    Adoquery.sql.clear;
    Adoquery.sql.text:='';
    Adoquery.open;
    总写Adoquery是不是很麻烦
    如果用 With Adoquery do
            begin
             close;
             sql.clear;
             sql.text:=''
             open;
            end
    省去了Adoquery,只不过Adoquery 对象的作用域仅在Begin 与End 之间
      

  3.   

    C++ Builder有with这个关键字吗?
      

  4.   

    with表示在它下面的一系列都是它的属性,为了简化书写
      

  5.   

    是Delphi特有的语言...叫作开域语言...比如: 
    有个对象Button1,你要使用它的Caption和Width属性With Button1 do
    begin
      Caption := 'test'; //这里将是改变Button1的Caption属性
      Width := 100; //这里将是改变Button1的Caption属性
    end;
    ///
    with 也可以用到记录上面去,
    Ttest = record
     a: String;
     b: integer;
    end;var
      test: Ttest;
    begin
      with test do 
        a := 'fdsaf'; //相关于test.a;
        b := 5;
      end;
      

  6.   

    方便对象的属性参数赋值
    with 对象 do
    begin
      属性1:=...;
      属性2:=...;
      属性2:=...;
      ....
    end;
      

  7.   

    叫“开域操作”。
    1、方便代码书写和阅读。
    2、对于编译执行代码来说,可以节省寻址时间(减少寻址次数),提高效率。
    如:
      with datamodal.adoquery.sql do//--此时,操作指针其实就停留在了SQL:TSTRINGS这个对象处了。
        begin
          clear;
          add('select ...');
          ....
        end;
    上面的代码其实也可以这样写:
     datamodal.adoquery.sql.clear;
     datamodal.adoquery.sql.add('select ...');
    呵~~~,当然,开域操作支持多个对象的操作的。如:
      with adoquery1,adoquery2 do 
       begin   end;
    但建议不要使用这样的用法!因为很易造成操作指针寻址错乱!!!WITH 的使用,可以嵌套:
      with datamodal do
       with adoquery do
         begin
           sql.clear;
         end
    建议嵌套次数不要太多,否则,代码不易读懂,且寻址时间反而变长。