标题:请教版主
取消只看楼主
peacock
Rank: 1
等 级:新手上路
帖 子:51
专家分:0
注 册:2004-4-21
 问题点数:0 回复次数:7 
请教版主

所有变量均设置好了的

For Each td In db.TableDefs If (td.Attributes And dbSystemObject) = 0 Then '甩掉系统表 If (td.Attributes <> dbAttachedTable) Then '甩掉附属表 lstTDName.AddItem td.Name '用户表进入列表框 End If End If Next

为何td.Attributes And dbSystemObject用and 我用监视调试,开始时(td.Attributes And dbSystemObject) 的值为2,and 产生的结过不是只有true/false/1/0吗?后来就变成0了。dbSystemObject不是一常量吗。只用td.Attributes =0不就行了吗???为何要用(td.Attributes And dbSystemObject) = 0

这是一本书上的例子。能运行没错。

搜索更多相关主题的帖子: 版主 Attributes And 变量 Then 
2004-04-28 16:09
peacock
Rank: 1
等 级:新手上路
帖 子:51
专家分:0
注 册:2004-4-21
得分:0 

每一个表不是只有一个Attributes 值吗???

and 不是逻辑与吗?dbSystemObject是一常量没错吧?


学海无崖,但不是苦做舟,编程是一件多么有乐趣的事,怎会苦呢??? 让我们一起在这个世界里尽情的玩吧!!!
2004-04-29 08:48
peacock
Rank: 1
等 级:新手上路
帖 子:51
专家分:0
注 册:2004-4-21
得分:0 

他这里的and 是按位与的?

即把4变成100(B)来与的吗?4and 5=5 4(d)=100(b),5(d)=101(b),所以4and5=101(b).既为十进制中的5

这样我就明白了,不然还是不明白。


学海无崖,但不是苦做舟,编程是一件多么有乐趣的事,怎会苦呢??? 让我们一起在这个世界里尽情的玩吧!!!
2004-04-29 10:06
peacock
Rank: 1
等 级:新手上路
帖 子:51
专家分:0
注 册:2004-4-21
得分:0 

那他为何不用

td.Attributes <> dbSystemObject

这不是更好懂吗?


学海无崖,但不是苦做舟,编程是一件多么有乐趣的事,怎会苦呢??? 让我们一起在这个世界里尽情的玩吧!!!
2004-04-29 11:33
peacock
Rank: 1
等 级:新手上路
帖 子:51
专家分:0
注 册:2004-4-21
得分:0 

“大多数开发语言都会内置一些常量,用来做某些判断时的掩码。”

是不是说如果想知道某个变量是多少可以叫它与系统定义的常量向与。与出的结果是零就表示变量的值不是这个常量?

那如果该常量就为零呢?

for instance:

dbAttachExclusive(其值为0)

if (td.Attributes And dbSystemObject) = 0 then

不就是永远是零了。别人不知道这个常量还以为这是排除 td.Attributes = dbSystemObject的情况呢??

td.Attributes <>dbSystemObject 用这个不是更好懂??????????


学海无崖,但不是苦做舟,编程是一件多么有乐趣的事,怎会苦呢??? 让我们一起在这个世界里尽情的玩吧!!!
2004-04-29 14:16
peacock
Rank: 1
等 级:新手上路
帖 子:51
专家分:0
注 册:2004-4-21
得分:0 

大哥,我当然想知道结果会怎样。但那太费事了吧。

不如你告诉我结果

是不是说如果想知道某个变量是多少可以叫它与系统定义的常量向与。与出的结果是零就表示变量的值不是这个常量???


学海无崖,但不是苦做舟,编程是一件多么有乐趣的事,怎会苦呢??? 让我们一起在这个世界里尽情的玩吧!!!
2004-04-29 15:59
peacock
Rank: 1
等 级:新手上路
帖 子:51
专家分:0
注 册:2004-4-21
得分:0 

哦。 完全明白了。

谢了。firechun

非常感谢!


学海无崖,但不是苦做舟,编程是一件多么有乐趣的事,怎会苦呢??? 让我们一起在这个世界里尽情的玩吧!!!
2004-04-29 16:34
peacock
Rank: 1
等 级:新手上路
帖 子:51
专家分:0
注 册:2004-4-21
得分:0 
以下是引用firechun在2004-04-29 15:48:56的发言:

补充一下:

可能是我这句话给你造成误解“而(td.Attributes And dbSystemObject)我就知道这是在判断td是不是系统对象(也就是系统表)。”

我的意思是如果(td.Attributes And dbSystemObject)=0就是系统表。

为什么不直接使用td.Attributes =0来判断是否系统表?

Attributes有可能是多个属性之和,也就是说,Attributes<>0时也可能是系统表,对它的判断不是简单地看它的值是多少,而是看它的某一位(bit)是多少。

刚才是没看到这个帖子才没懂。

真的非常感谢。你很强


学海无崖,但不是苦做舟,编程是一件多么有乐趣的事,怎会苦呢??? 让我们一起在这个世界里尽情的玩吧!!!
2004-04-29 17:01



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-955-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.263975 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved