乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 114|回复: 6

修复嵌套的If-Then语句

[复制链接]

68

主题

179

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
451
发表于 2020-5-24 02:45:33 | 显示全部楼层 |阅读模式
大家好

可能我发现VBScript有一个bug。我用VBScript函数if-then-elseif-else语句创建和实验了很多,我发现在保存我的绘图之前有些东西是可以工作的,但我知道我再次检查时只是停止工作



我将多个函数链接到函数名;“按对象命名”;这会为每个不同的对象生成不同的名称。在图1和图2中,一切都是正确的…
…但我添加了对象类型后,发生了一些奇怪的事情;吊架:


再次重申,一切正常,但仅限于吊架,但我正在检查电缆槽和电缆槽是否合适。这种情况发生时:


我不知道这里发生了什么
;那么:我做了什么坏事吗
如果是,我该如何解决
如果没有,有什么错,还有什么替代方案

PD:附件[代码0
之后:
  1. If "[ObjectType]" = "Cable Tray" Then
  2.         RESULT = "[NAME_CABLE_TRAY]"
  3. ElseIf "[ObjectType]" = "Cable Tray Fitting" Then
  4.         RESULT = "[NAME_CABLE_TRAY_FITTING]"
  5. ElseIf "[ObjectType]" = "Hanger" Then
  6.         RESULT = "[NAME_HANGER]"
  7. Else
  8.         RESULT = "NA"
  9. End If


本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

61

主题

792

帖子

35

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1015
发表于 2020-5-24 20:24:39 | 显示全部楼层
我不知道'我不会做很多VB脚本的东西,所以你必须告诉我这是否合法
嵌套的IF-Then语句是糟糕的编程。你应该尽量避免使用它们。而且,您永远不应该在return语句之后使用ELSE语句。虽然,我不'不要认为;结果“;必须是一个;return“返回”;这就是为什么我说你需要告诉我我发布的代码剪贴是否合法
你最好用下面这样的小IF语句。您为变量建立了一个默认值(如果您绝对需要),并使用这样的小if语句。理论是,当RESULT关键字是return时(在这种情况下,省略第一行),当if语句变为true时,代码将停止执行
如果结果关键字不是;return“返回”;然后你应该使用这样的语句:
  1. RESULT = "NA"
  2. If "[ObjectType]" = "Cable Tray" Then
  3.         RESULT = "[NAME_CABLE_TRAY]"
  4. End If
  5. If "[ObjectType]" = "Cable Tray Fitting" Then
  6.         RESULT = "[NAME_CABLE_TRAY_FITTING]"
  7. End If
  8. If "[ObjectType]" = "Hanger" Then
  9.         RESULT = "[NAME_HANGER]"
  10. End If
然而,如果结果关键字是一个;return“返回”;语句,则代码如下所示:
  1. If "[ObjectType]" = "Cable Tray" Then
  2.         RESULT = "[NAME_CABLE_TRAY]"
  3. End If
  4. If "[ObjectType]" = "Cable Tray Fitting" Then
  5.         RESULT = "[NAME_CABLE_TRAY_FITTING]"
  6. End If
  7. If "[ObjectType]" = "Hanger" Then
  8.         RESULT = "[NAME_HANGER]"
  9. End If
否则,我想elseif语句是有限制的,也就是说你只能使用一个
回复

使用道具 举报

68

主题

179

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
451
发表于 2020-5-26 02:05:24 | 显示全部楼层

很抱歉回答得太晚了。我正在测试很多东西来解决这个问题,我在测试你的代码,你的代码可以工作,但是当不是嵌套函数时,这仍然不能解决嵌套的if语句,因为支持每个函数的字符数可能存在任何未记录的限制或类似的限制,我正在尝试找到它。所以我以后会继续更新这个帖子
谢谢你的帮助,也谢谢你是一位很棒的主持人。
回复

使用道具 举报

68

主题

179

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
451
发表于 2020-5-26 13:15:27 | 显示全部楼层

您好,我终于找到了一个可能的解决方案
您的代码发布在这里:
  1. RESULT = "NA"
  2. If "[ObjectType]" = "Cable Tray" Then
  3.         RESULT = "[NAME_CABLE_TRAY]"
  4. End If
  5. If "[ObjectType]" = "Cable Tray Fitting" Then
  6.         RESULT = "[NAME_CABLE_TRAY_FITTING]"
  7. End If
  8. If "[ObjectType]" = "Hanger" Then
  9.         RESULT = "[NAME_HANGER]"
  10. End If
工作并解决了这个问题,但是我需要在每个公式函数中插入这个结构,但我需要添加一个额外的比较语句和过滤对象,以最终减少字符的数量
  1. RESULT = "NA"
  2. If ("[ObjectType]") = ("Cable Tray") And ("ParType" = "Trunking") Then
  3.         RESULT = "[NAME_CABLE_TRAY]"
  4. End If
  5. If ("[ObjectType]") = ("Cable Tray Fitting") And ("ParType" = "Elbow")Then
  6.         RESULT = "[NAME_CABLE_TRAY_FITTING]"
  7. End If
  8. If ("[ObjectType]") = ("Hanger") Then ("Anchor_System" = "Electric")
  9.         RESULT = "[NAME_HANGER]"
  10. End If
但是这需要分析每个公式并完全失去它们的美,出于这个动机,我在结尾添加了If-ElseIf-Else-End-If语句
  1. If "[ObjectType]" = "Cable Tray" Then
  2.         RESULT = "[NAME_CABLE_TRAY]"
  3. ElseIf "[ObjectType]" = "Cable Tray Fitting" Then
  4.         RESULT = "[NAME_CABLE_TRAY_FITTING]"
  5. ElseIf "[ObjectType]" = "Hanger" Then
  6.         RESULT = "[NAME_HANGER]"
  7. Else
  8.         RESULT = "NA"
  9. End If
这是原始脚本,理论上应该可以用,但它没有#039;t、 最后,Else语句应该是'不让代码工作?我的意思是,否则最终应该等于;结果=“”;一开始。我在做坏事
回复

使用道具 举报

61

主题

792

帖子

35

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1015
发表于 2020-5-26 13:32:10 | 显示全部楼层
很高兴我的代码有效
我不会'不要过分担心IF-IFELSE-ELSE语句中未记录的限制;我只会避免使用它们。它们通常是一种非常糟糕的编程方法
尝试替换此项:
  1. If(boolean_expression) Then
  2.    Statement n
  3. ElseIf (boolean_expression) Then
  4.    Statement n
  5. ElseIf (boolean_expression) Then
  6.    Statement n
  7. Else
  8.    Statement n
  9. End If
使用此方法:
  1. Select Case expression
  2.    Case expressionlistN
  3.       statementN
  4.    Case expressionlistN
  5.       statementN
  6.   Case Else
  7.       elsestatementN
  8. End Select
你是对的,ELSE语句旨在提供一个;“违约”;价值
我发布的代码块可能没有'pretty'但它读起来非常清晰(毫无疑问,你的意图是什么)。也就是说(从处理器的角度):"变量集。测试:测试失败。。。测试:变量重新定义
回复

使用道具 举报

68

主题

179

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
451
发表于 2020-5-27 09:09:14 | 显示全部楼层
1;我已经很久没有做VB了;Elseif在VB中不错;清理代码并执行与分解代码相同的操作;我的直觉告诉我,是这个词引起了这个问题 请参阅#1。您是否尝试过测试不同的标签而不是吊架?
回复

使用道具 举报

61

主题

792

帖子

35

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1015
发表于 2020-5-28 01:38:34 | 显示全部楼层

我同意,增加一个名字不应该破坏公式……问题已经解决了。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2024-11-22 01:37 , Processed in 0.161313 second(s), 72 queries .

© 2020-2024 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表