条件编译的意思,我想,是不是指可以由VB6自动改变这个参数,或者在编译的时候从工程属性对话框的“条件编译参数”框中填写fDebug = 0之类的参数?
我总觉得不应该是手动在代码里面赋值啊。
换句话说,我不知道,在编译的时候,工程属性对话框的“条件编译参数”框到底有什么用?

解决方案 »

  1.   

    用来定义 Visual Basic 的条件编译常数。语法#Const constname = expression#Const 编译指令的语法具有以下几个部分:部分 描述
    constname 必要;Variant (String)。常数;名称要遵守变量命名的约定。
    expression 必要。文字、其他的条件编译常数或包含除了 Is 以外的算术或逻辑运算符的任意组合。
    说明条件编译常数在其出现的模块中总是 Private。不可能利用 #Const 指令建立 Public 编译常数。Public 编译常数只能在用户接口中建立。在 expression 中只能使用编译常数及文字。使用一个用 Const 定义的标准常数,或者使用一个未定义的常数,都会导致错误发生。反之,用 #Const 关键字定义的常数也只能用于条件编译。不管条件编译常数在程序中的位置如何,都总是在模块级别中进行计算。===================================================
    本示例使用 #Const 伪指令声明条件式编译器常数,以便在 #If...#Else...#End If 构造中使用。#Const DebugVersion = 1 ' DebugVersion 常数在 #If 块中计为 TRUE 。
      

  2.   

    系统编译时根据条件编译参数中的值去编译和连接文件,如果在工程参数中设置为
        pbDebug = False代码中有段程序:
      On error goto pE:
         .....
      pE:
       #if pbDebug =True Then
          stop
          resume    '返回出错点
       #Else
          msgbox "程序运行时出错"
       #endif则系统将此段代码等同于:
     On error goto pE:
         .....
      pE:
         msgbox "程序运行时出错"
      

  3.   

    先表示感谢!
    两位朋友:我的全部代码如下:
    Option Explicit
    #Const fDebug = True
    Sub TestDebug()
        #If fDebug Then
          MsgBox "Code to run during 编译之前!"
        #Else
          MsgBox "Code to run during 编译之后!"
        #End If
    End SubPrivate Sub Command1_Click()
        TestDebug
    End Sub我实验的结果是:直接运行的时候,提示"Code to run during 编译之前!"
    如果编译执行,不管在工程属性对话框的“条件编译参数”框中填写fDebug = 0还是fDebug = 1还是fDebug = -1,结果都还是"Code to run during 编译之前!"呀?!
    两位,请用我的代码实际测试一下好吗?我真的不懂了……非常感谢!
      

  4.   

    唉!
    你误解了一个关系!
    用了#Const fDebug = True后就不用在工程属性对话框的“条件编译参数”中指定值了(指定了也没用),明白吗?这时想要改变编译条件就直接在源代码上把#Const fDebug = True改成Flase。
    就象你说的:"如果编译执行,不管在工程属性对话框的“条件编译参数”框中填写fDebug = 0还是fDebug = 1还是fDebug = -1,结果都还是"Code to run during 编译之前!"呀?!"
    这是因为编译器在编译时看到#Const fDebug = True就会把FDebug置为True,不管你原来在工程属性对话框的“条件编译参数”框中把fDebug置为几,就是说代码中的#Const fDebug = True的优先级大于“条件编译参数”!
    如果你想用工程属性对话框的“条件编译参数”来指定编译条件就不要写#Const fDebug = True,这样就可以用工程属性对话框的“条件编译参数”来指定编译条件了。你把你那段代码的#Const fDebug = True去掉就一切OK!还有,根据你代码的意思,你好像还误解了一个关系!
    直接运行或编译成exe运行,都 算 编 译!!!就是说你指定的“条件编译参数”在VB环境中直接运行也有效!所以用你的代码(也可以说用条件编译参数的方式)是无法区分出是在VB环境中还是在exe中的!应该明白了吧?