过程和函数是否可以这样理解:
    首先:二者都必须先定义,后说明.
    其次:函数有返值,而过程没有.
    再次:以下我理解得对否?
         1.工程中定义的变量是全局变量,任何单元中都可以调用.
         2.单元中定义的变量是局部变量,只对本单元有效.
         3.过程和函数中定义的变量也是局部变量,只在过程和函数有效.
         4.问题:
           A.过程和函数可以在TYPE或VAR中去定义,二者有何区别,这一点对书上说的"XXX过程是属性TFORM1对象的一部分,所以过程的标头必须放在TFORM1对象的类型定义中,而且过程的主体也必须加上TFORM1.的限定词",不理解.
          B.可不去单独写一个单元,里而写上所要用到的过程和函数,要用到过程和函数的单元去调用该单元中的过程和函数,能提供简单的范例参考吗?

解决方案 »

  1.   

    2 不正确!
    B 可以! 在pbulic中定义!
      

  2.   

    A.过程和函数可以在TYPE或VAR中去定义   是这样吗?
    应该说是在这里可以用过程和函数来定义类型或变量!
      

  3.   

    单元中在implimentationa部分定义的成员才只在本单元能被引用,其他单元不能引用,在interface部分定义的成员是可以被其他单元引用的。
    type部分是类型定义,var部分是变量定义,你说的都不对。
    可以实现单独编写一个单元,里面是所要用到的函数和过程,但要在这个单元的interface部分声明这些函数和过程,如果在interface部分不出现是不行的。
      

  4.   

    二者都必须先定义,后说明.
      是否改为
         二者都必须先申明,后定义
      比较好?
    1.工程中定义的变量是全局变量,任何单元中都可以调用.
       现在不看语法,忘记了,但感觉不完全是这样。如在工程中定义的局部变量,在其他单元也可以随意使用吗? 这怎样体现模块化的?
     
    2.单元中定义的变量是局部变量,只对本单元有效.
      单元implementation 处定义的才只对本单元有效
      interface部分定义的,对所有引用该单元的单元有效
    A.过程和函数可以在TYPE或VAR中去定义
       函数和过程怎么能在TYPE或VAR中去定义,在Type中定义的是函数/过程类型,而不是函数,VAR部分定义的是变量,也不是函数或过程。
       好比是Type中定义的是类;Var中的是指针。而函数和过程才是真正的对象。
    B.可以
      

  5.   

    >>试着根据我的经验回答一下: 
    【为了区分,楼主原文用“//”表示,我的回答用“>>”表示】//过程和函数是否可以这样理解:  //首先:二者都必须先定义,后说明.
      >>应该是先定义,后实现。在Object Pascal的单元文件的结构中,过程和函数的定义都是写在Interface部分,而实现都是写在implementation部分中。    //其次:函数有返值,而过程没有.
        >>严格的说,是Object Pascal语言在定义上,定义了“函数”有返回值,而定义了“过程”没有,这构成了两者的区别。为什么这么说呢?因为过程本身在使用的时候,也可以有返回值。比如,当你在过程的参数中使用了var或者out的定义的时候。(用 var 定义的参数,传递进去的是一个可以改变的值,其实是一个地址;用 out 定义的参数,是为了在过程结束的时候传递出一个值。)    //再次:以下我理解得对否?         //1.工程中定义的变量是全局变量,任何单元中都可以调用.
             >>工程单元默认被项目里面的所有其他单元引用,所以,在它里面定义的变量,就自然可以在其他任何单元中调用,所以是全局的。         //2.单元中定义的变量是局部变量,只对本单元有效.
             >>在单元文件的结构上,Interface部分是对外公开可见的,implementation部分是被本单元文件内使用的。所以应该说,单元中,在implementation部分定义的变量是局部变量;而在Interface部分定义的变量,对于引用了该单元的其他单元文件,是可见的,因而是全局的。         //3.过程和函数中定义的变量也是局部变量,只在过程和函数有效.
             >>这是变量的生存期的问题。一般性的过程和函数内部定义的变量,都是局部变量,过程或函数执行完毕,变量的生存期就随之结束;但是,如果该过程或者变量被声明为静态的,那么该过程或函数所创建的变量的生存期就是整个程序的运行时间,它只会随程序运行的结束而释放。(也就是说,即使该过程或函数执行完毕,该变量仍旧存在在内存中,可以被该过程或者函数再次执行时继续调用)         //4.问题:           //A.过程和函数可以在TYPE或VAR中去定义,二者有何区别,这一点对书上说的"XXX过程是属性TFORM1对象的一部分,所以过程的标头必须放在TFORM1对象的类型定义中,而且过程的主体也必须加上TFORM1.的限定词",不理解.
               >>过程和函数应该不可以用var去定义,只能用Type,因为var定义的是变量,同时分配给该变量内存,而过程或函数的定义不是一个变量;
               >>你在后面引用的一段话,其实是面向对象概念中,类的概念。“TFORM1对象”是类TForm1的一个实例;“XXX过程”如果放在类TForm1中,那么它就是类TForm1的一个方法;而类的方法在其实现部分,需要加上类的标识;在引用部分,则需要加上对实例的引用,就是所谓的“TFORM1.”。(汗...好像有点绕口,这涉及到对面向对象概念的理解,建议楼主去找找相关的书看看。)          //B.可不去单独写一个单元,里而写上所要用到的过程和函数,要用到过程和函数的单元去调用该单元中的过程和函数,能提供简单的范例参考吗?
              >>可以的。把需要用到的过程和函数集中放在一个单元,然后在需要使用它们的单元里面,引用该单元,就可以使用它们了。实际上,这是把那些过程和函数,都变成了全局的。