举个例子: with Query1 do begin Free; end; 就相当于 Query1.Free 如果还不懂就要好好看书。
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 之间
C++ Builder有with这个关键字吗?
with表示在它下面的一系列都是它的属性,为了简化书写
是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;
方便对象的属性参数赋值 with 对象 do begin 属性1:=...; 属性2:=...; 属性2:=...; .... end;
叫“开域操作”。 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 建议嵌套次数不要太多,否则,代码不易读懂,且寻址时间反而变长。
with Query1 do
begin
Free;
end;
就相当于 Query1.Free
如果还不懂就要好好看书。
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 之间
有个对象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;
with 对象 do
begin
属性1:=...;
属性2:=...;
属性2:=...;
....
end;
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
建议嵌套次数不要太多,否则,代码不易读懂,且寻址时间反而变长。