Hi Leute,
ich bin gerade dabei, einen Codeparser zu programmieren. Dieser soll mir am Ende alle Funktionen, Klassen und Regionen einer C#-Klassendatei ausgeben, aber ich wollte ihn schon in VB programmieren.
Nun stehe ich vor dem Problem, dass ich eine eigene Funktion implementiert habe, die mir die Vorkommen von Zeichenketten in einem String zurückgeben soll.
Nun wollte ich die Funktionen in der Datei zählen. Funktionen in C# werden meines Wissens ja (ähnlich wie in Java) nur über einen Rückgabe-Datentyp, eventuell eine Reichweite (public, protected, private) und eine öffnende Klammer, der die Parameter folgen in einer Zeile definiert. Nun habe ich aber anscheinend das Problem (ich weiß nicht genau, ob es wirklich daran liegt), dass wenn ich mehrere Datentypen in der Zeile stehen habe, wegen den Parametern, der Funktionszähler um mehr als 1 hochgezählt wird:
Habt ihr eine Idee, wie ich das einfacher lösen könnte? Vielen Dank schonmal!
ich bin gerade dabei, einen Codeparser zu programmieren. Dieser soll mir am Ende alle Funktionen, Klassen und Regionen einer C#-Klassendatei ausgeben, aber ich wollte ihn schon in VB programmieren.
Nun stehe ich vor dem Problem, dass ich eine eigene Funktion implementiert habe, die mir die Vorkommen von Zeichenketten in einem String zurückgeben soll.
VB.NET-Quellcode
- Function StringCountOccurrences(ByVal strText As String, ByVal strFind As String) As Long
- ' Counts occurrences of a particular character or characters
- Dim Occurrences As Integer
- Dim Start As Integer
- Dim Found As Integer
- Do
- Start = Found + 1
- Found = InStr(Start, strText, strFind)
- If Found = 0 Then Exit Do
- Occurrences += 1
- Loop
- StringCountOccurrences = Occurrences
- End Function
- Function SCO(ByVal strText As String, ByVal strFind As String) As Long
- SCO = StringCountOccurrences(strText, strFind)
- End Function
Nun wollte ich die Funktionen in der Datei zählen. Funktionen in C# werden meines Wissens ja (ähnlich wie in Java) nur über einen Rückgabe-Datentyp, eventuell eine Reichweite (public, protected, private) und eine öffnende Klammer, der die Parameter folgen in einer Zeile definiert. Nun habe ich aber anscheinend das Problem (ich weiß nicht genau, ob es wirklich daran liegt), dass wenn ich mehrere Datentypen in der Zeile stehen habe, wegen den Parametern, der Funktionszähler um mehr als 1 hochgezählt wird:
VB.NET-Quellcode
- ' loop through lines
- For Each line As String In lines
- If (SCO(line, "///") <> 1 And SCO(line, "//") <> 1) Then
- ' includes
- includes += CInt(SCO(line, "using"))
- ' classes
- classes += CInt(SCO(line, "class"))
- ' regions
- regions += CInt(SCO(line, "#region"))
- ' functions ' BIG PROBLEM ! ! !
- For Each keyword As String In func_keywords
- If (SCO(line, "(") = 1 And SCO(line, keyword) = 1) Then
- functions += 1 ' PROBLEM
- End If
- Next
- Else
- linecount = linecount - 1
- End If
- Next
Habt ihr eine Idee, wie ich das einfacher lösen könnte? Vielen Dank schonmal!