Vergleich

  • Hallo Leute,

    ich bin neu hier im Forum und auch Anfänger im Umgang mit AutoIt.

    Ich habe ein Problem und zwar wollte ich eine Eingabe mit einer .ini Datei vergleichen.

    Meine Grundidee ist dass wenn ich z.b. a eingebe soll 61 herauskommen.

    Mein jetziges Script:

    [autoit]

    Dim $var
    $var = InputBox( "Test", "Gib hier das zu übersetzende Wort ein:")
    Dim $var1
    $var1 = IniRead( "Unicode", "section2", "", "") ;was hat es über haupt mit dem sektion auf sich ???
    MsgBox( 0, "Test", $var1)

    [/autoit]

    danke für die Hilfe im vorraus ^^ xD.

    Mfg.

    Pokersims

    2 Mal editiert, zuletzt von Pokersims (12. Dezember 2009 um 16:37)

  • Würde das nicht auch reichen?

    [autoit]

    #include <string.au3>
    ConsoleWrite(_Stringtohex("a") & @CRLF)

    [/autoit]
  • Eine IniDatei ist wie folgt aufgebaut:

    Code
    [Sektion1]
    Schluessel1=Wert1
    Schluessel2=Wert2
    [Sektion2]
    Schluessel1=Wert1
    ...

    Das heißt du greifst wie folgt darauf zu:

    [autoit]

    IniRead("pfad.ini", "Sektion2", "Schluessel1", "nicht gefunden!")

    [/autoit]


    Auf Deutsch:

    • Öffne pfad.ini
    • Gehe zu Sektion2
    • Lese Schluessel1
    • Gebe, wenn es den nicht gibt, "nicht gefunden!" zurück

    Hilft dir das weiter?

  • danke für die vielen mich sehr überweltigenden Antworten ^^


    Edit: Ich hab endlich vertig mein erstes Programm wer es mal ausprobieren will.
    Downlaod unten angehängt.

    Ich bitte auch um eine Antwort von euch :)

    Ich will kein keks ich will ein Lob bitte ^^

    2 Mal editiert, zuletzt von Pokersims (10. Dezember 2009 um 21:17)

  • Erstmal ein Hinweis: Poste doch bitte den Quellcode, es gibt viele Leute, die nicht einfach irgendwelche Anwendungen ausführen wollen. Außerdem können wir dir dann helfen, denn Quellcode noch zu verbessern.

    Ansonsten: Für den Anfang gut, du benutzt While-Schleifen, If, deklarierst Vriablen, ...
    Du könntest das ganze noch mit GUI gestalten, und die vielen If-Schleifen lassen sich besser mit Switch ersetzen. Außerdem kannst du auch das @error Flag der Inputbox abfragen, um einen Abbruch festzustellen.

  • Ok script:

    [autoit]

    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.3.0.0
    Author: Christian Marose (Pokersims)

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

    Script Function: Übersetzt Unicode in Alphabet und alphabet in Unicode

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

    #ce ----------------------------------------------------------------------------

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

    #include <String.au3>

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

    While 1
    Dim $var
    $var = InputBox("Unicode Übersetzer", "Bitte wähle eine der Optionen: Gib die 1 ein für Alphabet in Unicode oder die 2 für Unicode in Alphabet und die 3 um das Programm zu beeneden.")

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

    If $var = 1 Then
    Dim $vaf
    Dim $vad
    Dim $vas
    $vaf = _StringToHex(InputBox("Eingabe","Bitte gib den gewünschten Buchstaben oder Satz ein"))
    $vad = MsgBox(0,"Übersetzt", $vaf)
    $vas = IniRead("Unicode.ini", "Sektion2", "Schluessel1", "nicht gefunden!")
    IniWrite(@ScriptDir & "\SpeicherDaten.ini", "Alphabet - Unicode", "Übersetzung:", $vaf)
    EndIf
    If $var = 2 Then
    Dim $vaf1
    Dim $vad1
    Dim $vas1
    $vaf1 = _HexToString(InputBox("Eingabe","Bitte gib die gewünschte Zahl oder Zahlenkette ein"))
    $vas1 = MsgBox(0,"Übersetzt", $vaf1)
    $vas1 = IniRead("Unicode.ini", "Sektion2", "Schluessel1", "nicht gefunden!")
    IniWrite(@ScriptDir & "\SpeicherDaten.ini", "Unicode - Alphabet", "Übersetzung:", $vaf1)
    EndIf
    If $var = 3 Then
    Exit
    EndIf
    WEnd

    [/autoit]

    Danke ^^

    Das mit GUI (Wer weiß was das ist ???)
    hat mir Pinguin schon vorgeschlagen das mach ich mit ihm dann ^^

  • Für den Anfang schon okey ;)

    1. Du brauchst nicht jede Variable zu definieren. Solange eine Variable nur in _einer_ (1) Funktion, oder im "Hauptskript", also außerhalb einer Funktion, benutzt wird, muss sie nicht definiert werden.

    2. Wofür die Inireads und Iniwrites. Du liest zum ersten mit dieser zeile hier

    [autoit]

    $vas = IniRead("Unicode.ini", "Sektion2", "Schluessel1", "nicht gefunden!")

    [/autoit]


    einen nicht vorhanden Wert aus der Unicode.ini, den du nicht einmal weiter verarbeitest.
    Deine unicode.ini ist generell falsch aufgebaut, da sie keine Section hat, sondern nur Keys.

    Die IniWrite Zeile ist schon besser gestaltet

    [autoit]

    IniWrite(@ScriptDir & "\SpeicherDaten.ini", "Unicode - Alphabet", "Übersetzung:", $vaf1)

    [/autoit]


    Hier wird eine Section [Unicode - Alphabet] angelegt, und in den Key Übersetzung: der Wert von StringToHex(Inputbox(...)) geschrieben.
    Dumm nur, dass er natürlich jedes mal überschrieben wird. Außerdem verarbeitest du diesen geschriebenen Wert auch nicht in deinem Script.

    3. Klickt man in der Inputbox auf "abbrechen" dann geht es endlos weiter. Ein

    [autoit]

    If @error Then Exit

    [/autoit]

    ist hier Vorteilhaft.

    PS: GUI = Graphical User interface. für anfänger ist der Koda Form designer zu empfehlen (ALT+M in SciTe)

  • Um Unicode in Characters zu übersetzen kannst du die Funktionen ChrW bzw. AscW benutzen ;)
    Läuft AutoIt auf UTF16? Ich gehe mal davon aus ;)

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

  • Das sollte helfen:

    Spoiler anzeigen
    [autoit]


    #cs
    Vorlage
    [temp]
    1=3120528
    2=3120528
    3=2932864
    usw.
    #ce
    $zahl1 =IniRead ( "ini name", "temp",1, "not found" )
    $zahl2 =IniRead ( "ini name", "temp",2, "not found" )

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

    if $zahl1 = $zahl2 Then
    MsgBox(0,"","beide gleich")
    EndIf

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

    if $zahl1 <> $zahl2 Then
    MsgBox(0,"","beide gleich")
    EndIf

    [/autoit]

    LG, Lina.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Also das mit der GUI Hab ich kapiert und ein GUI Programm hab ich schon gestern von Pinguin bekommen der hat mir dann das Grundlegende erklärt.

    Das

    [autoit]

    If @error Then Exit

    [/autoit]


    hab ich bei meinem ersten Programm eingefügt.

    Hier das mit GUI erstellte Programm:

    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <String.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 608, 426, 190, 124)
    $Form1 = GUISetBkColor(0x6688FD)
    $Button1 = GUICtrlCreateButton("Exit", 0, 208, 625, 233, $WS_GROUP)
    $Button2 = GUICtrlCreateButton("Alphabet zu Unicode", 0, 0, 313, 209, $WS_GROUP)
    $Button3 = GUICtrlCreateButton("Unicode zu alphabet", 312, 0, 297, 209, $WS_GROUP)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    Exit
    Case $Button2
    Dim $vaf
    Dim $vad
    Dim $vas
    $vaf = _StringToHex(InputBox("Eingabe","Bitte gib den gewünschten Buchstaben oder Satz ein"))
    $vad = MsgBox(0,"Übersetzt", $vaf)
    $vas = IniRead("Unicode.ini", "Sektion2", "Schluessel1", "nicht gefunden!")
    IniWrite(@ScriptDir & "\SpeicherDaten.ini", "Alphabet - Unicode", "Übersetzung:", $vaf)
    Case $Button3
    Dim $vaf1
    Dim $vad1
    Dim $vas1
    $vaf1 = _HexToString(InputBox("Eingabe","Bitte gib die gewünschte Zahl oder Zahlenkette ein"))
    $vas1 = MsgBox(0,"Übersetzt", $vaf1)
    $vas1 = IniRead("Unicode.ini", "Sektion2", "Schluessel1", "nicht gefunden!")
    IniWrite(@ScriptDir & "\SpeicherDaten.ini", "Unicode - Alphabet", "Übersetzung:", $vaf1)
    EndSwitch
    WEnd

    [/autoit]
  • Das habe ich bis jetzt wieder gemachr aber das Programm gibt mir immer 35 als übersetzung von Alphabet zu Unicode aus. Warum ???

    [autoit]

    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <String.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 625, 426, 191, 122)
    $Button1 = GUICtrlCreateButton("Übersetzen", 192, 48, 217, 49, $WS_GROUP)
    $Button2 = GUICtrlCreateButton("Abspeichern", 408, 48, 217, 49, $WS_GROUP)
    $Input1 = GUICtrlCreateInput("", 192, 16, 433, 21)
    $Label1 = GUICtrlCreateLabel("Alphabet zu Unicode", 8, 16, 172, 81)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    Dim $vas
    Dim $vas1
    $vas1 = _StringToHex($Input1)
    $vas = IniRead("Unicode.ini", "Sektion2", "Schluessel1", "nicht gefunden!")
    MsgBox(0, "Übersetzung", $vas1)
    Case $Button2
    IniWrite(@ScriptDir & "\SpeicherDaten.ini", "Alphabet - Unicode", "Übersetzung:", $vas1)

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

    EndSwitch
    WEnd

    [/autoit]

    Das ist jetzt erst mal nur eins die anderen volgen sobald es geht

  • Danke Schnitzel es musste sos ein wie du es gesagt hast ich bin anfänger und das viel mir nur so ein in der hoffnung das meins richtig ist.

    ach ja noch was schnitzel ist lecker xD ^^ *ess schnitzel mit pommes*

  • ja wie kann ich es so coden das das programm nicht die datei SpeicherDaten.ini überschreibt sondern dann SpeicherDaten1 und SpeicherDaten2 und so weiter schreibt ???

    Hier mein fertiges programm:

    [autoit]

    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.3.0.0
    Author: Christian Marsoe (Pokersims)

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

    Script Function: Übersetzung vom Alphabet zum Unicode und andersherum.
    Template AutoIt script.

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

    #ce ----------------------------------------------------------------------------

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

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <String.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 627, 443, 191, 122)
    $Button1 = GUICtrlCreateButton("Übersetzen", 192, 48, 217, 49, $WS_GROUP)
    $Button2 = GUICtrlCreateButton("Abspeichern", 408, 48, 209, 49, $WS_GROUP)
    $Input1 = GUICtrlCreateInput("", 192, 16, 425, 21)
    $Label1 = GUICtrlCreateLabel("Alphabet zu Unicode", 8, 40, 172, 25)
    $Input2 = GUICtrlCreateInput("", 192, 136, 425, 21)
    $Button3 = GUICtrlCreateButton("Übersetzen", 192, 168, 217, 49, $WS_GROUP)
    $Button4 = GUICtrlCreateButton("Abspeichern", 408, 168, 209, 49, $WS_GROUP)
    $Label2 = GUICtrlCreateLabel("Unicode zu Alphabet", 8, 152, 172, 25)
    $Button5 = GUICtrlCreateButton("Exit", 192, 256, 425, 145, $WS_GROUP)
    $Label3 = GUICtrlCreateLabel("Programm beenden", 8, 312, 172, 25)
    GUISetBkColor(0x0FF503)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    Dim $vas
    Dim $vas1
    $vas1 = _StringToHex(GUICtrlRead($Input1))
    $vas = IniRead("Unicode.ini", "Sektion2", "Schluessel1", "nicht gefunden!")
    MsgBox(0, "Übersetzung", $vas1)
    Case $Button2
    IniWrite(@ScriptDir & "\SpeicherDaten.ini", "Alphabet - Unicode", "Übersetzung:", $vas1); also hier und...
    Case $Button3
    Dim $var
    Dim $var1
    $var1 = _HexToString(GUICtrlRead($Input2))
    $var = IniRead("Unicode.ini", "Sektion2", "Schluessel1", "nicht vorhanden!");...hier ;)
    MsgBox(0, "Übersetzung", $var1)
    Case $Button4
    IniWrite(@ScriptDir & "\SpeicherDaten.ini", "Alphabet - Unicode", "Übersetzung:", $var1)
    Case $Button5
    Exit
    EndSwitch
    WEnd

    [/autoit]
  • benütz doch bitte mal die spoiler (sind gleich neben den autoitquellcodesymbol)

    dann siehts in etwa so aus:

    Spoiler anzeigen
    [autoit]

    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.3.0.0
    Author: Christian Marsoe (Pokersims)

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

    Script Function: Übersetzung vom Alphabet zum Unicode und andersherum.
    Template AutoIt script.

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

    #ce ----------------------------------------------------------------------------

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

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <String.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 627, 443, 191, 122)
    $Button1 = GUICtrlCreateButton("Übersetzen", 192, 48, 217, 49, $WS_GROUP)
    $Button2 = GUICtrlCreateButton("Abspeichern", 408, 48, 209, 49, $WS_GROUP)
    $Input1 = GUICtrlCreateInput("", 192, 16, 425, 21)
    $Label1 = GUICtrlCreateLabel("Alphabet zu Unicode", 8, 40, 172, 25)
    $Input2 = GUICtrlCreateInput("", 192, 136, 425, 21)
    $Button3 = GUICtrlCreateButton("Übersetzen", 192, 168, 217, 49, $WS_GROUP)
    $Button4 = GUICtrlCreateButton("Abspeichern", 408, 168, 209, 49, $WS_GROUP)
    $Label2 = GUICtrlCreateLabel("Unicode zu Alphabet", 8, 152, 172, 25)
    $Button5 = GUICtrlCreateButton("Exit", 192, 256, 425, 145, $WS_GROUP)
    $Label3 = GUICtrlCreateLabel("Programm beenden", 8, 312, 172, 25)
    GUISetBkColor(0x0FF503)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    If Not FileExists(@ScriptDir & "\SpeicherDaten.ini") Then ; wenn die datei noch nicht existiert dann erstelle sie
    IniWrite(@ScriptDir & "\SpeicherDaten.ini", "Alphabet zu Unicode", "Anzahl", 0) ; mit schlüssel nr 1
    IniWrite(@ScriptDir & "\SpeicherDaten.ini", "Unicode zu Alphabet", "Anzahl", 0) ; und schlüssel nr 2
    EndIf

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    Dim $vas; für was brauchst du das?
    Dim $vas1
    $vas1 = _StringToHex(GUICtrlRead($Input1))
    $vas = IniRead("Unicode.ini", "Sektion2", "Schluessel1", "nicht gefunden!"); für was brauchst du das?
    MsgBox(0, "Übersetzung", $vas1)
    Case $Button2
    $temp = IniRead(@ScriptDir & "\SpeicherDaten.ini", "Alphabet zu Unicode", "Anzahl", 0) ; lese aus wieviele übersetzungen es schon gab
    IniWrite(@ScriptDir & "\SpeicherDaten.ini", "Alphabet zu Unicode", "Übersetzung" & $temp + 1, $vas1) ; schreibe in nächste übersetzungsnummer (temp + 1)
    IniWrite(@ScriptDir & "\SpeicherDaten.ini", "Alphabet zu Unicode", "Anzahl", $temp + 1) ; schreibe neue übersetzungsanzahl in die ini
    Case $Button3
    Dim $var; für was brauchst du das?
    Dim $var1
    $var1 = _HexToString(GUICtrlRead($Input2))
    $var = IniRead("Unicode.ini", "Sektion2", "Schluessel1", "nicht vorhanden!"); für was brauchst du das?
    MsgBox(0, "Übersetzung", $var1)
    Case $Button4
    $temp = IniRead(@ScriptDir & "\SpeicherDaten.ini", "Unicode zu Alphabet", "Anzahl", 0) ; lese aus wieviele übersetzungen es schon gab
    IniWrite(@ScriptDir & "\SpeicherDaten.ini", "Unicode zu Alphabet", "Übersetzung" & $temp + 1, $var1) ; schreibe in nächste übersetzungsnummer (temp + 1)
    IniWrite(@ScriptDir & "\SpeicherDaten.ini", "Unicode zu Alphabet", "Anzahl", $temp + 1) ; schreibe neue übersetzungsanzahl in die ini
    Case $Button5
    Exit
    EndSwitch
    WEnd

    [/autoit]

    das wäre meine lösung, damit schreibst du alles in eine ini ohne dass er dir etwas überschreibt