如何统计程序的行数
?牐牪还孟馰B、Delphi、VC等这些语言中都没有提供让我们统计程序行数的功能。怎么办呢?不用急,身为程序员,当然用编程来实现了。现在,就跟我来用VB实现统计程序行数的功能(用其他语言实现的原理是一样的)。
?牐牬蠹叶贾腊桑琕B的源代码(窗体代码、模块代码等)都是以文本形式保存的。窗体代码放在扩展名为“.frm”的文件里,模块代码放在扩展名为“.bas”的文件里,类模块代码放在扩展名为“.cls”的文件里。既然是文本文件,统计行数就是很容易的事了。很多朋友肯定想到了用判断文件中有多少回车符的方法来实现。我一开始也是马上就想到这里,不过,实际上有更好的方法啦——用Line Input语句!下面就来具体讲一讲在VB中实现此功能的算法思想及源代码。
#1?牐犓惴ㄋ枷耄?
?牐牪檎胰砑杓颇柯枷碌乃欣┱姑猣rm、bas、cls的文件,一旦找到就打开它并获得其行数。
#1?牐犜闯绦颍?
?牐犘陆ㄒ桓龃疤澹?可以不放任何控件),在窗体的Mouse_Click事件中放入下列代码(为什么要放在Mouse_Click事件里而不放在Load事件里,看完下面的源程序后你就明白了):
?牐燨ption Explicit
?牐燩ublic Sub Form_Click()?煟?
?牐燚im strAppPath As String '程序运行时的路径
?牐燚im lngFileLines As Long '文件行数
?牐燚im lngTotalLines As Long '总行数
?牐燚im blnBeginCount As Boolean '是否开始统计行数
?牐燚im strTemp As String '临时变量
?牐燤e.Cls '清除上一次运行时窗体生成的图形和文本
?牐牐Щ袢〕绦蛟诵惺钡穆肪?
?牐爏trAppPath = App.path
?牐營f Right(strAppPath,1) <> “\” Then strAppPath = strAppPath & “\”
?牐燚im fs,fd,f '文件系统变量,具体说明请查阅MSDN相关章节
?牐牐Ч赜贑reateObject函数和FileSystemObject对象的具体说明请查阅MSDN相关章节
?牐燬et fs = CreateObject(“Scripting.FileSystemObject”)??
?牐燬et fd = fs.GetFolder(strAppPath)??
?牐燜or Each f In fd.Files
?牐爏trTemp = Right(UCase(f.Name), 3)'比较文件名时,必须将f.Name的内容转换成大写,否则会被视为不相同文件
?牐營f strTemp = “FRM” Or strTemp = “BAS” Or strTemp = “CLS” Then
?牐牐д饫镏煌臣屏巳治募男惺?
?牐燨pen strAppPath & f.Name For Input As #1 '打开文件
?牐燽lnBeginCount = False '一定要设初值
?牐爈ngFileLines = 0 '同上
?牐燚o While Not EOF(1)??
?牐燣ine Input #1,strTemp '使用Line Input语句的目的就是为了一行行的读数据
?牐營f Left(strTemp,15) = “Option Explicit” Then blnBeginCount = True
?牐營f blnBeginCount = True Then lngFileLines = lngFileLines + 1
?牐牐д饫镒稣饬礁雠卸系脑蚴俏募杏泻芏啻胧荲B自动完成的(用记事本打开就知道了),我们自己写的代码一般是从“Option Explicit”开始
?牐燣oop
?牐燙lose #1
?牐爈ngTotalLines = lngTotalLines + lngFileLines
?牐燩rint f.Name & “的代码行数:” & lngFileLines
?牐牐б蛭褂玫氖荘rint语句,所以这些代码不能放在窗体的Load事件中
?牐燛nd If
?牐燦ext
?牐燩rint “总代码行数:” & lngTotalLines
?牐牐б蛭褂玫氖荘rint语句,所以这些代码不能放在窗体的Load事件中
?牐燛nd Sub
?牐犚陨铣绦蛟赪indows Me+VB6调试通过,所附^30020501a^片为我用本程序统计时的截图。