不想说啥's profile想说点啥的不想说啥PhotosBlogListsMore ![]() | Help |
|
想说点啥的不想说啥May 08 API函数快速入门一、在VB中声明API函数有两种方法:如果我们只在某个窗体中使用API函数,我们可以在窗体代码的General部分声明它: 声明的语法是: Private Declare Function ... Private Declare Sub..... 这里必须采用Private声明,因为这个API函数只能被一个窗体内的程序所调用。 如果我们的程序有多个窗体构成,而且我们需要在多个窗体中使用同一个API函数,就需要在模块中声明了。 先添加一个模块(如图示), 然后采用如下语法声明: Public Declare Function.... Public Declare Sub.... Public声明的含义是把API函数作为一个公共函数或过程,在一个工程中的任何位置(包括所有的窗体和模块)都能直接调用它。 声明完毕我们就能在程序中使用此API函数了。 二、可采用以下几种方式使用API函数,以SetWindowPos函数为例: (1)忽略函数返回值的调用: SetWindowPos Form1.hWnd, -2 ,0 ,0 ,0, 0, 3 注意此时函数的参数是不加括号的。 (2)Call方法调用: Call SetWindowPos(Form1.hWnd, -2, 0, 0, 0, 3) 注意这里需要加上括号,但我们不取回函数的返回值。 (3)取得函数返回值的调用: MyLng = SetWindowPos(Form1.hWnd, -2, 0, 0, 0, 3) 此时需要加上括号,而且我们必须事先定义一个变量(变量的类型与函数返回值类型相同)来存储API函数的返回值。 三、几个问题的说明: (1)声明中的Lib 和 Alias 是怎么回事 一般情况下WIN32API函数总是包含在WINDOWS系统自带的或是其它公司提供的动态连接库DLL中,而Declare语句中的Lib关键字就用来指定DLL(动态连接库)文件的路径,这样VB才能找到这个DLL文件,然后才能使用其中的API函数。如果我们只是列出DLL文件名而不指出其完整的路径的话,VB会自动到.EXE文件所在目录、当前工作目录、WINDOWS\SYSTEM目录、WINDOWS目录下搜寻这个DLL文件。所以如果所要使用DLL文件不在上述几个目录下的话,我们应该指明其完整路径。 Alias用于指定API函数的别名,如果我们调用的API函数要使用字符串(参数中包含String型)的话,Alias关键字是必须的。这是因为在ANSI和Unicode字符集中同一API函数的名称可能是不一样的,为了保证不出现声明错误,我们使用Alias关键字指出API函数的别名,一般来说在WIN9X平台下我们把API函数名后加一个大写A作为别名即可。 (2)常见的API参数类型的说明 API函数的参数中最常见的是长整Long型数据类型,例如API中的句柄、一些特定的常量、函数的返回值都是此类型 的值;另外几种常见的参数类型有:整型Integer、Byte型、String型等。 (3)声明中的ByVal是作什么用的 这跟VB的参数传递方式有关,在默认情况下VB是通过地址传递方式传递函数的参数、而有些API函数要求必须采用传值方式来传递函数参数(这两种参数传递方式是不同的,前者传递的是一个指针,而后者要求是参数真实的值)。这样就会发生错误,解决的办法是在API函数参数声明的前面加上ByVal关键字,这样VB就采用传值方式传递参数了。 (4)怎样得到完整的API函数声明 VB自带了API文本查看器API TEXT VIEWER,我们可以在其中找到API函数的完整声明,然后把它粘贴到程序中即可。 如何编写高质量的VB代码 如何通过一些技术手段来提高VB代码的执行效率。这些手段可以分为两个大的部分:编码技术和编译优化技术。在编码技术中介绍了如何通过使用高效的数据类型、减少外部引用等编程手段来提高代码执行速度,减少代码消耗的系统资源。在编译优化技术中介绍了如何正确地利用VB提供的编译选项对在编译时最后生成的可执行文件进行优化。 什么是一个高效的软件?一个高效的软件不仅应该比实现同样功能的软件运行得更快,还应该消耗更少的系统资源。这篇文章汇集了作者在使用VB进行软件开发时积累下来的一些经验,通过一些简单的例子来向你展示如何写出高效的VB代码。其中包含了一些可能对VB程序员非常有帮助的技术。在开始之前,先让我陈清几个概念。 让代码一次成型:在我接触到的程序员中,有很多人喜欢先根据功能需求把代码写出来,然后在此基础上优化代码。最后发现为了达到优化的目的,他们不得不把代码再重新写一遍。所以我建议你在编写代码之前就需要考虑优化问题。 把握好优化的结果和需要花费的工作之间的关系:通常当完成了一段代码,你需要检查和修改它。在检查代码的过程中,也许你会发现某些循环中的代码效率还可以得到进一步的改进。在这种情况下,很多追求完美的程序员也许会立马修改代码。我的建议是,如果修改这段代码会使程序的运行时间缩短一秒,你可以修改它。如果只能带来10毫秒的性能改进,则不做任何改动。这是因为重写一段代码必定会引入新的错误,而调试新的代码必定会花掉你一定的时间。程序员应该在软件性能和开发软件需要的工作量之间找一个平衡点,而且10毫秒对于用户来说也是一个不能体会到的差异。 在需要使用面向对象方法的时候尽量使用它;VB提供的机制不完全支持面向对象的设计和编码,但是VB提供了简单的类。大多数人认为使用对象将导致代码的效率降低。对于这一点我个人有些不同的意见;考察代码的效率不能纯粹从运行速度的角度出发,软件占用的资源也是需要考虑的因素之一。使用类可以帮助你在整体上提升软件的性能,这一点我会在后面的例子中详细说明。 当你编写VB代码的时候,希望你能把上面几点作为指导你编码的原则。我把文章分为两个部分:如何提高代码的运行速度和编译优化。 如何提高代码的运行速度 下面的这些方法可以帮助你提高代码的运行速度: 1. 使用整数(Integer)和长整数(Long) 提高代码运行速度最简单的方法莫过于使用正确的数据类型了。也许你不相信,但是正确地选择数据类型可以大幅度提升代码的性能。在大多数情况下,程序员可以将Single,Double和Currency类型的变量替换为Integer或Long类型的变量,因为VB处理Integer和Long的能力远远高于处理其它几种数据类型。 在大多数情况下,程序员选择使用Single或Double的原因是因为它们能够保存小数。但是小数也可以保存在Integer类型的变量中。例如程序中约定有三位小数,那么只需要将保存在Integer变量中的数值除以1000就可以得到结果。根据我的经验,使用Integer和Long替代Single,Double和Currency后,代码的运行速度可以提高将近10倍。 2. 避免使用变体 对于一个VB程序员来说,这是再明显不过的事情了。变体类型的变量需要16个字节的空间来保存数据,而一个整数(Integer)只需要2个字节。通常使用变体类型的目的是为了减少设计的工作量和代码量,也有的程序员图个省事而使用它。但是如果一个软件经过了严格设计和按照规范编码的话,完全可以避免使用变体类型。 在这里顺带提一句,对于Object对象也存在同样的问题。请看下面的代码: Dim FSO Set FSO = New Scripting.FileSystemObject 或 Dim FSO as object Set FSO = New Scripting.FileSystemObject 上面的代码由于在申明的时候没有指定数据类型,在赋值时将浪费内存和CPU时间。正确的代码应该象下面这样: Dim FSO as New FileSystemObject 3. 尽量避免使用属性 在平时的代码中,最常见的比较低效的代码就是在可以使用变量的情况下,反复使用属性(Property),尤其是在循环中。要知道存取变量的速度是存取属性的速度的20倍左右。下面这段代码是很多程序员在程序中会使用到的: Dim intCon as Integer For intCon = 0 to Ubound(SomVar()) Text1.Text = Text1.Text & vbcrlf & SomeVar(intCon) Next intCon 下面这段代码的执行速度是上面代码的20倍。 Dim intCon as Integer Dim sOutput as String For intCon = 0 to Ubound(SomeVar()) sOutput = sOutput & vbCrlf & SomeVar(intCon) Next Text1.Text = sOutput 4. 尽量使用数组,避免使用集合 除非你必须使用集合(Collection),否则你应该尽量使用数组。据测试,数组的存取速度可以达到集合的100倍。这个数字听起来有点骇人听闻,但是如果你考虑到集合是一个对象,你就会明白为什么差异会这么大。 5. 展开小的循环体 在编码的时候,有可能遇到这种情况:一个循环体只会循环2到3次,而且循环体由几行代码组成。在这种情况下,你可以把循环展开。原因是循环会占用额外的CPU时间。但是如果循环比较复杂,你就没有必要这样做了。 6. 避免使用很短的函数 和使用小的循环体相同,调用只有几行代码的函数也是不经济的--调用函数所花费的时间或许比执行函数中的代码需要更长的时间。在这种情况下,你可以把函数中的代码拷贝到原来调用函数的地方。 7. 减少对子对象的引用 在VB中,通过使用.来实现对象的引用。例如: Form1.Text1.Text 在上面的例子中,程序引用了两个对象:Form1和Text1。利用这种方法引用效率很低。但遗憾的是,没有办法可以避免它。程序员唯一可以做就是使用With或者将用另一个对象保存子对象(Text1)。 使用With With frmMain.Text1 .Text = Learn VB .Alignment = 0 .Tag = Its my life .BackColor = vbBlack .ForeColor = vbWhite End With 或者 使用另一个对象保存子对象 Dim txtTextBox as TextBox Set txtTextBox = frmMain.Text1 TxtTextBox.Text = Learn VB TxtTextBox.Alignment = 0 TxtTextBox.Tag = Its my life TxtTextBox.BackColor = vbBlack TxtTextBox.ForeColor = vbWhite 注意,上面提到的方法只适用于需要对一个对象的子对象进行操作的时候,下面这段代码是不正确的: With Text1 .Text = Learn VB .Alignment = 0 .Tag = Its my life .BackColor = vbBlack .ForeColor = vbWhite End With 很不幸的是,我们常常可以在实际的代码中发现类似于上面的代码。这样做只会使代码的执行速度更慢。原因是With块编译后会形成一个分枝,会增加了额外的处理工作。 8. 检查字符串是否为空 大多数程序员在检查字符串是否为空时会使用下面的方法: If Text1.Text = then 执行操作 End if 很不幸,进行字符串比较需要的处理量甚至比读取属性还要大。因此我建议大家使用下面的方法: If Len(Text1.Text) = 0 then 执行操作 End if 9. 去除Next关键字后的变量名 在Next关键字后加上变量名会导致代码的效率下降。我也不知道为什么会这样,只是一个经验而已。不过我想很少有程序员会这样画蛇添足,毕竟大多数程序员都是惜字如金的人。 错误的代码 For iCount = 1 to 10 执行操作 Next iCount 正确的代码 For iCount = 1 to 10 执行操作 Next 10. 使用数组,而不是多个变量 当你有多个保存类似数据的变量时,可以考虑将他们用一个数组代替。在VB中,数组是最高效的数据结构之一。 11. 使用动态数组,而不是静态数组 使用动态数组对代码的执行速度不会产生太大的影响,但是在某些情况下可以节约大量的资源。 12. 销毁对象 无论编写的是什么软件,程序员都需要考虑在用户决定终止软件运行后释放软件占用的内存空间。但遗憾的是很多程序员对这一点好像并不是很在意。正确的做法是在退出程序前需要销毁程序中使用的对象。例如: Dim FSO as New FileSystemObject 执行操作 销毁对象 Set FSO = Nothing 对于窗体,可以进行卸载: Unload frmMain 或 Set frmMain = Nothing 13. 变长和定长字符串 从技术上来说,与变长字符串相比,定长字符串需要较少的处理时间和空间。但是定长字符串的缺点在于在很多情况下,你都需要调用Trim函数以去除字符串末的空字符,这样反而会降低代码效率。所以除非是字符串的长度不会变化,否则还是使用变长字符串。 14. 使用类模块,而不是ActiveX控件 除非ActiveX控件涉及到用户界面,否则尽量使用轻量的对象,例如类。这两者之间的效率有很大差异。 15. 使用内部对象 在涉及到使用ActiveX控件和DLL的时候,很多程序员喜欢将它们编译好,然后再加入工程中。我建议你最好不要这样做,因为从VB连接到一个外部对象需要耗费大量的CPU处理能力。每当你调用方法或存取属性的时候,都会浪费大量的系统资源。如果你有ActiveX控件或DLL的源代码,将它们作为工程的私有对象。 16. 减少模块的数量 有些人喜欢将通用的函数保存在模块中,对于这一点我表示赞同。但是在一个模块中只写上二三十行代码就有些可笑了。如果你不是非常需要模块,尽量不要使用它。这样做的原因是因为只有在模块中的函数或变量被调用时,VB才将模块加载到内存中;当VB应用程序退出时,才会从内存中卸载这些模块。如果代码中只有一个模块,VB就只会进行一次加载操作,这样代码的效率就得到了提高;反之如果代码中有多个模块,VB会进行多次加载操作,代码的效率会降低。 17. 使用对象数组 当设计用户界面时,对于同样类型的控件,程序员应该尽量使用对象数组。你可以做一个实验:在窗口上添加100个PictureBox,每个PictureBox都有不同的名称,运行程序。然后创建一个新的工程,同样在窗口上添加100个PictureBox,不过这一次使用对象数组,运行程序,你可以注意到两个程序加载时间上的差别。 18. 使用Move方法 在改变对象的位置时,有些程序员喜欢使用Width,Height,Top和Left属性。例如: Image1.Width = 100 Image1.Height = 100 Image1.Top = 0 Image1.Left = 0 实际上这样做效率很低,因为程序修改了四个属性,而且每次修改之后,窗口都会被重绘。正确的做法是使用Move方法: Image1.Move 0,0,100,100 19. 减少图片的使用 图片将占用大量内存,而且处理图片也需要占用很多CPU资源。在软件中,如果可能的话,可以考虑用背景色来替代图片--当然这只是从技术人员的角度出发看这个问题。 20. 使用ActiveX DLL,而不是ActiveX控件 如果你设计的ActiveX对象不涉及到用户界面,使用ActiveX DLL。 编译优化 我所见过的很多VB程序员从来没有使用过编译选项,也没有试图搞清楚各个选项之间的差别。下面让我们来看一下各个选项的具体含义。 1. P-代码(伪代码)和本机代码 你可以选择将软件编译为P-代码或是本机代码。缺省选项是本机代码。那什么是P-代码和本机代码呢? P-代码:当在VB中执行代码时,VB首先是将代码编译为P-代码,然后再解释执行编译好的P-代码。在编译环境下,使用这种代码要比本机代码快。选择P-代码后,编译时VB将伪代码放入一个EXE文件中。 本机代码:本机代码是VB6以后才推出的选项。当编译为EXE文件后,本机代码的执行速度比P-代码快。选择本机代码后,编译时VB使用机器指令生成EXE文件。 在使用本机代码进行编译时,我发现有时候会引入一些莫名其妙的错误。在编译环境中我的代码完全正确地被执行了,但是用本机代码选项生成的EXE文件却不能正确执行。通常这种情况是在卸载窗口或弹出打印窗口时发生的。我通过在代码中加入DoEvent语句解决了这个问题。当然出现这种情况的几率非常少,也许有些VB程序员从来没有遇到过,但是它的确存在。 在本机代码中还有几个选项: a) 代码速度优化:该选项可以编译出速度较快的执行文件,但执行文件比较大。推荐使用 b) 代码大小优化:该选项可以编译出比较小的执行文件,但是以牺牲速度为代价的,不推荐使用。 c) 无优化:该选项只是将P-代码转化为本机代码,没有做任何优化。在调试代码时可以使用。 d) 针对Pentium Pro优化:虽然该项不是本机代码中的缺省选项,但是我通常会使用该选项。该选项编译出的可执行程序在Pentium Pro和Pentium 2以上的机器上可以运行得更快,而在比较老的机器上要稍稍慢一些。考虑到现在用Pentium 2都是落伍,所以推荐大家使用该选项。 e) 产生符号化调试信息:该项在编译过程中生成一些调试信息,使用户可以利用Visual C++一类的工具来调试编译好的代码。使用该选项会生成一个.pdf文件,该文件记录了可执行文件中的标志信息。当程序拥有API函数或DLL调用时,该选项还是比较有帮助的。 2. 高级优化 高级优化中的设置可以帮助你提高软件的速度,但是有时候也会引入一些错误,因此我建议大家尽量小心地使用它们。如果在代码中有比较大的循环体或者复杂的数学运算时,选中高级优化中的某些项会大幅度提升代码的性能。如果你使用了高级优化功能,我建议你严格测试编译好的文件。 a) 假定无别名:可以提高循环体中代码的执行效率,但是在如果通过变量的引用改变变量值的情况下,例如调用一个方法,变量的引用作为方法的参数,在方法中改变了变量的值的话,就会引发错误。有可能只是返回的结果错误,也有可能是导致程序中断运行的严重错误。 b) 取消数组绑定检查、取消整数溢出检查和取消浮点错误检查:在程序运行时,如果通过这些检查发现了错误,错误处理代码会处理这些错误。但是如果取消了这些检查,发生了错误程序就无法处理。只有当你确定你的代码中不会出现上面的这些错误时,你才可以使用这些选项。它们将使软件的性能得到很大的提升。 c) 允许不舍入的浮点操作:选择该选项可以是编译出来的程序更快地处理浮点操作。它唯一的缺点就是在比较两个浮点数时可能会导致不正确的结果。 一个VB过来人寄语VB初学者在学习了vb的基本知识后,就应该选定一个方向深入。windows api方面的书是肯定要看的,无论你向哪个方向发展,想要开发出强大的应用程序,都离不开api。如果对网络感兴趣,可以看看介绍stockt控件的书,再找找RFC的资料,个人感觉网络编程主要学协议。如果对数据库感兴趣,可以先从DAO学起,它可以让你对数据库基本操作有深入的了解。RDO可以跳过不学,直接从ADO开始,但这你需要比较熟练的sql语言知识。建议你可以看一本《sql编程起步》的书,人民邮电出版社出版的。它不仅介绍了sql语言,还结合了vb做为编程语言进行讲解,非常适合学习vb数据库编程。有了一定功底后,可以看看关于com方面的书,它会教会你怎样开发多线程程序,但这有点难。至于vb方面的图书,感觉上没有什么名著,不象c++有《Thanking in c++》、《The c++ program language》等名著,只有自己选择适合的。还有就是多看别人的源码,学习别人的思想。再就是多编程,从小项目开始,完成一些基本功能,再慢慢组合起来,做成大项目,这对你提高很快。 (1)VB不只是数据库和报表。不要以为VB就是数据库和报表,这只是VB强大功能的一小部份。如果这些都搞不清,还是好好的看一下相关的书籍,比在这里问问题有用多了。我以前没有学过数据库,只是有些编程的思路,后来学数据库就非常容易了。我做报表一般用RichTextBox或是From来做,一般都能做的很好,也不用去考虑什么水晶报表了。 (2)不要迷信于API。API能做很多东西,但有些东西在VB里面的函数中就有,API只是VB对WindowsSDK的封装而已。如果想学好API,建议学习SDK。如果VB本身就能很好的支持这个功能,何必还要用API呢。 (3)不要什么都想着控件。如果做程序都想着第三方控件的话,代价是很高的,不仅程序大,安全性也低了很多。其实VB本身带的控件已经完全够用了。 (4)认认真真的把MSDN中关于VB的内容好好看一看,特别是函数和语句,很有用的。 (5)遇到问题不要直接来这里问,自己好好想一想,试着解决这个问题,这虽然在时间上慢了,可是在自身的提高上却有很大的帮助。 (6)没事的时候,多研究些语言上的东西,如数据结构和算法,不要老是想着什么花哨的东西。这对以后的提高非常有帮助。 (7)如果想精通VB,在VB的基础上,学学VC还是非常的帮助的。拿VC的东西对照VB来想一想。 (8)有些很大的问题要自己动脑来想。如设计一整套软件,这是一个非常好的学习机会,不要让别人来帮你设计,只是让别人帮你提些建议。 (9)学VB要付出代价的,没有不劳而获的。 (10)祝初学者都能成功。 VB之道引子 大师为一帮初学者讲解VB之道。 初学者问道:“VB很容易学习吗?” 大师答道:“是的。” 初学者问道:“VB的结构很简单吗?” 大师答道:“是的。” 初学者又问道:“VB程序很慢吗?” 大师轻轻咳嗽了一下:“呃,今天就讲到这里吧。” 内篇 1、 大师如是说:“人如果明确自己的位置,就可以避免不必要的烦恼;变量如果明确自己的类型,就可以避免不必要的错误。” 2、 大师去参观另一个高手的程序,对每一个变量和控件都仔细地请教别人。高手的弟子们在一旁议论:“谁说大师懂得VB之道呢?” 大师回答:“我这样做本身就符合VB之道。” 3、 大师如是说:“除非必要,不要使用非 Intel 处理器;除非必要,不要使用非整型变量。” 4、 一个单机编程者向大师请教如何使程序更小和更快。 大师回答:“有一种树,在地下的部分是地上部分的三倍,庞大的树根为树吸取养料;程序也应该利用这种根系。” 单机编程者问:“那么,怎样做到呢?” 大师回答:“利用32位抢先任务处理,将程序分解到许多个ActiveX部件中;使用远程自动化,让远程处理器承担多数进程。使你的程序完全没有事情可做,这就是VB的最高境界。” 单机编程者说:“这是我无法达到的呵!” 5、 大师如是说:“永远不要进行字符串复制。” 6、 大师和弟子们去自助餐,有经验的弟子直接奔向最喜欢的餐位,一般的弟子在按照餐位的标牌行动,而没有经验的弟子则兴奋得四处乱窜。 大师说:“对于文件输入输出操作,不也是这样吗:优秀的程序员使用二进制访问,一般的程序员使用文本访问方式,蹩脚的程序员使用随机访问方式。” 7、 大师如是说:“多次使用的签名应该做成印章;多次使用的操作应该编制宏;多次使用的属性应该放入变量。” 8、 两个程序员为应该采用集合还是数组争论不已。 其中一个程序员找到大师:“集合不好吗?我可以准确地定位其中任何一个成员。” 大师回答:“你是正确的。” 另一个程序员也找到大师:“数组不好吗?我可以对其进行顺序访问。” 大师回答:“你是正确的。” 前一个程序员听说了,和另一个程序员一起来找大师:“我们俩到底谁是对的?” 大师回答:“你们是正确的。” 两个程序员对别人说:“谁说大师有学问呢?” 外篇 1、 在大师手下学习的一个新手编制了一个大型程序,兴奋地请大师看。当程序启动之后,开始进行无法想象的复杂的初始化,整个系统为之凝滞,其间没有任何提示指出正在干什么,也没有任何措施允许用户取消该过程。令人尴尬的十几分钟过去后,程序界面终于出现在屏幕上--原来是记事本程序的加强版。 大师回过头去对大家说:“这就是所谓新手呵。” 2、 大师如是说:“吸引蜜蜂的果树绽开花朵;遭到袭击的乌贼放出烟幕;正在启动的程序显示Splash屏。自然界就是这样呵。” 3、 大师和弟子们观看魔术师演出,魔术师在表演后介绍魔术的秘诀:只有将物件预先藏在手中,然后转移观众的注意力,才能达到出其不意的效果。 一个弟子对大师说:“预先载入窗体,在需要时显示,从而加快显示,不也是同样的道理吗?” 大师说:“你明白VB之道了。” 4、 一个弟子找到大师:“您刚才讲解的程序还可以更快,”他用手指着屏幕上的窗体,“只要把AutoRedraw关闭就行了。” 大师说:“比我多想到一点,也是我的老师呵。” 5、 大师如是说:“为什么不使用标签呢?它所耗费的资源极少,你可以用隐藏的标签储存文本,你可以使用DragIcon存储图标……没有比标签更好的了!” 6、 大师注意到有一个弟子在上机时还开了一个BBS窗口,当大师走近时,他敏捷地使用VB窗口将其覆盖。大师于是将弟子们召集过来:“控制窗口的重显是很重要的,”大师最小化覆盖在上面的窗口,说道,“非常重要。” 7、 大师如是说:“汽车比自行车快,我仍然要使用自行车;Linux比Windows稳定,我仍然要使用Windows;Line比Pset方便,我仍然要使用Pset。” 8、大师如是说:“Image我所欲也,Picture亦我所欲也,二者不可得兼,舍Picture而取Image者也。” 杂篇 1、 一个弟子向大师倾诉程序编译中频繁的数据类型报错,问大师:“使程序永远没有数据类型错误,可能吗?” 大师回答:“可以做到。”于是将所有变量类型设置为Variant。 弟子运行程序,高兴地发现没有一处错误,但系统很快死机。 2、 大师如是说:“龟不活动,才能长寿;人没有欲望,才能保护自己;程序不吃内存,才能避免被删除。” 3、 大师的弟子微使用Unload卸载窗体,弟子壁使用赋予Nothing值的方法卸载。 大师看到了,对其他的弟子说:“贤能呵壁!更接近VB之道了。” 4、 大师如是说:“没有用的垃圾应该扔掉,没有用的代码应该删除。” 5、 大师问弟子:“有一个机会让你们用三个字说出最想要而总是得不到的东西,你们会要求什么?” 弟子贾说:“涨工资。” 弟子倚说:“放长假。” 弟子饼说:“内存条。” 大师微笑不语。 6、 大师如是说:“使用局部变量,不亦乐乎;删除动态数组,不亦乐乎;程序不会死机,不亦乐乎。” 7、 大师给弟子们讲了一个故事:“在一个公司里,有一个汇编高手,一个网络高手,还有一个VB程序员。项目经理为了考察属下的能力,交给每个人同样的任务。汇编高手从最不起眼的输入输出开始,花费了一个月的时间,打印出了足有一百页的程序清单;网络高手穷尽所有的平台,也花费了一个月的时间,制作了五十多个版本的应用程序;轮到VB程序员了,他在屏幕上画了一个窗体、一个按钮,写道:‘按下此按钮,运行他们的程序。’” 8、 一个弟子问大师:“我什么时候可以出师?” 大师回答:“到你的程序中注释是代码的十倍的时候。” May 07 颓废的欲望街 宁静的凌晨,麻木的敲击键盘,手中的香烟微微泛光,缕缕的烟圈漂浮在空气中...... 空气中弥漫着麻木和寂寞,围绕着我,令我窒息。 又是一个不眠之夜,已经一个星期了,我想我快要崩溃了...... 其实今天晚上没有什么灵感,但就是想写点什么,或许只是想发泄心中的烦躁不安。本来就寂寞无语歇斯底里的我变得越加的莫名其妙。 这样的夜里,没有车水马龙,没有繁华喧闹,似乎整个世界都平静了下来,浮躁仿佛不属于这里! 喜欢一个人呆着,思考让我变得睿智! 猛吸一口烟,两种神经刺激物开始在体内作祟,依然精神抖擞,身体却力不从心! 被爱的感觉是什么样的呢?幸福吗?好想知道! 重新点燃一只烟,看着窗外...... 明天是不是又是雨天呢?我喜欢下雨,它总是让我回想起从前! 伤心的男人总喜欢沉浸在香烟和啤酒的麻醉下。也许是因为醉了以后可以在脑海中留出一片空白,好休息休息。香烟?或许只是想提起精神再多喝几瓶吧! 人间的真理总是矛盾的,不同的人悟出不同的矛盾,但是却不足以推翻它,因为它确实是真理。真理总是上帝创造的,所以我总觉得不应该相信上帝。 幸福?幸福的定义是什么呢?满足就是幸福吗!?人却都是不知足的,但却不失幸福!开心就是幸福吗!?但有的时候开心有的时候不开心,开心的人说她不幸福,不开心的人却说我很幸福。总是什么人都有的,幸福到底是什么!?在我还没有完全理解的它是什么的时候,我却已经失去了它! 能不能给我个机会找回我失掉的幸福...... |
|
|||
|
|