关于数据库的奇怪的问题????????????(110分)

  • 主题发起人 主题发起人 moqi
  • 开始时间 开始时间
M

moqi

Unregistered / Unconfirmed
GUEST, unregistred user!
我写了一段程序,如下
for ipos:=1 to 7 do
begin
name:='ltj5_2'+inttostr(ipos);
table1.TableName:=name;
if table1.Exists then
begin
........
end;
end;
执行一会后,出现这样一个错误: A component named ltj5_27 already exists.
 
你可能有一个控件也叫ltj5_27,只要将这个控件改个名即可。
 
首先: <font color=#ff0000>肯定</font>有一个控件叫ltj5_27
其次: 对 <font color=#0000ff>Table1.TableName</font> 设置为已经存在的控件名称不会引起冲突
产生问题的代码是:
<font color=#ff0000>name</font><font color=#0000ff>:='ltj5_2'+inttostr(ipos);

name 是控件的属性, 在程序中直接使用,存取的是form1的名称,所以代码同时
改变了form1的名称属性!</font><font color=#ff0000>这是十分危险的!</font>

解决: 使用其它变量名称,避免使用类名、属性名,以免引起歧义,如 tname
 
您的FORM上还有一个名为ltj5_27的组件,或内存中有叫名为ltj5_27的FORM或对象,
重命名吧!
 
同意SLICKER的看法。
NAME虽然不属于保留字,但最好别用作变量名。
 
肯定存在另一个名为ltj5_27的控件
 
begin...end间作了什么?
 
不要用name作变量。
 
多人接受答案了。
 
后退
顶部