Quantcast
Channel: VBForums - Visual Basic .NET
Viewing all articles
Browse latest Browse all 27329

[VB2010] - i need some advices for my convert sub

$
0
0
Code:

Public Sub ConvertCode(ByVal Destination As RichTextBox, ByVal source As RichTextBox2)
        Dim lngLineCount As Long
        Dim lngLinePos As Long
        Dim strLineText As String
        Dim strLineTextTemp As String

        Dim wrdWords() As String

        Dim blnMain As Boolean
        Dim strFunctionName As String
        Dim strHeaderPart As String
        Dim strHeaderFunction As String
        Dim strLastTart As String
        Dim lngDestinationHeaderLen As Long
        Dim lngDestinationHeaderPos As Long
        Dim lngDestinationActualPos As Long

        If source.Text = "" Then Exit Sub
        Destination.Text = ""
        Destination.SelectedText = "#include <conio.h>" & vbNewLine
        Destination.SelectedText = "#include <stdio.h>" & vbNewLine
        Destination.SelectedText = "#include <string.h>" & vbNewLine
        Destination.SelectedText = "#include <iostream>" & vbNewLine
        Destination.SelectedText = "#include <windows.h>" & vbNewLine
        Destination.SelectedText = "using namespace std;" & vbNewLine

        lngDestinationHeaderLen = Len(Destination.Text)

        lngLineCount = source.Lines.Length  'diz-me o numero de linhas

        strFunctionName = ""
        For lngLinePos = 0 To lngLineCount - 1

            strLineText = source.Lines(lngLinePos)  'da-me o texto de 1 linha

            If strLineText = "" Then Continue For
            wrdWords = ExtendedSplit(strLineText) 'the ExtendedSplit() is for subivide the sentence to words
            source.TextPos = New Point(0, lngLinePos)
            Destination.SelectionIndent = source.SelectionIndent
            Debug.WriteLine(wrdWords(0))
            If wrdWords(0) = "End" Then

                If blnMain = True And source.SelectionIndent = 0 Then
                    Destination.SelectionIndent += source.SelectionTabConst
                    Destination.SelectedText = "return 0;" & vbNewLine
                    blnMain = False
                End If

                Destination.SelectionIndent = source.SelectionIndent
                Destination.SelectedText = "}"
                If lngLinePos < (lngLineCount - 1) Then Destination.SelectedText = vbNewLine
                strFunctionName = ""

            ElseIf wrdWords(0) = "If" Then
                Dim a As Boolean
                If wrdWords(wrdWords.Length - 1) = "Then" Then a = True
                strLineTextTemp = Replace(strLineText, "=", "==")
                strLineTextTemp = Replace(strLineTextTemp, "If", "if ( ")
                strLineTextTemp = Replace(strLineTextTemp, "Then", " )" & "{")
                If a = True Then
                    Destination.SelectedText = strLineTextTemp & vbNewLine
                Else
                    Destination.SelectedText = strLineTextTemp & "}" & vbNewLine
                End If
            ElseIf wrdWords(0) = "ElseIf" Then
                Dim a As Boolean
                If wrdWords(wrdWords.Length - 1) = "Then" Then a = True
                strLineTextTemp = Replace(strLineText, "=", "==")
                strLineTextTemp = Replace(strLineTextTemp, "ElseIf", "else if ( ")
                strLineTextTemp = Replace(strLineTextTemp, "Then", " )" & "{")
                If a = True Then
                    Destination.SelectedText = strLineTextTemp & vbNewLine
                Else
                    Destination.SelectedText = strLineTextTemp & "}" & vbNewLine
                End If
            ElseIf wrdWords(0) = "Else" Then
                Destination.SelectedText = strLineText & "{" & vbNewLine
            ElseIf wrdWords.Length > 2 AndAlso wrdWords(1) = "=" Then
                If wrdWords(0) = strFunctionName Then
                    strLineTextTemp = Replace(strLineText, strFunctionName, "return ")
                    strLineTextTemp = Replace(strLineTextTemp, "=", " ")
                Else
                    strLineTextTemp = strLineText
                End If
                Destination.SelectedText = strLineTextTemp & ";" & vbNewLine
            ElseIf wrdWords(0) = "Write" = True Then
                strLineTextTemp = Replace(strLineText, "Write", "cout << ")
                strLineTextTemp = Replace(strLineTextTemp, "//", "; //")
                strLineTextTemp = Replace(strLineTextTemp, "+", " << ")
                strLineTextTemp = Replace(strLineTextTemp, "(", "")
                strLineTextTemp = Replace(strLineTextTemp, ")", "")
                strLineTextTemp = Replace(strLineTextTemp, """""", "\""")
                strLineTextTemp = Replace(strLineTextTemp, "&", " << ")
                strLineTextTemp = Replace(strLineTextTemp, "é", """ << (char) 130 << """)
                strLineTextTemp = Replace(strLineTextTemp, "è", """ << (char) 138 << """)
                strLineTextTemp = Replace(strLineTextTemp, "à", """ << (char) 133 << """)
                strLineTextTemp = Replace(strLineTextTemp, "á", """ << (char) 160 << """)
                strLineTextTemp = Replace(strLineTextTemp, "NewLine", " endl; ")
                Destination.SelectedText = strLineTextTemp & ";" & vbNewLine
            ElseIf wrdWords(0) = "Integer" Then
                strLineTextTemp = strLineText
                strLineTextTemp = Replace(strLineTextTemp, "Integer", "int")
                strLineTextTemp = Replace(strLineTextTemp, "//", "; //")
                If wrdWords.Length > 2 AndAlso wrdWords(2) = "=" Then
                    Destination.SelectedText = strLineTextTemp & ";" & vbNewLine
                ElseIf wrdWords.Length > 2 AndAlso wrdWords(2) = "(" AndAlso IsKeyWord(wrdWords(3)) = True AndAlso strFunctionName = "" Then
                    strHeaderPart = Mid(Destination.Text, 1, lngDestinationHeaderLen)
                    strHeaderFunction = strLineTextTemp & ";"
                    strLastTart = Mid(Destination.Text, lngDestinationHeaderLen, Len(Destination.Text) - lngDestinationHeaderLen + 2)
                    Destination.Text = strHeaderPart & strHeaderFunction & strLastTart
                    Destination.SelectionStart = Len(Destination.Text)
                    Destination.SelectedText = strLineTextTemp & vbNewLine & "{" & vbNewLine
                    strFunctionName = wrdWords(1)
                Else
                    Destination.SelectedText = strLineTextTemp & ";" & vbNewLine
                End If
            ElseIf wrdWords(0) = "String" = True Then
                strLineTextTemp = strLineText
                strLineTextTemp = Replace(strLineTextTemp, "String", "string")
                strLineTextTemp = Replace(strLineTextTemp, "//", "; //")
                If wrdWords.Length > 2 AndAlso wrdWords(2) = "=" Then
                    Destination.SelectedText = strLineTextTemp & ";" & vbNewLine
                ElseIf wrdWords.Length > 2 AndAlso wrdWords(2) = "(" AndAlso IsKeyWord(wrdWords(3)) = True AndAlso strFunctionName = "" Then
                    strHeaderPart = Mid(Destination.Text, 1, lngDestinationHeaderLen)
                    strHeaderFunction = strLineTextTemp & ";"
                    strLastTart = Mid(Destination.Text, lngDestinationHeaderLen, Len(Destination.Text) - lngDestinationHeaderLen + 2)
                    Destination.Text = strHeaderPart & strHeaderFunction & strLastTart
                    Destination.SelectionStart = Len(Destination.Text)
                    Destination.SelectedText = strLineTextTemp & vbNewLine & "{" & vbNewLine
                    strFunctionName = wrdWords(1)
                Else
                    Destination.SelectedText = strLineTextTemp & ";" & vbNewLine
                End If
            ElseIf wrdWords(0) = "Read" AndAlso wrdWords(1) = "(" AndAlso wrdWords(2) = ")" Then
                strLineTextTemp = Replace(strLineText, "Read()", "getch()")
                strLineTextTemp = Replace(strLineTextTemp, "//", "; //")
                Destination.SelectedText = strLineTextTemp & ";" & vbNewLine
            ElseIf wrdWords(0) = "Read" Then
                strLineTextTemp = Replace(strLineText, "Read", "cin >> ")
                strLineTextTemp = Replace(strLineTextTemp, "(", " ")
                strLineTextTemp = Replace(strLineTextTemp, ")", " ")
                strLineTextTemp = Replace(strLineTextTemp, "//", "; //")
                Destination.SelectedText = strLineTextTemp & ";" & vbNewLine
            ElseIf wrdWords(0) = "Boolean" Then
                strLineTextTemp = Replace(strLineText, "Boolean", "bool")
                If wrdWords.Length > 2 AndAlso wrdWords(2) = "(" Then
                    strHeaderPart = Mid(Destination.Text, 1, lngDestinationHeaderLen)
                    strHeaderFunction = strLineTextTemp & ";"
                    strLastTart = Mid(Destination.Text, lngDestinationHeaderLen, Len(Destination.Text) - lngDestinationHeaderLen + 2)
                    Destination.Text = strHeaderPart & strHeaderFunction & strLastTart
                    Destination.SelectionStart = Len(Destination.Text)
                    Destination.SelectedText = strLineTextTemp & vbNewLine & "{" & vbNewLine
                    strFunctionName = wrdWords(1)
                Else
                    Destination.SelectedText = strLineTextTemp & ";" & vbNewLine
                End If
            ElseIf wrdWords(0) = "Char" = True Then
                strLineTextTemp = strLineText
                If wrdWords(2) = "=" Then
                    Destination.SelectedText = strLineTextTemp & ";" & vbNewLine
                ElseIf wrdWords(2) = "(" And IsKeyWord(wrdWords(3)) = True And strFunctionName = "" Then
                    lngDestinationActualPos = Destination.SelectedText
                    Destination.SelectionStart = lngDestinationHeaderPos
                    Destination.SelectedText = strLineTextTemp & ";" & vbNewLine
                    lngDestinationHeaderPos = Destination.SelectionStart
                    Destination.SelectionStart = lngDestinationActualPos
                    Destination.SelectedText = strLineTextTemp & vbNewLine & "{" & vbNewLine
                    strFunctionName = wrdWords(1)
                End If
            ElseIf wrdWords(0) = "Float" = True Then
                strLineTextTemp = strLineText
                If wrdWords(2) = "=" Then
                    Destination.SelectedText = strLineTextTemp & ";" & vbNewLine
                ElseIf wrdWords(2) = "(" And IsKeyWord(wrdWords(3)) = True And strFunctionName = "" Then
                    strHeaderPart = Mid(Destination.Text, 1, lngDestinationHeaderLen)
                    strHeaderFunction = strLineTextTemp & ";"
                    strLastTart = Mid(Destination.Text, lngDestinationHeaderLen, Len(Destination.Text) - lngDestinationHeaderLen + 2)
                    Destination.Text = strHeaderPart & strHeaderFunction & strLastTart
                    Destination.SelectionStart = Len(Destination.Text)
                    Destination.SelectedText = strLineTextTemp & vbNewLine & "{" & vbNewLine
                    strFunctionName = wrdWords(1)
                End If
            ElseIf wrdWords(0) = "Double" = True Then
                strLineTextTemp = strLineText
                If wrdWords(2) = "=" Then
                    Destination.SelectedText = strLineTextTemp & ";" & vbNewLine
                ElseIf wrdWords(2) = "(" And IsKeyWord(wrdWords(3)) = True And strFunctionName = "" Then
                    strHeaderPart = Mid(Destination.Text, 1, lngDestinationHeaderLen)
                    strHeaderFunction = strLineTextTemp & ";"
                    strLastTart = Mid(Destination.Text, lngDestinationHeaderLen, Len(Destination.Text) - lngDestinationHeaderLen + 2)
                    Destination.Text = strHeaderPart & strHeaderFunction & strLastTart
                    Destination.SelectionStart = Len(Destination.Text)
                    Destination.SelectedText = strLineTextTemp & vbNewLine & "{" & vbNewLine
                    strFunctionName = wrdWords(1)
                End If
            ElseIf wrdWords(0) = "Byte" = True Then
                strLineTextTemp = Replace(strLineText, "Byte", "unsigned char")
                If wrdWords(2) = "=" Then
                    Destination.SelectedText = strLineTextTemp & ";" & vbNewLine
                ElseIf wrdWords(2) = "(" And IsKeyWord(wrdWords(3)) = True And strFunctionName = "" Then
                    strHeaderPart = Mid(Destination.Text, 1, lngDestinationHeaderLen)
                    strHeaderFunction = strLineTextTemp & ";"
                    strLastTart = Mid(Destination.Text, lngDestinationHeaderLen, Len(Destination.Text) - lngDestinationHeaderLen + 2)
                    Destination.Text = strHeaderPart & strHeaderFunction & strLastTart
                    Destination.SelectionStart = Len(Destination.Text)
                    Destination.SelectedText = strLineTextTemp & vbNewLine & "{" & vbNewLine
                    strFunctionName = wrdWords(1)
                End If
            ElseIf wrdWords(0) = "Sub" = True Then
                If wrdWords.Length > 1 AndAlso wrdWords(1) = "Main" = True Then
                    blnMain = True
                    strLineTextTemp = Replace(strLineText, "Sub Main", "int main")
                    Destination.SelectedText = strLineTextTemp & vbNewLine & "{" & vbNewLine
                    strFunctionName = "main"
                Else
                    strLineTextTemp = Replace(strLineText, "Sub", "void")
                    Destination.SelectedText = strLineTextTemp & vbNewLine
                    Destination.SelectedText = "{" & vbNewLine
                End If
            Else
                If strLineText <> "" Then
                    'strLineTextTemp = Replace(strLineText, "&", "+")
                    strLineTextTemp = Replace(strLineText, """""", "\""")
                    Destination.SelectedText = strLineTextTemp & ";" & vbNewLine
                Else
                    Destination.SelectedText = vbNewLine
                End If
            End If
        Next lngLinePos
    End Sub

these sub do:
- read it line by line do code;
- compare the words for see what type of code is used;
- then i convert the line to C\C++.

but imagine these line:

if a<b then write("hello vbforums" + newline)

is like have 2 parts:
- if a<b then;
-write("hello vbforums" + newline);
so the 1st part is normaly converted and works fine;)
but the 2nd is like a normal another line of code.
so a need a advice for change my procedure, for read that part like another line. can anyone advice me?

Viewing all articles
Browse latest Browse all 27329

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>