一个简单的VB算行器
后台程序
Imports Microsoft.VisualBasic


Public Class Form1
    
Private totalLines As Integer = 0
    
Private codeLines As Integer = 0
    
Private remLines As Integer = 0
    
Private emptyLines As Integer = 0

    
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        
Me.OpenFileDialog1.ShowDialog()
        
Me.TextBox1.Text = Me.OpenFileDialog1.FileName
    
End Sub

    
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        
Dim fs As System.IO.StreamReader
        
Try
            fs 
= New System.IO.StreamReader(Me.TextBox1.Text, System.Text.Encoding.ASCII)
        
Catch ex As Exception
            MessageBox.Show(
"请输入正确的文件名")
            
Exit Sub
        
End Try

        
Dim str As String = String.Empty
        
str = fs.ReadToEnd()
        LineCount(
str)
        fs.Close()
    
End Sub
    
Private Sub LineCount(ByVal str As String)
        totalLines 
= 0
        codeLines 
= 0
        remLines 
= 0
        emptyLines 
= 0

        
If CutEnd(str + vbCrLf) = True Then

            
Me.Label2.Text = totalLines
            
Me.Label6.Text = codeLines
            
Me.Label8.Text = remLines
            
Me.Label11.Text = emptyLines
        
End If

    
End Sub

    
Private Function CutEnd(ByVal str As StringAs Boolean

        
Dim tempStr As String = String.Empty
        
For i As Integer = 0 To str.Length - 1

            
If str.Chars(i) = Chr(13Then
                tempStr 
= Strings.Left(str, i + 1)
                totalLines 
+= 1
                
'  ',# 开头是注释
                If Strings.Left(Strings.Trim(tempStr), 1= "'" Or Strings.Left(Strings.Trim(tempStr), 1= "#" Then
                    remLines 
+= 1
                
ElseIf Trim(Strings.Left(tempStr, tempStr.Length - 1)) = String.Empty _
                       
Or Strings.Right(Trim(Strings.Left(tempStr, tempStr.Length - 1)), 2= " _" Then
                    
' 空行 ,换行也算空行
                    emptyLines += 1
                
Else
                    
'其他是代码行
                    codeLines += 1
                
End If
                CutEnd(Strings.Right(
strstr.Length - tempStr.Length - 1)) : Exit For

            
End If
        
Next
        
Return True

    
End Function

    
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    
End Sub
End Class

设计程序
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial 
Class Form1
    
Inherits System.Windows.Forms.Form

    
'Form 重写 Dispose,以清理组件列表。
    <System.Diagnostics.DebuggerNonUserCode()> _
    
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
        
If disposing AndAlso components IsNot Nothing Then
            components.Dispose()
        
End If
        
MyBase.Dispose(disposing)
    
End Sub

    
'Windows 窗体设计器所必需的
    Private components As System.ComponentModel.IContainer

    
'注意: 以下过程是 Windows 窗体设计器所必需的
    '可以使用 Windows 窗体设计器修改它。
    '不要使用代码编辑器修改它。
    <System.Diagnostics.DebuggerStepThrough()> _
    
Private Sub InitializeComponent()
        
Me.OpenFileDialog1 = New System.Windows.Forms.OpenFileDialog
        
Me.Button1 = New System.Windows.Forms.Button
        
Me.Label1 = New System.Windows.Forms.Label
        
Me.Label2 = New System.Windows.Forms.Label
        
Me.TextBox1 = New System.Windows.Forms.TextBox
        
Me.Label3 = New System.Windows.Forms.Label
        
Me.Label4 = New System.Windows.Forms.Label
        
Me.Button2 = New System.Windows.Forms.Button
        
Me.Label5 = New System.Windows.Forms.Label
        
Me.Label6 = New System.Windows.Forms.Label
        
Me.Label7 = New System.Windows.Forms.Label
        
Me.Label8 = New System.Windows.Forms.Label
        
Me.Label9 = New System.Windows.Forms.Label
        
Me.Label11 = New System.Windows.Forms.Label
        
Me.SuspendLayout()
        
'
        'OpenFileDialog1
        '
        Me.OpenFileDialog1.FileName = "OpenFileDialog1"
        
Me.OpenFileDialog1.Filter = "VB 文件|*.vb"
        
Me.OpenFileDialog1.Title = "请选择文件"
        
'
        'Button1
        '
        Me.Button1.Location = New System.Drawing.Point(20864)
        
Me.Button1.Name = "Button1"
        
Me.Button1.Size = New System.Drawing.Size(3921)
        
Me.Button1.TabIndex = 1
        
Me.Button1.Text = "浏览"
        
Me.Button1.UseVisualStyleBackColor = True
        
'
        'Label1
        '
        Me.Label1.AutoSize = True
        
Me.Label1.Location = New System.Drawing.Point(85170)
        
Me.Label1.Name = "Label1"
        
Me.Label1.Size = New System.Drawing.Size(2912)
        
Me.Label1.TabIndex = 2
        
Me.Label1.Text = "总行"
        
'
        'Label2
        '
        Me.Label2.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D
        
Me.Label2.Location = New System.Drawing.Point(147170)
        
Me.Label2.Name = "Label2"
        
Me.Label2.Size = New System.Drawing.Size(10012)
        
Me.Label2.TabIndex = 3
        
Me.Label2.Text = "Label2"
        
'
        'TextBox1
        '
        Me.TextBox1.Location = New System.Drawing.Point(8764)
        
Me.TextBox1.Name = "TextBox1"
        
Me.TextBox1.Size = New System.Drawing.Size(10021)
        
Me.TextBox1.TabIndex = 4
        
'
        'Label3
        '
        Me.Label3.AutoSize = True
        
Me.Label3.Location = New System.Drawing.Point(8746)
        
Me.Label3.Name = "Label3"
        
Me.Label3.Size = New System.Drawing.Size(012)
        
Me.Label3.TabIndex = 5
        
'
        'Label4
        '
        Me.Label4.AutoSize = True
        
Me.Label4.Location = New System.Drawing.Point(8534)
        
Me.Label4.Name = "Label4"
        
Me.Label4.Size = New System.Drawing.Size(2912)
        
Me.Label4.TabIndex = 6
        
Me.Label4.Text = "路径"
        
'
        'Button2
        '
        Me.Button2.Location = New System.Drawing.Point(87286)
        
Me.Button2.Name = "Button2"
        
Me.Button2.Size = New System.Drawing.Size(14319)
        
Me.Button2.TabIndex = 1
        
Me.Button2.Text = "计算"
        
Me.Button2.UseVisualStyleBackColor = True
        
'
        'Label5
        '
        Me.Label5.AutoSize = True
        
Me.Label5.Location = New System.Drawing.Point(85198)
        
Me.Label5.Name = "Label5"
        
Me.Label5.Size = New System.Drawing.Size(4112)
        
Me.Label5.TabIndex = 2
        
Me.Label5.Text = "代码行"
        
'
        'Label6
        '
        Me.Label6.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D
        
Me.Label6.Location = New System.Drawing.Point(147197)
        
Me.Label6.Name = "Label6"
        
Me.Label6.Size = New System.Drawing.Size(10012)
        
Me.Label6.TabIndex = 3
        
Me.Label6.Text = "Label2"
        
'
        'Label7
        '
        Me.Label7.AutoSize = True
        
Me.Label7.Location = New System.Drawing.Point(85225)
        
Me.Label7.Name = "Label7"
        
Me.Label7.Size = New System.Drawing.Size(4112)
        
Me.Label7.TabIndex = 2
        
Me.Label7.Text = "注释行"
        
'
        'Label8
        '
        Me.Label8.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D
        
Me.Label8.Location = New System.Drawing.Point(147224)
        
Me.Label8.Name = "Label8"
        
Me.Label8.Size = New System.Drawing.Size(10012)
        
Me.Label8.TabIndex = 3
        
Me.Label8.Text = "Label2"
        
'
        'Label9
        '
        Me.Label9.AutoSize = True
        
Me.Label9.Location = New System.Drawing.Point(85258)
        
Me.Label9.Name = "Label9"
        
Me.Label9.Size = New System.Drawing.Size(2912)
        
Me.Label9.TabIndex = 2
        
Me.Label9.Text = "空行"
        
'
        'Label11
        '
        Me.Label11.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D
        
Me.Label11.Location = New System.Drawing.Point(147259)
        
Me.Label11.Name = "Label11"
        
Me.Label11.Size = New System.Drawing.Size(10012)
        
Me.Label11.TabIndex = 3
        
Me.Label11.Text = "Label2"
        
'
        'Form1
        '
        Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 12.0!)
        
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
        
Me.ClientSize = New System.Drawing.Size(369347)
        
Me.Controls.Add(Me.Label4)
        
Me.Controls.Add(Me.Label3)
        
Me.Controls.Add(Me.TextBox1)
        
Me.Controls.Add(Me.Label11)
        
Me.Controls.Add(Me.Label8)
        
Me.Controls.Add(Me.Label6)
        
Me.Controls.Add(Me.Label2)
        
Me.Controls.Add(Me.Label9)
        
Me.Controls.Add(Me.Label7)
        
Me.Controls.Add(Me.Label5)
        
Me.Controls.Add(Me.Label1)
        
Me.Controls.Add(Me.Button2)
        
Me.Controls.Add(Me.Button1)
        
Me.Name = "Form1"
        
Me.Text = "Form1"
        
Me.ResumeLayout(False)
        
Me.PerformLayout()

    
End Sub
    
Friend WithEvents OpenFileDialog1 As System.Windows.Forms.OpenFileDialog
    
Friend WithEvents Button1 As System.Windows.Forms.Button
    
Friend WithEvents Label1 As System.Windows.Forms.Label
    
Friend WithEvents Label2 As System.Windows.Forms.Label
    
Friend WithEvents TextBox1 As System.Windows.Forms.TextBox
    
Friend WithEvents Label3 As System.Windows.Forms.Label
    
Friend WithEvents Label4 As System.Windows.Forms.Label
    
Friend WithEvents Button2 As System.Windows.Forms.Button
    
Friend WithEvents Label5 As System.Windows.Forms.Label
    
Friend WithEvents Label6 As System.Windows.Forms.Label
    
Friend WithEvents Label7 As System.Windows.Forms.Label
    
Friend WithEvents Label8 As System.Windows.Forms.Label
    
Friend WithEvents Label9 As System.Windows.Forms.Label
    
Friend WithEvents Label11 As System.Windows.Forms.Label

End Class
由于折叠了后和标了行号后,复制会多出东西来,所以......
目前只用于VB,准备开发一个多种语言的,并支持自定义语言和计算模板的,大的东西没时间做,这种小东东还是能搞滴.
posted on 2007-04-06 02:14  目标年薪三千万  阅读(309)  评论(0编辑  收藏  举报