Visual Basic in Borland c



  • Kann einer folgenden Text von Visaul c in Borland C programmieren. Ich kenn mich echt nicht aus mit Visaul C. wäre echt nett wenn ihr mir da helfen könntet.

    Option Explicit
    
    Private Type BIdx
      pLinks As Long
      pRechts As Long
      Woerterbuchindex As Long
    End Type
    
    Dim Woerterbuch(4096) As String
    Dim NaechsterWoerterbuchindex As Long
    Dim Heap(4096) As BIdx
    Dim NaechsterHeapIndex As Long
    Dim pStr As Long
    
    Sub InitWoerterbuch()
    'In dieser Sub wird das Woerterbuch
    'initialisiert und mit Standardwerten belegt
    
      Dim i As Integer
    
        For i = 0 To 255
            Woerterbuch(i) = Chr(i) 'Chr Gibt einen Wert vom Typ String zurück Long
        Next i
    
        NaechsterWoerterbuchindex = 256
        NaechsterHeapIndex = 0
    End Sub
    
    Function AddToWoerterbuch(s As String) As Long
    'In dieser Sub wird dem Woerterbuch ein
    'Begriff hinzugefügt
    
      If Len(s) = 1 Then      ' Gibt den Wert Long zurück der die Anzahl der Zeichen
                              ' in einer Zeichenfolge oder die zum Speichern einer 
                              ' Variablen erfordelichen Bytes enthält
        AddToWoerterbuch = Asc(s) ' Gibt den Wert Integer zurück
      Else
        AddToWoerterbuch = AddToBTree(0, s)
      End If
    End Function
    
    Function AddToBTree(ByRef Node As Long, ByRef s As String) As Long
      Dim i As Integer
    
        If Node = -1 Or NaechsterHeapIndex = 0 Then
          Woerterbuch(NaechsterWoerterbuchindex) = s
          Heap(NaechsterHeapIndex).Woerterbuchindex = _
               NaechsterWoerterbuchindex
          NaechsterWoerterbuchindex = NaechsterWoerterbuchindex + 1
          Heap(NaechsterHeapIndex).pLinks = -1
          Heap(NaechsterHeapIndex).pRechts = -1
          Node = NaechsterHeapIndex
          NaechsterHeapIndex = NaechsterHeapIndex + 1
          AddToBTree = -1
        Else
          i = StrComp(s, Woerterbuch(Heap(Node).Woerterbuchindex))
          If i < 0 Then
              AddToBTree = AddToBTree(Heap(Node).pLinks, s)
          ElseIf i > 0 Then
              AddToBTree = AddToBTree(Heap(Node).pRechts, s)
          Else
              AddToBTree = Heap(Node).Woerterbuchindex
          End If
        End If
    End Function
    
    Private Sub SchreibeStringBuffer(s As String, s2 As String)
      Do While pStr + Len(s2) - 1 > Len(s)
        s = s & Space(100000)
      Loop
      Mid$(s, pStr) = s2
      pStr = pStr + Len(s2)
    End Sub
    
    Function Komprimieren(IPStr As String) As String
      Dim TmpStr As String
      Dim Ch As String
      Dim Woerterbuchindex As Integer
      Dim LetzterWoerterbuchindex As Integer
      Dim ErsterBegriffinFolge As Boolean
      Dim HalfCh As Integer
      Dim i As Long
      Dim ostr As String
    
        Call InitWoerterbuch
        ErsterBegriffinFolge = True
        pStr = 1
    
        For i = 1 To Len(IPStr)
          Ch = Mid$(IPStr, i, 1)
          Woerterbuchindex = AddToWoerterbuch(TmpStr & Ch)
    
          If Woerterbuchindex = -1 Then
            If ErsterBegriffinFolge Then
              HalfCh = (LetzterWoerterbuchindex And 15) * 16
            Else
              SchreibeStringBuffer ostr, Chr(HalfCh Or _
                       (LetzterWoerterbuchindex And 15))
            End If
            SchreibeStringBuffer ostr, _
                       Chr(LetzterWoerterbuchindex \ 16)
    
            ErsterBegriffinFolge = Not ErsterBegriffinFolge
            TmpStr = Ch
            LetzterWoerterbuchindex = Asc(Ch)
          Else
            TmpStr = TmpStr & Ch
            LetzterWoerterbuchindex = Woerterbuchindex
          End If
        Next i
    
        SchreibeStringBuffer ostr, _
        IIf(ErsterBegriffinFolge, Chr(LetzterWoerterbuchindex \ 16) _
            & Chr((LetzterWoerterbuchindex And 15) * 16), _
            Chr(HalfCh Or (LetzterWoerterbuchindex And 15)) & _
            Chr(LetzterWoerterbuchindex \ 16))
        Komprimieren = Left(ostr, pStr - 1)
    End Function
    
    Function GC(str As String, position As Long) As Integer
      GC = Asc(Mid$(str, position, 1))
    End Function
    
    Function DeKomprimieren(IPStr As String) As String
      Dim Woerterbuchindex As Integer
      Dim ErsterBegriffinFolge As Boolean
      Dim i As Long
      Dim s As String
      Dim s2 As String
    
        Call InitWoerterbuch
        pStr = 1
        i = 1
        ErsterBegriffinFolge = True
    
        Do While i < Len(IPStr)
          If ErsterBegriffinFolge Then
            Woerterbuchindex = (GC(IPStr, i) * 16) Or _
                               (GC(IPStr, i + 1) \ 16)
            i = i + 1
          Else
            Woerterbuchindex = (GC(IPStr, i + 1) * 16) Or _
                               (GC(IPStr, i) And 15)
            i = i + 2
          End If
          ErsterBegriffinFolge = Not ErsterBegriffinFolge
    
          If i > 2 Then
            If Woerterbuchindex = NaechsterWoerterbuchindex Or _
                                  (Woerterbuchindex = 256 And _
                                  NaechsterWoerterbuchindex = 4096) Then
              AddToWoerterbuch s2 & Left$(s2, 1)
            Else
              AddToWoerterbuch s2 & Left$(Woerterbuch(Woerterbuchindex), 1)
            End If
          End If
    
          s2 = Woerterbuch(Woerterbuchindex)
          SchreibeStringBuffer s, s2
        Loop
    
        DeKomprimieren = Left(s, pStr - 1)
    End Function
    
    Sub Start()
      Dim KomprS As String
        Screen.MousePointer = vbHourglass
    
        'Kompression aufrufen
        KomprS = Komprimieren(Form1.Text1)
    
        'Übergabe des komprimierten Textes
        Form1.Text6 = KomprS
    
        'DeKompression des komprimierten Textes
        Form1.Text2 = DeKomprimieren(KomprS)
    
        'Länge des Originaltextes ermitteln
        Form1.Text3 = Len(Form1.Text1)
    
        'Länge des komprimierten Textes ermitteln
        Form1.Text4 = Len(KomprS)
    
        'Status einfügen
        If Form1.Text1 <> Form1.Text2 Then
          Form1.Text5 = "Fehler"
        Else
          Form1.Text5 = "fertig"
        End If
    
        Screen.MousePointer = vbNormal
    End Sub
    

    Edit:
    Bitte die Code-Tags benutzen. Danke!



  • das ist kein c. sieht aus wie vb.
    wenn du glück hast, kannstes in c# umwandeln. damit: http://www.icsharpcode.net/OpenSource/SD/



  • Das sprengt irgendwie den Rahmen einer Problemdiskussion, zumal es den Anschein hat, dass du lediglich an fertiger Arbeit interessiert bist.
    Ich verschiebe mal nach "Projekte", vielleicht erbarmt sich ja jemand.



  • Dieser Thread wurde von Moderator/in Jansen aus dem Forum Borland C++ Builder (VCL/CLX) in das Forum Projekte verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Wieviel zahlst du?



  • dEUs schrieb:

    Wieviel zahlst du?

    Die Pauschalfrage 😃



  • Andi17 schrieb:

    Kann einer folgenden Text von Visaul c in Borland C programmieren. Ich kenn mich echt nicht aus mit Visaul C. wäre echt nett wenn ihr mir da helfen könntet.

    Option Explicit
    
    Private Type BIdx
      pLinks As Long
      pRechts As Long
      Woerterbuchindex As Long
    End Type
        
    Dim Woerterbuch(4096) As String
    Dim NaechsterWoerterbuchindex As Long
    Dim Heap(4096) As BIdx
    Dim NaechsterHeapIndex As Long
    Dim pStr As Long
    
    Sub InitWoerterbuch()
    'In dieser Sub wird das Woerterbuch
    'initialisiert und mit Standardwerten belegt
      
      Dim i As Integer
      
        For i = 0 To 255
            Woerterbuch(i) = Chr(i) 'Chr Gibt einen Wert vom Typ String zurück Long
        Next i
          
        NaechsterWoerterbuchindex = 256
        NaechsterHeapIndex = 0
    End Sub
    
    Function AddToWoerterbuch(s As String) As Long
    'In dieser Sub wird dem Woerterbuch ein
    'Begriff hinzugefügt
        
      If Len(s) = 1 Then      ' Gibt den Wert Long zurück der die Anzahl der Zeichen
                              ' in einer Zeichenfolge oder die zum Speichern einer 
                              ' Variablen erfordelichen Bytes enthält
        AddToWoerterbuch = Asc(s) ' Gibt den Wert Integer zurück
      Else
        AddToWoerterbuch = AddToBTree(0, s)
      End If
    End Function
    
    Function AddToBTree(ByRef Node As Long, ByRef s As String) As Long
      Dim i As Integer
    
        If Node = -1 Or NaechsterHeapIndex = 0 Then
          Woerterbuch(NaechsterWoerterbuchindex) = s
          Heap(NaechsterHeapIndex).Woerterbuchindex = _
               NaechsterWoerterbuchindex
          NaechsterWoerterbuchindex = NaechsterWoerterbuchindex + 1
          Heap(NaechsterHeapIndex).pLinks = -1
          Heap(NaechsterHeapIndex).pRechts = -1
          Node = NaechsterHeapIndex
          NaechsterHeapIndex = NaechsterHeapIndex + 1
          AddToBTree = -1
        Else
          i = StrComp(s, Woerterbuch(Heap(Node).Woerterbuchindex))
          If i < 0 Then
              AddToBTree = AddToBTree(Heap(Node).pLinks, s)
          ElseIf i > 0 Then
              AddToBTree = AddToBTree(Heap(Node).pRechts, s)
          Else
              AddToBTree = Heap(Node).Woerterbuchindex
          End If
        End If
    End Function
    
    Private Sub SchreibeStringBuffer(s As String, s2 As String)
      Do While pStr + Len(s2) - 1 > Len(s)
        s = s & Space(100000)
      Loop
      Mid$(s, pStr) = s2
      pStr = pStr + Len(s2)
    End Sub
    
    Function Komprimieren(IPStr As String) As String
      Dim TmpStr As String
      Dim Ch As String
      Dim Woerterbuchindex As Integer
      Dim LetzterWoerterbuchindex As Integer
      Dim ErsterBegriffinFolge As Boolean
      Dim HalfCh As Integer
      Dim i As Long
      Dim ostr As String
        
        Call InitWoerterbuch
        ErsterBegriffinFolge = True
        pStr = 1
    
        For i = 1 To Len(IPStr)
          Ch = Mid$(IPStr, i, 1)
          Woerterbuchindex = AddToWoerterbuch(TmpStr & Ch)
    
          If Woerterbuchindex = -1 Then
            If ErsterBegriffinFolge Then
              HalfCh = (LetzterWoerterbuchindex And 15) * 16
            Else
              SchreibeStringBuffer ostr, Chr(HalfCh Or _
                       (LetzterWoerterbuchindex And 15))
            End If
            SchreibeStringBuffer ostr, _
                       Chr(LetzterWoerterbuchindex \ 16)
                
            ErsterBegriffinFolge = Not ErsterBegriffinFolge
            TmpStr = Ch
            LetzterWoerterbuchindex = Asc(Ch)
          Else
            TmpStr = TmpStr & Ch
            LetzterWoerterbuchindex = Woerterbuchindex
          End If
        Next i
        
        SchreibeStringBuffer ostr, _
        IIf(ErsterBegriffinFolge, Chr(LetzterWoerterbuchindex \ 16) _
            & Chr((LetzterWoerterbuchindex And 15) * 16), _
            Chr(HalfCh Or (LetzterWoerterbuchindex And 15)) & _
            Chr(LetzterWoerterbuchindex \ 16))
        Komprimieren = Left(ostr, pStr - 1)
    End Function
    
    Function GC(str As String, position As Long) As Integer
      GC = Asc(Mid$(str, position, 1))
    End Function
    
    Function DeKomprimieren(IPStr As String) As String
      Dim Woerterbuchindex As Integer
      Dim ErsterBegriffinFolge As Boolean
      Dim i As Long
      Dim s As String
      Dim s2 As String
      
        Call InitWoerterbuch
        pStr = 1
        i = 1
        ErsterBegriffinFolge = True
    
        Do While i < Len(IPStr)
          If ErsterBegriffinFolge Then
            Woerterbuchindex = (GC(IPStr, i) * 16) Or _
                               (GC(IPStr, i + 1) \ 16)
            i = i + 1
          Else
            Woerterbuchindex = (GC(IPStr, i + 1) * 16) Or _
                               (GC(IPStr, i) And 15)
            i = i + 2
          End If
          ErsterBegriffinFolge = Not ErsterBegriffinFolge
    
          If i > 2 Then
            If Woerterbuchindex = NaechsterWoerterbuchindex Or _
                                  (Woerterbuchindex = 256 And _
                                  NaechsterWoerterbuchindex = 4096) Then
              AddToWoerterbuch s2 & Left$(s2, 1)
            Else
              AddToWoerterbuch s2 & Left$(Woerterbuch(Woerterbuchindex), 1)
            End If
          End If
          
          s2 = Woerterbuch(Woerterbuchindex)
          SchreibeStringBuffer s, s2
        Loop
        
        DeKomprimieren = Left(s, pStr - 1)
    End Function
    
    Sub Start()
      Dim KomprS As String
        Screen.MousePointer = vbHourglass
        
        'Kompression aufrufen
        KomprS = Komprimieren(Form1.Text1)
        
        'Übergabe des komprimierten Textes
        Form1.Text6 = KomprS
        
        'DeKompression des komprimierten Textes
        Form1.Text2 = DeKomprimieren(KomprS)
        
        'Länge des Originaltextes ermitteln
        Form1.Text3 = Len(Form1.Text1)
            
        'Länge des komprimierten Textes ermitteln
        Form1.Text4 = Len(KomprS)
        
        'Status einfügen
        If Form1.Text1 <> Form1.Text2 Then
          Form1.Text5 = "Fehler"
        Else
          Form1.Text5 = "fertig"
        End If
            
        Screen.MousePointer = vbNormal
    End Sub
    

    Edit:
    Bitte die Code-Tags benutzen. Danke!

    Visual C?
    Ist klar , ich kenne nur Visual C--.

    Und so eine häßliche Syntax kann nur von Visual Basic kommen.
    Das nur als Tipp, für weitere Überlegungen...

    Es wird Dir sicherlich jeder weiterhelfen 😉



  • epidemic schrieb:

    Visual C?
    Ist klar , ich kenne nur Visual C--.

    Und so eine häßliche Syntax kann nur von Visual Basic kommen.
    Das nur als Tipp, für weitere Überlegungen...

    Es wird Dir sicherlich jeder weiterhelfen 😉

    Da er es im Threadtitel richtig formuliert hat, wird es wohl auch nur ein Schreibfehler gewesen sein. Außerdem wurde schon vor dir angemerkt, dass es VB ist :p 😉
    Und gequotet hast du auch 'nen ganz schönen Batzen.

    Sorry, bin heute auf dem Nörgeltrip 😃


Anmelden zum Antworten