Zahlensystem Umrechner

  • Hallo leute,

    ich habe mal vor einiger Zeit ein Zahlensystem Umrechner gecodet und dachte ich stelle den mal vor ;D

    er bietet die möglichkeit im Hauptfenster Binär, Dezimal, Oktal und Hexadezimal um zu wandeln
    zudem zeigt er falls es auch als ASCII Zeichen dargestellt werden kann, dieses an.
    Es gibt diverse Hotkey's
    F1 = Fenster immer im Vordergrund
    F2 = Leeren
    F3 = Zeit zum rechnen anzeigen
    F4 = Zahl drehen (dazu muss ein der eingabe Felder aktiv sein)
    F5 = Eigene Basis umwandeln
    ESC = Beenden
    Pfeiltaste Hoch/Runter = wechseln zwischen den Eingabefeldern
    Enter = Berechnen

    Desweiteren lässt sich via Menü oder F5 ein zweites Fenster öffnen, wo man selbst die Basis (zwischen 2 und 36) auswählen kann und die Zielbasis.
    Ich habe auch eine kleine Info über Zahlensysteme eingebaut.

    Spoiler anzeigen
    [autoit]


    #NoTrayIcon
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Icon=Sonstiges\AU3_Programme\ICON\Binary.ico
    #AutoIt3Wrapper_Outfile=Zahlensystem Umrechner.exe
    #AutoIt3Wrapper_Res_Comment=keine Gewähr auf richtigkeit der Ergebnisse
    #AutoIt3Wrapper_Res_Description=Zahlensystem Umrechner
    #AutoIt3Wrapper_Res_Fileversion=0.3.0.0
    #AutoIt3Wrapper_Res_FileVersion_AutoIncrement=y
    #AutoIt3Wrapper_Res_LegalCopyright=Krabat (C) 2011
    #AutoIt3Wrapper_Res_Language=1031
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <String.au3>
    #include <GuiStatusBar.au3>
    Opt("GUIOnEventMode", 1)

    [/autoit] [autoit][/autoit] [autoit]

    Global $version = "0.3.0.0"
    Dim $global[9]
    Global $global
    Global $head = "Zahlensystem Umrechner"
    Global $state = 0
    Dim $OwnWin[5]
    Global $OwnWin

    [/autoit] [autoit][/autoit] [autoit]

    $global[7] = 1
    $global[8] = 0

    [/autoit] [autoit][/autoit] [autoit]

    $global[0] = GUICreate($head, 385, 185)
    GUISetFont(9, 400, 0, "Arial", $global[0])
    GUISetOnEvent($GUI_EVENT_CLOSE, "_exit")
    GUISetBkColor(0xE0FFFF)

    [/autoit] [autoit][/autoit] [autoit]

    $MenuA = GUICtrlCreateMenu("&Datei")
    $MenuA_1 = GUICtrlCreateMenuItem("Eigene Umwandlung" & @TAB & "F5", $MenuA)
    GUICtrlSetOnEvent($MenuA_1, "_OwnGUI")
    $MenuA_2 = GUICtrlCreateMenuItem("", $MenuA)
    $MenuA_3 = GUICtrlCreateMenuItem("Zurücksetzen" & @TAB & "F2", $MenuA)
    GUICtrlSetOnEvent($MenuA_3, "_Reset")
    $MenuA_4 = GUICtrlCreateMenuItem("Zahl Drehen" & @TAB & "F4", $MenuA)
    GUICtrlSetOnEvent($MenuA_4, "_Drehen")
    $MenuA_5 = GUICtrlCreateMenuItem("", $MenuA)
    $MenuA_6 = GUICtrlCreateMenuItem("Beenden" & @TAB & "ESC", $MenuA)
    GUICtrlSetOnEvent($MenuA_6, "_exit")

    [/autoit] [autoit][/autoit] [autoit]

    $MenuC = GUICtrlCreateMenu("Einstellungen")
    $MenuC_1 = GUICtrlCreateMenuItem("Im Vordergrund" & @TAB & "F1", $MenuC)
    GUICtrlSetOnEvent($MenuC_1, "_OnTop")
    $MenuC_2 = GUICtrlCreateMenuItem("Rechen Zeit" & @TAB & "F3", $MenuC)
    GUICtrlSetOnEvent($MenuC_2, "_Timer")

    [/autoit] [autoit][/autoit] [autoit]

    $MenuD = GUICtrlCreateMenu("Hilfe")
    $MenuD_1 = GUICtrlCreateMenuItem("Zahlensysteme und Basis", $MenuD)
    GUICtrlSetOnEvent($MenuD_1, "_Help_ZahlenSys")

    [/autoit] [autoit][/autoit] [autoit]

    $MenuB = GUICtrlCreateMenu("?")
    $MenuB_1 = GUICtrlCreateMenuItem("About...", $MenuB)
    GUICtrlSetOnEvent($MenuB_1, "_About")

    [/autoit] [autoit][/autoit] [autoit]

    Dim $aParts[5] = [45, 150, 180, 305, -1]
    Dim $aText[5] = ["Status: ", "Berreit", "Zeit:", "0 Sek.", "keine Gewähr!"]
    $global[6] = _GUICtrlStatusBar_Create($global[0], $aParts, $aText)
    GUICtrlSetState($MenuC_2, $GUI_CHECKED)

    [/autoit] [autoit][/autoit] [autoit]

    $Dummy1 = GUICtrlCreateDummy()
    GUICtrlSetOnEvent($Dummy1, "_JetztRechnen")
    $Dummy2 = GUICtrlCreateDummy()
    GUICtrlSetOnEvent($Dummy2, "_Reset")
    $Dummy3 = GUICtrlCreateDummy()
    GUICtrlSetOnEvent($Dummy3, "_FocusHoch")
    $Dummy4 = GUICtrlCreateDummy()
    GUICtrlSetOnEvent($Dummy4, "_FocusRunter")
    $Dummy5 = GUICtrlCreateDummy()
    GUICtrlSetOnEvent($Dummy5, "_OnTop")
    $Dummy6 = GUICtrlCreateDummy()
    GUICtrlSetOnEvent($Dummy6, "_Timer")
    $Dummy7 = GUICtrlCreateDummy()
    GUICtrlSetOnEvent($Dummy7, "_Drehen")
    $Dummy8 = GUICtrlCreateDummy()
    GUICtrlSetOnEvent($Dummy8, "_OwnGUI")

    [/autoit] [autoit][/autoit] [autoit]

    Dim $AccelKeys[8][2] = [["{ENTER}", $Dummy1],["{F2}", $Dummy2],["{up}", $Dummy3],["{down}", $Dummy4],["{F1}", $Dummy5],["{F3}", $Dummy6],["{F4}", $Dummy7],["{F5}", $Dummy8]]
    GUISetAccelerators($AccelKeys)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateLabel("Dezimal", 100, 5, 80, 15)
    GUICtrlCreateLabel("Binär", 5, 5, 80, 15)
    GUICtrlCreateLabel("Hexadezimal", 290, 5, 80, 15)
    GUICtrlCreateLabel("Oktal", 195, 5, 80, 15)
    GUICtrlCreateLabel("ASCII:", 5, 75, 100, 15)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateGroup("", 180, 82, 195, 50)
    GUICtrlCreateLabel("© 2011 by Krabat" & @CRLF & "All rights reserved", 200, 95, 150, 30, 0x01)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetColor(-1, 0x708090)

    [/autoit] [autoit][/autoit] [autoit]

    $global[1] = GUICtrlCreateInput("", 100, 20, 90, 20) ; Dezimal
    GUICtrlSetLimit(-1, 50)
    GUICtrlCreateButton("Rechnen", 100, 45, 90, 20)
    GUICtrlSetOnEvent(-1, "_RechnenEins")

    [/autoit] [autoit][/autoit] [autoit]

    $global[2] = GUICtrlCreateInput("", 5, 20, 90, 20) ; Binär
    GUICtrlSetLimit(-1, 50)
    GUICtrlCreateButton("Rechnen", 5, 45, 90, 20)
    GUICtrlSetOnEvent(-1, "_RechnenZwei")

    [/autoit] [autoit][/autoit] [autoit]

    $global[4] = GUICtrlCreateInput("", 290, 20, 90, 20) ; Hexadezimal
    GUICtrlSetLimit(-1, 50)
    GUICtrlCreateButton("Rechnen", 290, 45, 90, 20)
    GUICtrlSetOnEvent(-1, "_RechnenVier")

    [/autoit] [autoit][/autoit] [autoit]

    $global[5] = GUICtrlCreateInput("", 195, 20, 90, 20) ; Oktal
    GUICtrlSetLimit(-1, 50)
    GUICtrlCreateButton("Rechnen", 195, 45, 90, 20)
    GUICtrlSetOnEvent(-1, "_RechnenFunf")

    [/autoit] [autoit][/autoit] [autoit]

    $global[3] = GUICtrlCreateInput("", 5, 90, 150, 20) ; ASCII
    GUICtrlSetLimit(-1, 50)
    GUICtrlCreateButton("ASCII umwandeln", 5, 115, 150, 20)
    GUICtrlSetOnEvent(-1, "_RechnenDrei")

    [/autoit] [autoit][/autoit] [autoit]

    ControlFocus($head, "", $global[2])
    GUISetState(@SW_SHOW, $global[0])

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    Sleep(5000)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _RechnenEins() ; Dezimal
    _StartMath()
    $value2 = GUICtrlRead($global[1])
    If $value2 = "" Or $value2 = "Fehler" Then
    _Error()
    Return -1
    EndIf
    GUICtrlSetData($global[2], _TranslateBase($value2, 10, 2))
    GUICtrlSetData($global[4], _TranslateBase($value2, 10, 16))
    GUICtrlSetData($global[5], _TranslateBase($value2, 10, 8))
    _IsLike()
    _EndMath()
    EndFunc ;==>_RechnenEins

    [/autoit] [autoit][/autoit] [autoit]

    Func _RechnenZwei() ; Binär
    _StartMath()
    $value3 = GUICtrlRead($global[2])
    If $value3 = "" Or $value3 = "Fehler" Then
    _Error()
    Return -1
    EndIf
    $check = StringSplit($value3, "")
    For $i = 1 To $check[0] Step 1
    If $check[$i] > 1 Or $check[$i] < 0 Then
    _Error()
    Return -2
    EndIf
    Next
    GUICtrlSetData($global[1], _TranslateBase($value3, 2, 10))
    GUICtrlSetData($global[4], _TranslateBase($value3, 2, 16))
    GUICtrlSetData($global[5], _TranslateBase($value3, 2, 8))
    _IsLike()
    _EndMath()
    EndFunc ;==>_RechnenZwei

    [/autoit] [autoit][/autoit] [autoit]

    Func _RechnenVier() ; Hexadezimal
    _StartMath()
    $value1 = GUICtrlRead($global[4])
    If $value1 = "" Or $value1 = "Fehler" Then
    _Error()
    Return -1
    EndIf
    GUICtrlSetData($global[1], _TranslateBase($value1, 16, 10))
    GUICtrlSetData($global[2], _TranslateBase($value1, 16, 2))
    GUICtrlSetData($global[5], _TranslateBase($value1, 16, 8))
    _IsLike()
    _EndMath()
    EndFunc ;==>_RechnenVier

    [/autoit] [autoit][/autoit] [autoit]

    Func _RechnenFunf() ; Oktal
    _StartMath()
    $value4 = GUICtrlRead($global[5])
    If $value4 = "" Or $value4 = "Fehler" Then
    _Error()
    Return -1
    EndIf
    GUICtrlSetData($global[1], _TranslateBase($value4, 8, 10))
    GUICtrlSetData($global[2], _TranslateBase($value4, 8, 2))
    GUICtrlSetData($global[4], _TranslateBase($value4, 8, 16))
    _IsLike()
    _EndMath()
    EndFunc ;==>_RechnenFunf

    [/autoit] [autoit][/autoit] [autoit]

    Func _RechnenDrei() ; ASCII
    _StartMath()
    $asc = Asc(GUICtrlRead($global[3]))
    If $asc = "" Or $asc = "Fehler" Then
    _Error()
    Return -1
    EndIf
    GUICtrlSetData($global[1], $asc)
    GUICtrlSetData($global[2], _TranslateBase($asc, 10, 2))
    GUICtrlSetData($global[4], _TranslateBase($asc, 10, 16))
    GUICtrlSetData($global[5], _TranslateBase($asc, 10, 8))
    _IsLike()
    _EndMath()
    EndFunc ;==>_RechnenDrei

    [/autoit] [autoit][/autoit] [autoit]

    Func _Error()
    GUICtrlSetData($global[1], "Fehler")
    GUICtrlSetData($global[2], "Fehler")
    GUICtrlSetData($global[3], "Fehler")
    GUICtrlSetData($global[4], "Fehler")
    GUICtrlSetData($global[5], "Fehler")
    _FehlerMath()
    EndFunc ;==>_Error

    [/autoit] [autoit][/autoit] [autoit]

    Func _IsLike()
    $ascii = GUICtrlRead($global[1])
    If $ascii = "Fehler" Then
    GUICtrlSetData($global[3], "Fehler")
    Return -1
    EndIf
    If $ascii <= 0 Or $ascii > 255 Then
    GUICtrlSetData($global[3], "Kein ASCII Zeichen")
    Return -2
    EndIf
    GUICtrlSetData($global[3], Chr($ascii))
    Return 1
    EndFunc ;==>_IsLike

    [/autoit] [autoit][/autoit] [autoit]

    Func _Reset()
    GUICtrlSetData($global[1], "")
    GUICtrlSetData($global[2], "")
    GUICtrlSetData($global[3], "")
    GUICtrlSetData($global[4], "")
    GUICtrlSetData($global[5], "")
    _ResetMath()
    EndFunc ;==>_Reset

    [/autoit] [autoit][/autoit] [autoit]

    Func _JetztRechnen()
    $focus = ControlGetFocus($head)
    If $focus = "Edit2" Then _RechnenZwei() ; Binär
    If $focus = "Edit1" Then _RechnenEins() ; Dezimal
    If $focus = "Edit4" Then _RechnenFunf() ; Oktal
    If $focus = "Edit3" Then _RechnenVier() ; Hexadezimal
    If $focus = "Edit5" Then _RechnenDrei() ; ASCII
    EndFunc ;==>_JetztRechnen
    Func _FocusRunter()
    $focus = ControlGetFocus($head)
    If $focus = "Edit2" Then ControlFocus($head, "", $global[3])
    If $focus = "Edit1" Then ControlFocus($head, "", $global[2])
    If $focus = "Edit4" Then ControlFocus($head, "", $global[1])
    If $focus = "Edit3" Then ControlFocus($head, "", $global[5])
    If $focus = "Edit5" Then ControlFocus($head, "", $global[4])
    EndFunc ;==>_FocusRunter
    Func _FocusHoch()
    $focus = ControlGetFocus($head)
    If $focus = "Edit2" Then ControlFocus($head, "", $global[1])
    If $focus = "Edit1" Then ControlFocus($head, "", $global[5])
    If $focus = "Edit4" Then ControlFocus($head, "", $global[4])
    If $focus = "Edit3" Then ControlFocus($head, "", $global[3])
    If $focus = "Edit5" Then ControlFocus($head, "", $global[2])
    EndFunc ;==>_FocusHoch

    [/autoit] [autoit][/autoit] [autoit]

    Func _TranslateBase($sNumber, $iOldBase = 10, $iNewBase = 2)
    ;by eukalyptus
    If $iOldBase < 2 Or $iOldBase > 128 Or $iNewBase < 2 Or $iNewBase > 128 Then Return SetError(1, 1, False)
    Local $iNum, $aRes, $tChr = DllStructCreate("char[64];")
    If $iOldBase <> 10 Then
    $aRes = DllCall("msvcrt.dll", "uint64:cdecl", "_strtoui64", "str", $sNumber, "ptr", 0, "int", $iOldBase)
    If @error Then Return SetError(1, 2, False)
    $iNum = $aRes[0]
    Else
    $iNum = Int($sNumber)
    EndIf
    $aRes = DllCall("msvcrt.dll", "ptr:cdecl", "_i64toa", "int64", $iNum, "ptr", DllStructGetPtr($tChr), "int", $iNewBase)
    If @error Then Return SetError(1, 3, False)
    Return DllStructGetData($tChr, 1)
    EndFunc ;==>_TranslateBase

    [/autoit] [autoit][/autoit] [autoit]

    Func _StartMath()
    If $global[7] = 1 Then $global[8] = TimerInit()
    _GUICtrlStatusBar_SetText($global[6], "Rechnet...", 1)
    EndFunc ;==>_StartMath
    Func _EndMath()
    _GUICtrlStatusBar_SetText($global[6], "Berreit", 1)
    If $global[7] = 1 Then
    _GUICtrlStatusBar_SetText($global[6], Round(TimerDiff($global[8]) / 1000, 10) & " Sek.", 3)
    $global[8] = 0
    EndIf
    EndFunc ;==>_EndMath
    Func _FehlerMath()
    _GUICtrlStatusBar_SetText($global[6], "Ungültige Eingabe", 1)
    EndFunc ;==>_FehlerMath
    Func _ResetMath()
    _GUICtrlStatusBar_SetText($global[6], "Zurückgesetzt", 1)
    EndFunc ;==>_ResetMath

    [/autoit] [autoit][/autoit] [autoit]

    Func _about()
    GUICreate("About", 250, 150, -1, -1, $WS_SYSMENU, -1, $global[0])
    GUISetFont(9, 400, 0, "Arial")
    GUISetOnEvent($GUI_EVENT_CLOSE, "_closeGUI")
    GUISetBkColor(0xE0FFFF)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateLabel("Version " & $version & @CRLF & @CRLF & "© 2011 by Krabat" & @CRLF & "All rights reserved" & @CRLF & @CRLF & "keine Gewähr auf richtigkeit der Ergebnisse!", 0, 5, 250, 145, 0x01)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState()
    EndFunc ;==>_about

    [/autoit] [autoit][/autoit] [autoit]

    Func _closeGUI()
    GUISetState(@SW_HIDE, @GUI_WinHandle)
    GUIDelete(@GUI_WinHandle)
    GUISwitch($global[0])
    EndFunc ;==>_closeGUI

    [/autoit] [autoit][/autoit] [autoit]

    Func _OnTop()
    If $state = 0 Then
    WinSetOnTop($head, "", 1)
    $state = 1
    GUICtrlSetState($MenuC_1, $GUI_CHECKED)
    Return 1
    ElseIf $state = 1 Then
    WinSetOnTop($head, "", 0)
    $state = 0
    GUICtrlSetState($MenuC_1, $GUI_UNCHECKED)
    Return 0
    EndIf
    EndFunc ;==>_OnTop

    [/autoit] [autoit][/autoit] [autoit]

    Func _Timer()
    If $global[7] = 0 Then
    _GUICtrlStatusBar_SetText($global[6], "0 Sek.", 3)
    _GUICtrlStatusBar_SetText($global[6], "Zeit:", 2)
    GUICtrlSetState($MenuC_2, $GUI_CHECKED)
    $global[7] = 1
    Return 1
    ElseIf $global[7] = 1 Then
    _GUICtrlStatusBar_SetText($global[6], "", 2)
    _GUICtrlStatusBar_SetText($global[6], "", 3)
    GUICtrlSetState($MenuC_2, $GUI_UNCHECKED)
    $global[7] = 0
    Return 0
    EndIf
    EndFunc ;==>_Timer

    [/autoit] [autoit][/autoit] [autoit]

    Func _Drehen()
    $focus = ControlGetFocus($head)
    If $focus = "Edit2" Then GUICtrlSetData($global[2], _StringReverse(GUICtrlRead($global[2])))
    If $focus = "Edit1" Then GUICtrlSetData($global[1], _StringReverse(GUICtrlRead($global[1])))
    If $focus = "Edit4" Then GUICtrlSetData($global[5], _StringReverse(GUICtrlRead($global[5])))
    If $focus = "Edit3" Then GUICtrlSetData($global[4], _StringReverse(GUICtrlRead($global[4])))
    If $focus = "Edit5" Then GUICtrlSetData($global[3], _StringReverse(GUICtrlRead($global[3])))
    EndFunc ;==>_Drehen

    [/autoit] [autoit][/autoit] [autoit]

    Func _OwnGUI()
    GUICreate("Eigene Basis", 420, 200, @DesktopWidth / 2 - 194, @DesktopHeight / 2 + 94, -1, -1, $global[0])
    GUISetFont(9, 400, 0, "Arial")
    GUISetOnEvent($GUI_EVENT_CLOSE, "_closeGUI")
    GUISetBkColor(0xE0FFFF)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateLabel("Mit diesem Tool kannst du Zahlen Umrechnen mit einer anderen Basis" & @CRLF & "Z.b.: von 10er-System zum 20er-System" & @CRLF & "Die Basis muss zwischen 2 (Binär) und 128 (Basis 128) liegen!", 5, 1, 420, 45)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateLabel("Zahl", 5, 55, 100, 15)
    GUICtrlCreateLabel("Basis", 260, 55, 50, 15)

    [/autoit] [autoit][/autoit] [autoit]

    $OwnWin[0] = GUICtrlCreateInput("", 5, 70, 250, 20)
    $OwnWin[1] = GUICtrlCreateInput("", 260, 70, 50, 20)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateButton("Rechnen", 315, 70, 100, 20)
    GUICtrlSetOnEvent(-1, "_MathOwnGUI")
    GUICtrlCreateButton("Leeren", 5, 160, 100, 20)
    GUICtrlSetOnEvent(-1, "_ClearOwnGUI")
    GUICtrlCreateButton("Zahl Drehen", 110, 160, 100, 20)
    GUICtrlSetOnEvent(-1, "_DrehenOwnGUI")

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateButton("<< Austauschen >>", 68, 95, 120, 20, 0x1000)
    GUICtrlSetOnEvent(-1, "_SwitchOwnGUI")

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateLabel("Ergebniss", 5, 115, 100, 15)
    GUICtrlCreateLabel("Basis", 260, 115, 50, 15)
    GUICtrlCreateLabel("Basis angeben, die das Ergebniss haben soll!", 260, 150, 150, 30)

    [/autoit] [autoit][/autoit] [autoit]

    $OwnWin[4] = GUICtrlCreateLabel("Zeit: 0 Sek.", 5, 185, 150, 15)

    [/autoit] [autoit][/autoit] [autoit]

    $OwnWin[2] = GUICtrlCreateInput("", 5, 130, 250, 20)
    $OwnWin[3] = GUICtrlCreateInput("", 260, 130, 50, 20)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState()
    EndFunc ;==>_OwnGUI

    [/autoit] [autoit][/autoit] [autoit]

    Func _SwitchOwnGUI()
    $var1 = GUICtrlRead($OwnWin[2])
    $var2 = GUICtrlRead($OwnWin[3])

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlSetData($OwnWin[2], GUICtrlRead($OwnWin[0]))
    GUICtrlSetData($OwnWin[3], GUICtrlRead($OwnWin[1]))
    GUICtrlSetData($OwnWin[0], $var1)
    GUICtrlSetData($OwnWin[1], $var2)

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>_SwitchOwnGUI

    [/autoit] [autoit][/autoit] [autoit]

    Func _MathOwnGUI()
    $timer = TimerInit()
    $result = _TranslateBase(GUICtrlRead($OwnWin[0]), GUICtrlRead($OwnWin[1]), GUICtrlRead($OwnWin[3]))

    [/autoit] [autoit][/autoit] [autoit]

    If $result = False Then
    GUICtrlSetData($OwnWin[2], "Fehler")
    Return -1
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlSetData($OwnWin[2], $result)
    $needtime = Round(TimerDiff($timer) / 1000, 10)
    GUICtrlSetData($OwnWin[4], "Zeit: " & $needtime & " Sek.")
    EndFunc ;==>_MathOwnGUI

    [/autoit] [autoit][/autoit] [autoit]

    Func _ClearOwnGUI()
    GUICtrlSetData($OwnWin[0], "")
    GUICtrlSetData($OwnWin[1], "")
    GUICtrlSetData($OwnWin[2], "")
    GUICtrlSetData($OwnWin[3], "")
    GUICtrlSetData($OwnWin[4], "Zeit: 0 Sek.")
    EndFunc ;==>_ClearOwnGUI

    [/autoit] [autoit][/autoit] [autoit]

    Func _DrehenOwnGUI()
    GUICtrlSetData($OwnWin[0], _StringReverse(GUICtrlRead($OwnWin[0])))
    EndFunc ;==>_DrehenOwnGUI

    [/autoit] [autoit][/autoit] [autoit]

    Func _Help_ZahlenSys()
    GUICreate("Hilfe - Zahlensysteme & Basis", 460, 250, 0, 0, $WS_SYSMENU, -1, $global[0])
    GUISetFont(9, 400, 0, "Arial")
    GUISetOnEvent($GUI_EVENT_CLOSE, "_closeGUI")
    GUISetBkColor(0xE0FFFF)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateLabel("Alle Zahlensysteme besitzen eine Basis, die Basis gibt an wie viele Stellen das System hat, z.b. hat Binär die Basis 2, dass ermöglicht die Zahlen 0 und 1 unser Dezimalsystem hat Zahlen von 0-9 und besitzt die Basis 10. Die kleinste Basis ist 1 das System Unär hat nur die Zahl 1", 5, 5, 440, 60)
    GUICtrlCreateLabel("Dieses Programm kann von der Basis 2 bis zur Basis 36 rechnen, das deckt alle wichtigen Systeme ab.", 5, 75, 440, 30)
    GUICtrlCreateLabel("Es gibt folgende (kleine) Zahlensysteme >NAME (BASIS)<:" & @CRLF & "Unär (1), Binär (2), Ternär (3), Quaternär (4), Quinär (5), Senär (6), Septenär (7), Oktal (8), Nonär (9), Dezimal (10), Undezimal (11), Duodezimal (12), Hexadezimal (16), Vigesimal (20)", 5, 110, 440, 60)
    GUICtrlCreateLabel("Die meisten anderen Systeme heißen so, wie die Basis ist" & @CRLF & "z.b.: Basis 62 (62)", 5, 175, 440, 30)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState()
    EndFunc ;==>_Help_ZahlenSys

    [/autoit] [autoit][/autoit] [autoit]

    Func _exit()
    Exit
    EndFunc ;==>_exit

    [/autoit]


    also wie gesagt, der code ist etwas älter sieht man bestimmt auch im programmierstyle :)

    kommentare sind erwünscht ;)
    ich hoffe anfängern die das selbe vor haben kann das helfen :D

    mfg Krabat

    2 Mal editiert, zuletzt von Krabat (4. Januar 2012 um 10:29)

  • Perfekt! Genau das brauch ich! Dann brauch man nicht immer lästig MsgBoxen machen :D Danke dir! Und das Design find ich garnicht so schlecht

    mfg BB

    "IF YOU'RE GOING TO KILL IT
    OPEN SOURCE IT!"

    by Phillip Torrone

    Zitat von Shoutbox

    [Heute, 11:16] Andy: ....böseböseböseböse....da erinnere ich mich daran, dass man den Puschelschwanz eines KaRnickels auch "Blume" nennt....ob da eins zum anderen passt? :rofl: :rofl: :rofl: :rofl:

    https://autoit.de/index.php?page…leIt#post251138

    Neon Snake

  • Hi, ist dir ja ganz gut gelungen. Ist ganz übersichtlich. Ich bin mir nicht sicher, aber Basen ab 16 sind glaub ich nicht mehr möglich. 2-16 schon, aber was alles >16 ist, ist ungenau und lässt sich nicht zurück umwandeln. Kann aber sein, dass ich mich irre..

    Ich hatte sowas auch mal vor langer langer Zeit gemacht :D

    Zahlensystem Umrechner!

  • Hi, ist dir ja ganz gut gelungen. Ist ganz übersichtlich. Ich bin mir nicht sicher, aber Basen ab 16 sind glaub ich nicht mehr möglich. 2-16 schon, aber was alles >16 ist, ist ungenau und lässt sich nicht zurück umwandeln. Kann aber sein, dass ich mich irre..

    Ich hatte sowas auch mal vor langer langer Zeit gemacht :D

    Zahlensystem Umrechner!


    ja, da irrst du dich ein bisschen :)

    z.b. werden Emails als Basis64 kodiert versendet
    und es gibt auch schon Basis85 und Basis91

    ich denke mal die werden das bis Basis128 weiterentwickeln, dann gehen uns nähmlich die Zeichen aus ;)
    oder gibts das auch schon? :D

  • Sehr gut, nur eine Anmerkung:
    "Bereit" schreibt man mit einem "r"
    Ansonsten, wäre es möglich, dass die anderen Basen (über 36) auch noch funktionieren?

    ich habe eine kleine änderung am Code gemacht, jetzt kann man auch bis Basis128 rechnen xD
    jedoch ist das fehlerpotenzial ab Basis36 erhöt, weil die DLL sich dafür nicht eignet ;)

    zudem geht das Rechnen nur in eine richtung, als z.b. von Dezimal nach Basis64 aber nicht andersrum

    ich würde nicht empfehlen mit dem tool basen über 36 zu brechnen ;)

    mfg

  • Hier vielleicht kannst du damit was anfangen. Ist zwar C++ aber sollte auch in Autoit umsetzbar sein.
    Nicht wundern einige includes sind zuviel :D

    Header

    Spoiler anzeigen


    CPP

    Spoiler anzeigen