Case ersten Buchstaben?

  • Hallo,

    ich möchte, dass Namen in Zahlen umgewandelt werden , d.h. wenn z.B. ABC eingegeben wird, dann wird 123 in die Edit Box geschrieben.

    A = 1
    B = 2
    C = 3
    D = 4
    ......

    Wie kann ich es z.b. machen, dass er auf den ersten Buchstabe achtet und nicht auf das ganze Wort?

    Hier mal mein Versuch :

    Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    $Form = GUICreate("Testform", 266, 130, 192, 124)
    $Name = GUICtrlCreateLabel("Name", 8, 8, 32, 17)
    $Inputbox = GUICtrlCreateInput("", 48, 8, 121, 21)
    $Ok = GUICtrlCreateButton("Ok", 184, 8, 75, 25, $WS_GROUP)
    $Edit = GUICtrlCreateEdit("", 8, 40, 249, 81)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Ok
    Switch GUICtrlRead ($Inputbox)
    case "a"
    GUICtrlSetData($Edit,"1")
    case "b"
    GUICtrlSetData($Edit,"2")
    case "c"
    GUICtrlSetData($Edit,"3")
    Endswitch
    EndSwitch
    WEnd

    [/autoit]

    Könntet ihr mir da bitte helfen?

  • Was machst Du nach I = 9?

  • Ich hab mal schnell ne Funktion zusammengebastelt. Ist das, was du dir vorstellst?

    Spoiler anzeigen
    [autoit]

    ConsoleWrite(_CharToNum("ABC"))

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

    Func _CharToNum($sEncode)
    Local $aSplit = StringSplit(StringLower($sEncode), "")
    Local $sReturn = ""

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

    For $i = 1 To $aSplit[0]
    $iASC_Tmp = Asc($aSplit[$i])
    If $iASC_Tmp >= 97 And $iASC_Tmp <= 122 Then $sReturn &= $iASC_Tmp - 96 & ","
    Next
    Return StringTrimRight($sReturn, 1)
    EndFunc

    [/autoit]
  • Verstehe ich überhaupt nicht, da ich mit Autoit noch nicht soweit bin. Gibt es da keine einfachere Varianten, dass er z.b. den ersten Buchstabe auswählt und wenn der erste Buchstabe z.B. A ist, dass dann 1 geschrieben wird in die Edit Box?

  • Zitat

    Verstehe ich überhaupt nicht, da ich mit Autoit noch nicht soweit bin. Gibt es da keine einfachere Varianten, dass er z.b. den ersten Buchstabe auswählt und wenn der erste Buchstabe z.B. A ist, dass dann 1 geschrieben wird in die Edit Box?


    Ich glaube nicht, dass das einfacher geht. Wozu auch? Du musst die Funktion ja nicht verstehen, nur verwenden. Aber den Funktionsaufruf solltest du schon selbst in dein Script einbauen können. Ist ganz einfach ;).

  • Bekomme es eben nicht eingebaut und ich möchte es noch so erweitern, dass er alle Buchstaben in Zahlen umwandelt und nicht nur A , B und C.

  • Die Funktion wandelt alle Buchstaben des lateinischen Alphabets in ihre "Zahl" um. Ich habe ABC als Beispiel verwendet :rolleyes: ...
    Du solltest dir ein AutoIt Tutorial durchlesen ;). Links bei "Wichtige Links" findest du einiges. Besonders das Buch von peethebee unserem Admin ist empfehlenswert.

  • Hi,

    habe den gleichen Lösungsansatz wie name22 ...

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    $Form = GUICreate("Testform", 266, 130, 192, 124)
    $Name = GUICtrlCreateLabel("Name", 8, 8, 32, 17)
    $Inputbox = GUICtrlCreateInput("", 48, 8, 121, 21)
    $Ok = GUICtrlCreateButton("Ok", 184, 8, 75, 25, $WS_GROUP)
    $Edit = GUICtrlCreateEdit("", 8, 40, 249, 81)
    GUISetState(@SW_SHOW)

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

    Global $sInput
    Global $sOutput

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

    While (TRUE)
    Switch (GUIGetMsg( ))
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Ok
    $sInput = GUICtrlRead ($Inputbox)
    $sOutput = ''
    $aCharacters = StringToASCIIArray ($sInput, 0, StringLen ($sInput), 1)

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

    If (IsArray ($aCharacters)) Then

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

    For $i = 0 To UBound ($aCharacters) - 1

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

    If ($aCharacters[$i] >= 65 and $aCharacters[$i] <= 90) Then
    $sOutput &= $aCharacters[$i] - 64
    ElseIf ($aCharacters[$i] >= 97 and $aCharacters[$i] <= 122) Then
    ConsoleWrite (StringFormat ("%d\n", $aCharacters[$i]))
    $sOutput &= $aCharacters[$i] - 96
    EndIf
    Next
    GUICtrlSetData ($Edit, $sOutput)
    EndIf
    EndSwitch
    WEnd

    [/autoit]

    Gruß
    Greenhorn


  • Hi,

    ich habe einen anderen ...

    [autoit]

    $Umwandeln = "abcdefghijklmnopqrstuvwxyzäöüß"
    $Name = "Anna"
    $Ausgabe = ""
    For $I = 1 To StringLen($Name)
    $P = StringInStr($Umwandeln, StringMid($Name, $I, 1))
    If $P Then $Ausgabe &= $P & "|"
    Next
    $Ausgabe = StringTrimRight($Ausgabe, 1) ; letztes "|" löschen
    MsgBox(0, "Umwandlung", $Name & " -> " & $Ausgabe)
    Exit

    [/autoit]