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