|

楼主 |
发表于 2009-12-4 18:46:14
|
显示全部楼层
改进二
本帖最后由 VBProFan 于 2009-12-5 23:44 编辑
- '翻译函数定义,假设第二行是函数定义
- p = InStr(1, sFuncDefLine, "(")
- sWord = Split(Left$(sFuncDefLine, p))
-
- For p = 0 To UBound(sWord) - 1
- If sWord(p) <> sKeyWords(0) And sWord(p) <> sKeyWords(1) Then
- sFuncType = sWord(p)
- sFuncType = Replace(sFuncType, "int", "Long")
- sFuncType = Replace(sFuncType, "bool", "Boolean")
- Exit For
- End If
- Next p
-
- i = InStr(sFuncDefLine, "(")
- j = InStr(sFuncDefLine, ")")
- sFuncDefLine = Mid$(sFuncDefLine, i + 1, j - i - 1)
- sVar = Split(sFuncDefLine, ",")
-
- sFuncDefLine = "Private " & IIf(sFuncType = "void", "Sub ", "Function ") _
- & sFuncName & "("
-
- For p = 0 To UBound(sVar)
- sVar(p) = Trim$(sVar(p))
- sVar(p) = Split(sVar(p))(1) & " As " & Split(sVar(p))(0)
- sVar(p) = Replace(sVar(p), "int", "Long")
- sFuncDefLine = sFuncDefLine & sVar(p)
- If p < UBound(sVar) Then
- sFuncDefLine = sFuncDefLine & ", "
- End If
- Next p
-
- sFuncDefLine = sFuncDefLine & ")" & IIf(sFuncType = "void", "", " As " & sFuncType)
- i = InStr(1, s, vbCrLf)
- j = InStr(i + 1, s, vbCrLf)
- s = Left$(s, i + 1) & sFuncDefLine & vbCrLf & Right$(s, Len(s) - j)
-
- s = Replace(s, "}", "End " & IIf(sFuncType = "void", "Sub", "Function"))
复制代码 |
|