1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Luke4321

Beiträge von Luke4321

  • Google Trends - Spiel

    • Luke4321
    • 22. Februar 2014 um 14:00

    Für mein Programm Surprise habe ich gestern ein Spiel geschrieben, welches die Daten von Google Trends verwendet. Man bekommt verschiedene Begriffe und muss sie in die Reihenfolge bringen, wie sie wohl am häufigsten gegooglet werden. Dann werden die richtigen Daten von Google Trends abgerufen und je richtiger man die Begriffe sortiert hat desto mehr Punkte gibt es.

    Programm
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <Array.au3>

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

    ;Maximal 6 Begriffe pro Gruppe
    Global $Words[15] = ["Aldi,Lidl|DE|A", _
    "Walmart,Aldi,Lidl,Carrefour|W|A", _
    "Tisch,Stuhl,Bett|DE|12", _
    "Mercedes,Volkswagen,Toyota,Porsche,General Motors|W|12", _
    "Google,Yahoo,Bing|W|A", _
    "Samsung,Apple,Sony,LG|W|A", _
    "der Nutella,das Nutella,die Nutella|DE|A", _
    "9gag,4chan,reddit,webfail|W|A", _
    "Germany,France,USA,Spain|W|A", _
    "drogen kaufen,virus erstellen,bank ausrauben|DE|A", _
    "Berlin,München,Köln,Hamburg|DE|A", _
    "Hose,Pullover,Hemd,Shirt|DE|A", _
    "Füller,Bleistift,Kugelschreiber|DE|A", _
    "2002,2003,2004,2005|W|12", _
    "Apfel,Birne,Orange,Banane|DE|A"]
    Global $Label[1], $Button[1][2], $History[1], $Current[1], $LabelBar[1]

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

    $GUIWordStart = 80
    $GUIWordDiff = 25

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

    $Form1 = GUICreate("Was ist trendiger? (Daten von Google Trends)", 386, 295)
    $Label1 = GUICtrlCreateLabel("Ordne die Begriffe nach der Anzahl der Suchen bei Google absteigend sortiert:", 8, 8, 373, 17)
    $Label2 = GUICtrlCreateLabel("", 8, 32, 300, 17)
    GUICtrlSetFont(-1, 8.5, 800)
    $Label4 = GUICtrlCreateLabel("Oft gesucht", 16, 56, 59, 17)
    GUICtrlSetColor(-1, 0xAAAAAA)
    $Label5 = GUICtrlCreateLabel("Selten gesucht", 16, 104, 75, 17)
    GUICtrlSetColor(-1, 0xAAAAAA)
    $Button1 = GUICtrlCreateButton("Überprüfen", 8, 128, 100, 25, $BS_DEFPUSHBUTTON)
    GUICtrlSetState(-1, $GUI_FOCUS)
    $Label6 = GUICtrlCreateLabel("Punkte: 0" & @CRLF & "Runde 1/5", 296, 32, 81, 33, $SS_RIGHT)
    $Button2 = GUICtrlCreateButton("Abbrechen", 304, 264, 75, 25)
    GUISetState(@SW_SHOW)

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

    $NewRound = True
    $Round = 0
    $Points = 0
    $MaxPoints = 0
    $Games = 0

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

    While 1
    If $NewRound = True Then ;Neue Wörter laden
    If $Round = 0 And UBound($History)-1+5 > UBound($Words) Then
    MsgBox(16, "Fehler", "Du kannst leider nicht noch mal spielen, da es leider nicht mehr genügend Wortgruppen gibt, die noch nicht vorkamen.")
    $NewRound = False
    ContinueLoop
    EndIf
    If UBound($Words) <= UBound($History) - 1 Then
    MsgBox(16, "Fehler", "Es gibt keine Wörter mehr, die noch nicht vorkamen")
    Exit
    EndIf

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

    $Round += 1
    GUICtrlSetData($Label6, "Punkte: " & $Points & @CRLF & "Runde: " & $Round & "/5")
    GUICtrlSetState($Button1, $GUI_DISABLE)

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

    ;Zufällige Wortgruppe die man noch nicht hatte
    While 1
    $Random = Random(0, UBound($Words) - 1, 1)
    If UBound($History) > 1 Then
    For $i = 1 To UBound($History) - 1
    If $Random = Int($History[$i]) Then
    ContinueLoop 2
    EndIf
    Next
    EndIf
    ExitLoop
    WEnd
    _ArrayAdd($History, $Random)
    $WordGroup = $Words[$Random]
    $Parameter = StringSplit($WordGroup, "|")
    $Word = StringSplit($Parameter[1], ",", 2)
    _ArrayShuffle($Word)
    ;GUI aktualisieren
    ReDim $Label[UBound($Word)]
    ReDim $Button[UBound($Word)][2]
    For $i = 0 To UBound($Word)-1
    $Label[$i] = GUICtrlCreateLabel($Word[$i], 8, $GUIWordStart + $i * $GUIWordDiff, 80, 17)
    $Button[$i][0] = GUICtrlCreateButton("Rauf", 90, ($GUIWordStart + $i * $GUIWordDiff) - 3, 30, 20)
    If $i = 0 Then GUICtrlSetState(-1, $GUI_DISABLE)
    $Button[$i][1] = GUICtrlCreateButton("Runter", 120, ($GUIWordStart + $i * $GUIWordDiff) - 3, 40, 20)
    If $i = UBound($Word)-1 Then GUICtrlSetState(-1, $GUI_DISABLE)
    Next
    GUICtrlSetPos($Label5, 16, $GUIWordStart + ($i-1) * $GUIWordDiff + 24)
    GUICtrlSetPos($Button1, 16, $GUIWordStart + ($i-1) * $GUIWordDiff + 48)
    $Location = "Weltweit"
    If $Parameter[2] = "DE" Then $Location = "Deutschland"
    $Time = "Seit 2004"
    If $Parameter[3] = "12" Then $Time = "In den letzten 12 Monaten"
    GUICtrlSetData($Label2, $Location & " - " & $Time)
    ;Aktuelle Anordnung speichern
    ReDim $Current[UBound($Word)]
    For $i = 0 To UBound($Word) - 1
    $Current[$i] = $i
    Next
    ;Richtige Werte von Google Trends ermitteln
    $Geo = ""
    If $Parameter[2] = "DE" Then $Geo = "&geo=DE"
    $Date = ""
    If $Parameter[3] = "12" Then $Date = "&date=today 12-m"
    $Q = ""
    For $i = 0 To UBound($Word)-1
    $Q &= URLEncode(StringLower($Word[$i])) & "%2C"
    Next
    $Q = StringTrimRight($q, 3)
    $TrendsData = BinaryToString(InetRead("http://www.google.com/trends/trendsReport?hl=de&q="&$Q&$Geo&$Date&"&cmpt=q&content=1", 1))
    $Averages = StringRegExp($TrendsData, ',\["Durchschnitt",(.*?)\]\]', 3)
    If @error Then
    MsgBox(16, "Fehler", "Google Trends-Daten konnten nicht erfasst werden :(")
    Exit
    EndIf
    $Average = StringSplit($Averages[0], ",", 2)

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

    $NewRound = False
    $Results = False
    GUICtrlSetState($Button1, $GUI_ENABLE)
    EndIf

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

    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE,$Button2
    Exit
    Case $Button1 ;Überprüfen / Nächste Runde
    If $Results = False Then
    ;Balken anzeigen
    ReDim $LabelBar[UBound($Word)]
    $Max = _ArrayMax($Average, 1)
    $PointsNow = 0
    $Last = $Max
    For $i = 0 To UBound($Word)-1
    If $i = 0 Then
    If Int($Average[$Current[$i]]) = $Last Then $PointsNow += 1
    Else
    If Int($Average[$Current[$i]]) <= $Last Then $PointsNow += 1
    EndIf
    $Last = Int($Average[$Current[$i]])
    $Percent = Round(100 / $Max * $Average[$Current[$i]])
    $LabelBar[$i] = GUICtrlCreateLabel($Percent & "%", 165, $GUIWordStart + $i * $GUIWordDiff, $Percent * 2 + 1, 13)
    GUICtrlSetBkColor(-1, 0x4444ff)
    GUICtrlSetColor(-1, 0xffffff)
    Next
    $Points += $PointsNow
    $Label3 = GUICtrlCreateLabel("Punkte in dieser Runde: " & $PointsNow, 125, $GUIWordStart + ($i-1) * $GUIWordDiff + 53)
    GUICtrlSetData($Label6, "Punkte: " & $Points & @CRLF & "Runde: " & $Round & "/5")
    If $Round < 5 Then
    GUICtrlSetData($Button1, "Nächte Runde")
    Else
    GUICtrlSetData($Button1, "Nochmal spielen")
    If $Points > $MaxPoints Then $MaxPoints = $Points
    Sleep(1000)
    MsgBox(64, "Herzlichen Glückwunsch", "Herzlichen Glückwunsch, du hast " & $Points & " Punkte erreicht!")
    EndIf
    $Results = True
    Else
    For $i = 0 To UBound($Word) - 1
    GUICtrlDelete($Label[$i])
    GUICtrlDelete($LabelBar[$i])
    GUICtrlDelete($Button[$i][0])
    GUICtrlDelete($Button[$i][1])
    Next
    GUICtrlDelete($Label3)
    GUICtrlSetData($Button1, "Überprüfen")
    $NewRound = True
    If $Round >= 5 Then
    $Round = 0
    $Points = 0
    $Games += 1
    EndIf
    EndIf
    EndSwitch

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

    For $i = 0 To UBound($Word) - 1 ;Reihenfolge ändern
    If $nMsg = $Button[$i][0] Then
    $Tmp = $Current[$i-1]
    $Current[$i-1] = $Current[$i]
    $Current[$i] = $Tmp
    GUICtrlSetData($Label[$i-1], $Word[$Current[$i-1]])
    GUICtrlSetData($Label[$i], $Word[$Current[$i]])
    ElseIf $nMsg = $Button[$i][1] Then
    $Tmp = $Current[$i+1]
    $Current[$i+1] = $Current[$i]
    $Current[$i] = $Tmp
    GUICtrlSetData($Label[$i+1], $Word[$Current[$i+1]])
    GUICtrlSetData($Label[$i], $Word[$Current[$i]])
    EndIf
    Next
    WEnd

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

    Func _ArrayShuffle(ByRef $aArray)
    $n = UBound($aArray) - 1
    While $n > 1
    $k = Random(0, $n - 1, 1)
    $tmp = $aArray[$n]
    $aArray[$n] = $aArray[$k]
    $aArray[$k] = $tmp
    $n -= 1
    WEnd
    Return True
    EndFunc ;==>_ArrayShuffle

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

    Func URLEncode($urlText)
    $urlText = StringReplace($urlText, "ä", "%C3%A4")
    $urlText = StringReplace($urlText, "ö", "%C3%B6")
    $urlText = StringReplace($urlText, "ü", "%C3%BC")
    $urlText = StringReplace($urlText, "ß", "%C3%9F")
    Return $urlText
    EndFunc

    [/autoit]


    Viel Spaß!

    Leider friert das Fenster immer kurz ein während die richtigen Daten abgerufen werden.
    Ich habe bislang nur 15 Wortgruppen, d.h. man kann das Spiel 3 Mal spielen wenn sich die Wörter nicht wiederholen sollen. Da mir die Ideen ausgehen dürft ihr gerne noch mehr Wortgruppen vorschlagen, am besten gleich im richtigen Format, also

    Code
    "Begriff1,Begriff2,...,BegriffN|W|A", _

    Begriffe durch ein Komma trennen, Groß- /Kleinschreibung/Leerzeichen innerhalb des Begriffes sind egal, W steht für Weltweit und DE für Deutschland, A für den gesamten Zeitraum (seit 2004) und 12 für die letzten 12 Monate. Beispiele stehen ja im Skript. Möglichst immer zwischen 3 und 6 Begriffen. Vielen Dank ;)

    Dateien

    Zwischenablage104.jpg 50,65 kB – 487 Downloads
  • if(@SEC==00 geht nicht

    • Luke4321
    • 18. Februar 2014 um 20:14

    == braucht man bei Autoit fast nie, außer du willst einen Stringvergleich case sensitive haben.

  • Foto jpg-Dateien mit Audio mp3-Dateien verknüpfen

    • Luke4321
    • 15. Februar 2014 um 16:21

    Ich hatte früher mal einen Fotoapperat, bei dem konnte man auch Audio-Kommentare zu seinen Fotos aufnehmen. Die wurden dann einfach mit gleichem Namen und anderem Dateityp gespeichert.
    Sollte es überhaupt noch solche Kameras geben wäre es natürlich praktisch wenn man die Dateien vom Programm dann auch so speichert, damit man das benutzen kann.

  • GrooveLoad - ein Grooveshark Downloader

    • Luke4321
    • 10. Februar 2014 um 22:00

    Ich habe die Playlist in Spotify aufgerufen und dort dann die Lieder markiert und per Drag & Drop in SciTe geschoben. Dann stehen da diese Links.

  • GrooveLoad - ein Grooveshark Downloader

    • Luke4321
    • 9. Februar 2014 um 12:15

    Das Problem der Stapelverarbeitung dürfte wohl sein, dass momentan relativ häufig der erste Treffer nicht der Beste ist :(.

  • GrooveLoad - ein Grooveshark Downloader

    • Luke4321
    • 8. Februar 2014 um 14:56

    Ich fänd's praktisch wenn man seine Spotify-Playlists in die Download-Liste droppen könnte und dann automatisch die entsprechenden Lieder von Grooveshark genommen werden.
    Ich hab's gerade mal selber versucht, ich scheitere aber daran dass das GUI das Droppen nicht erkennt :(. Ansonsten wär das aber wohl machbar. Wenn man Lieder aus Spotify z.B. in SciTE droppt, erhält man eine Liste wie:

    Code
    http://open.spotify.com/track/6g1NlCpW7fgqDnWbCCDrHl
    http://open.spotify.com/track/0XzkemXSiXJa7VgDFPfU4S
    http://open.spotify.com/track/7n6ibfsRHhCb1Ccl9Fg2CZ
    http://open.spotify.com/track/2Foc5Q5nqNiosCNqttzHof

    Die IDs kann man dann bei http://ws.spotify.com/lookup/1/?uri=…W7fgqDnWbCCDrHl einfügen und dann erhält man die Track-Daten. Die müssten dann bei Grooveshark gesucht werden und dann hinzugefügt...

  • GrooveLoad - ein Grooveshark Downloader

    • Luke4321
    • 23. Januar 2014 um 16:51
    Zitat von Cheater Dieter


    Dann hast du wohl die entsprechende Option in den Dowloadeinstellungen nicht aktiviert :P.


    Stimmt, ich hatte nur auf die Radio-Buttons geguckt in den Downloadeinstellungen, nicht auf das Häckchen. Du könntest die Radios ja entweder disablen oder anstelle der Checkbox einen weiteren Radio-Button mit "Kein Cover laden" machen.

  • GrooveLoad - ein Grooveshark Downloader

    • Luke4321
    • 23. Januar 2014 um 15:36

    Das man Titel nicht per Doppelklick hinzufügen kann finde ich auch nervig, weil ich das jedes Mal versuche :(. Vielleicht könntest du wenigstens machen, dass man sie rüberziehen kann.

    Das "Reinhören" ist zumindest bei mir total laggend. Die Musik nicht, aber die GUIs.

    Es wäre noch cool, wenn man auswählen könnte, ob Lieder überschrieben werden sollen wenn man sie schon hat oder ob sie dann einfach übersprungen werden. Und es wär schön wenn man die Länge der Lieder sehen könnte.

    Und meintest du nicht, dass jetzt fast immer Albumcover downgeloadet werden? Ich habe 3 Lieder runtergeladen, bei keinem war das Cover dabei :(.

  • GrooveLoad - ein Grooveshark Downloader

    • Luke4321
    • 2. Januar 2014 um 12:47

    Ich biete eine Fehlermeldung, die direkt das Programm beendet nach dem Start der Autoit-Datei (EXE funktioniert):

    Code
    GrooveLoad.au3 (62) : ==> Array variable subscript badly formatted.:
    Dim $SongInfo[0][0]
    Dim $SongInfo[^ ERROR


    GrooveLoad-Version 1.3
    AutoIt-Version: 3.3.8.1
    Ich hab nichts gemacht außer den Ordner extrahiert, die au3 gestartet und da die Nutzungsbedingungen bestätigt. Geht auch nach mehrmaligen Versuchen nicht. Wie gesagt, die EXE funktioniert.
    Aber ansonsten wirklich ein schönes Programm!

  • Wait for Image?

    • Luke4321
    • 27. Dezember 2013 um 12:24

    Kannst du ein paar Informationen geben, warum du dann aktuallisieren willst, wenn das Bild "leuchtet"? Von wo kommt denn das Bild? Was hat das mit deinem E-Mail-Programm zu tun?
    Was macht _ImageSearch()?

  • Lautstärke von Aufgenommenem erhöhen

    • Luke4321
    • 22. Dezember 2013 um 23:07

    Hi,

    die Bass UDF macht einen sehr guten Eindruck, da man damit ja scheinbar fast alles machen kann, allerdings scheitere ich dann beim umsetzen. Ich habe aber auch nicht wirklich viel Dokumentation gefunden, das erschwert das ganze vorallem bei der Menge an Funktionen doch erheblich.
    Mir geht es darum, dass ich etwas von meiner Soundkarte aufnehmen will und dann als Datei abspeichern. Das funktioniert soweit (ich habe dieses Beispiel von eukalyptus verwendet), allerdings sind die aufgenommenen Sachen immer viel leiser, wenn ich sie direkt danach wieder abspiele (wenn ich z.B. mit Audacity aufnehme gibt's das Problem aber auch). Vielleicht hängt die aufgenommene Lautstärke mit der Systemlautstärke zusammen. Bei einer Systemlautstärke von 100% würde das dann vielleicht funktionieren, allerdings fallen mir dann die Ohren ab :P).
    Also meine Frage ist, wie erhöhe ich die Lautstärke von dem Aufgenommenen? Nach meiner Theorie also bei einer Systemlautstärke von 33% verdreifachen etc. Als Skript einfach das oben verlinkte verwenden.

    Danke

  • Case $button abbrechen ohne das Programm zu schließen?

    • Luke4321
    • 7. Dezember 2013 um 22:11

    Mit ContinueLoop springt man wieder an den Anfang einer Schleife, hier also der While-Schleife.

  • Text in Zahlensysteme Umwandler/Verschlüsseler

    • Luke4321
    • 7. Dezember 2013 um 14:22

    Hi,
    bei diesem Programm kann man einen Text eingeben, welcher dann in ein beliebiges Zahlensystem umgewandelt wird. Der Witz ist, das man festlegt, welche Zeichen für die Zahlensysteme verwendet werden sollen (z.B. normalerweise: "0" und "1"; selber festgelegt: "x" und "y").
    Dadurch wird aus dem Satz "Hallo Autoit.de!" mit dem Zeichensatz "oO0": "oo00oooOoO0OoOOooooOOooooOOoOoooOoO0oo0Oo0oOOOoooOOo00oOOoOooOo00ooOOo00ooO0oOoOo0oOoOo0o0ooOo0o"

    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    Das ganze geht auch rückgängig, dafür braucht der andere aber logischerweise den gleichen Zeichensatz. Dadurch kann man auch Texte verschlüsseln, da man ohne den Zeichensatz die Reihenfolge ausprobieren muss, was bei längeren Zeichensätzen schwer wird. Wenn man a-z verwendet muss man auch erstmal darauf kommen, dass diese Verschlüsselungsmethode gewählt wurde.

    Die Funktion um zwischen den Zahlensystemen zu wechseln ist von eukalyptus.

    Code
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <Array.au3>

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

    $HighestASCII = 255

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

    $Form1 = GUICreate("Text-Umwandler", 615, 238)
    $Label1 = GUICtrlCreateLabel("Mit diesem Programm lassen sich Texte in diverse Zahlensysteme (z.B. Binär) umwandeln. Anstelle der üblichen Zeichen (z.B. 0, 1) legt man aber unten eigene Zeichen fest. Dadurch lassen sich auch Texte verschlüsseln.", 8, 8, 597, 33)
    $Label2 = GUICtrlCreateLabel("Normaler Text:", 8, 40)
    $Edit1 = GUICtrlCreateEdit("Beispiel", 8, 64, 297, 89, BitOR($ES_AUTOVSCROLL,$ES_WANTRETURN,$WS_VSCROLL,$ES_MULTILINE))
    $Edit2 = GUICtrlCreateEdit("", 312, 64, 297, 89, BitOR($ES_AUTOVSCROLL,$ES_WANTRETURN,$WS_VSCROLL,$ES_MULTILINE))
    $Label3 = GUICtrlCreateLabel("Umgewandelter Text:", 312, 40)
    $Button1 = GUICtrlCreateButton("Umwandeln >", 224, 160, 75, 25, $BS_DEFPUSHBUTTON)
    $Button2 = GUICtrlCreateButton("< Umwandeln", 320, 160, 75, 25)
    $Label4 = GUICtrlCreateLabel("Zu verwendene Zeichen:", 8, 194)
    $Input1 = GUICtrlCreateCombo("lo", 136, 192, 129, 21)
    GUICtrlSetData(-1, "oO0|"&'"'&"'|´`'"&'"'&"^°|"&ChrW(9612)&ChrW(9608)&"|"&ChrW(9472)&ChrW(9474)&ChrW(9484)&ChrW(9488)&ChrW(9492)&ChrW(9496)&ChrW(9500)&ChrW(9508)&ChrW(9516)&ChrW(9524)&ChrW(9532)&"|"&ChrW(9834)&ChrW(9835)&"|,;.:|01|0123456789abcdef")
    $Button3 = GUICtrlCreateButton("Beenden", 528, 208, 83, 25)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE, $Button3
    Exit
    Case $Button1
    $Input = GUICtrlRead($Edit1)
    $Letters = GUICtrlRead($Input1)
    If Not _CheckKey($Letters) Then
    ContinueLoop
    EndIf

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

    GUICtrlSetData($Edit2, _BaseEncrypt($Input, $Letters))
    Case $Button2
    $Input = GUICtrlRead($Edit2)
    $Letters = GUICtrlRead($Input1)
    If Not _CheckKey($Letters, True) Then
    ContinueLoop
    EndIf

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

    If StringLen($Letters) = 0 Then
    If 7 = MsgBox(52,"Kein Schlüssel angegeben","Du hast zum entschlüsseln keine Zeichen angegeben. Es können automatisch alle möglichen Kombinationen ermittelt werden, das dauert aber je nach Text eine Weile." & @CRLF & @CRLF & "Fortfahren?") Then
    ContinueLoop
    EndIf
    ToolTip("Mögliche Schlüssel durchprobieren...", @DesktopWidth / 2, @DesktopHeight / 2, "Bitte warten...", 1, 6)
    GUICtrlSetData($Edit1, _GetKey($Input, $Letters))
    ToolTip("")
    Else
    GUICtrlSetData($Edit1, _BaseDecrypt($Input, $Letters))
    EndIf
    EndSwitch
    WEnd

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

    Func _GetKey($Input, $Letters)
    ;Unterschiedliche Buchstaben finden
    Local $LettersSplitted[1] = [""]
    For $i = 1 To StringLen($Input)
    $Current = StringMid($Input, $i, 1)
    For $j = 1 To UBound($LettersSplitted) - 1
    If $LettersSplitted[$j] == $Current Then
    ContinueLoop 2
    EndIf
    Next
    _ArrayAdd($LettersSplitted, $Current)
    Next

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

    ;Kombinationsmöglichkeiten
    _ArrayDelete($LettersSplitted, 0)
    $Combinations = _ArrayPermute($LettersSplitted)

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

    ;Ausprobieren
    Local $Result[1], $DecryptedAll[1]
    For $i = 1 To $Combinations[0]
    $Decrypted = _BaseDecrypt($Input, $Combinations[$i])
    $Match = StringInStr($Decrypted, Chr(0), Default, Default, Default, StringLen($Decrypted))
    If Not $Match Then _ArrayAdd($Result, $Decrypted)
    Next

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

    If UBound($Result) > 1 Then
    $Output = "Das sind die möglichen Ergebnisse (" & UBound($Result) - 1 & "):" & @CRLF
    For $i = 1 To UBound($Result) - 1
    $Output &= @CRLF & "_____________" & @CRLF & StringReplace($Result[$i], Chr(0), "")
    Next
    Else
    Return "Keine möglichen Ergebnisse gefunden. Wahrscheinlich wurde der Text mit einem anderen Verfahren verschlüsselt."
    EndIf
    Return $Output
    EndFunc

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

    Func _BaseDecrypt($Input, $Letters)
    $LettersSplitted = StringSplit($Letters, "")
    $Base = StringLen($Letters)

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

    $CharLen = StringLen(_TranslateBase($HighestASCII, 10, $Base))

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

    $Normal = ""
    For $i = 1 To StringLen($Input)
    $Current = StringMid($Input, $i, 1)
    For $u = 1 To $Base
    If $Current == $LettersSplitted[$u] Then
    $BaseChar = _TranslateBase($u - 1, 10, $Base)
    $Normal &= $BaseChar
    ContinueLoop 2
    EndIf
    Next
    Next

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

    $Output = ""
    For $i = 0 To StringLen($Normal) / $CharLen
    $CurrentBlock = StringMid($Normal, 1 + $i * $CharLen, $CharLen)
    $CurrentBlockCode = _TranslateBase($CurrentBlock, $Base, 10)
    $Output &= Chr($CurrentBlockCode)
    Next

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

    Return $Output
    EndFunc

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

    Func _BaseEncrypt($Input, $Letters)
    Global $HighestASCII
    $LettersSplitted = StringSplit($Letters, "")
    $Base = StringLen($Letters)

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

    $CharLen = StringLen(_TranslateBase($HighestASCII, 10, $Base))

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

    $Output = ""
    For $i = 1 To StringLen($Input)
    $Current = StringMid($Input, $i, 1)
    $CurrentNew = _TranslateBase(Asc($Current), 10, $Base)
    While StringLen($CurrentNew) < $CharLen
    $CurrentNew = "0" & $CurrentNew
    WEnd

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

    For $u = 1 To StringLen($CurrentNew)
    $CurrentNum = StringMid($CurrentNew, $u, 1)
    For $x = 0 To $Base-1
    $BaseChar = _TranslateBase($x, 10, $Base)
    If $CurrentNum == $BaseChar Then
    $Output &= $LettersSplitted[$x + 1]
    ContinueLoop 2
    EndIf
    Next
    Next
    Next
    Return $Output
    EndFunc

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

    Func _CheckKey($Input, $Decrypt = False)
    If $Decrypt And StringLen($Input) = 0 Then Return True
    If StringLen($Input) > 36 Or StringLen($Input) < 2 Then
    MsgBox(16, "Fehler", "Du musst zwischen 2 und 36 Zeichen als Schlüssel verwenden.")
    Return False
    EndIf
    For $i = 1 To StringLen($Input)-1
    For $u = $i+1 To StringLen($Input)
    If StringMid($Input, $i, 1) == StringMid($Input, $u, 1) Then
    MsgBox(16, "Fehler", "Du darfst im Schlüssel keine Zeichen doppelt verwenden!")
    Return False
    EndIf
    Next
    Next
    Return True
    EndFunc

    [/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]

    Dateien

    Zwischenablage102.jpg 75,83 kB – 462 Downloads
  • Audio Recorder MP3/OGG/WAV incl. Schedule & AGC

    • Luke4321
    • 22. November 2013 um 16:32

    Hab ich versucht mit dem hier, weil das aber nicht geklappt hat moechte ich jetzt gucken was hier anders ist.

  • Audio Recorder MP3/OGG/WAV incl. Schedule & AGC

    • Luke4321
    • 22. November 2013 um 13:36

    Das ist glaube ich genau das, was ich suche, allerdings geht der Downloadlink nicht :(. Bitte einmal neu irgendwo hochladen.

  • Wikipedia-Run

    • Luke4321
    • 12. Oktober 2013 um 13:47

    Mist^^. Aber du verstehst vermutlich, was ich meine.

  • Wikipedia-Run

    • Luke4321
    • 10. Oktober 2013 um 22:52

    Jo, das mit der DDR ist mir auch schon aufgefallen. Du kannst es ja einfach in der Liste der durch was anderes ersetzen oder so.

    Du willst auch einen zufälligen Artikel als Ziel? Gut, dann hier ein Beispiel: Versuche mal, von "Museum Moderner Kunst (Passau)" nach "Löwengrube bei Altdorf" zu kommen. Sonst siehe Post 7.

  • GUICtrlSetPos-Problem

    • Luke4321
    • 4. Oktober 2013 um 17:24

    Ich hatte noch 3.3.6.0 und hab jetzt geupdated. Nun funktioniert es.

  • GUICtrlSetPos-Problem

    • Luke4321
    • 4. Oktober 2013 um 12:13

    Dieses Script soll die Häufigkeit von Buchstaben in einem Text zählen:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <EditConstants.au3>

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

    Dim $Buchstaben[30]=["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","ä","ö","ü","ß"]
    Dim $Letters[UBound($Buchstaben)]

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

    $Form1 = GUICreate("Buchstabenhäufigkeit", 450, 450)
    $Label1 = GUICtrlCreateLabel("Gib einen Text ein, um die Häufigkeit der Buchstaben zu zählen:", 8, 8, 307, 17)
    Dim $Label[UBound($Buchstaben)]
    Dim $LabelBg[UBound($Buchstaben)]
    For $i=0 To UBound($Buchstaben)-1
    $LabelBg[$i]=GUICtrlCreateLabel("",335,8+$i*14,1,13)
    GUICtrlSetBkColor(-1,0x9999ff)
    $Label[$i]=GUICtrlCreateLabel("", 336, 8+$i*14,100,14)
    GUICtrlSetBkColor(-1,$GUI_BKCOLOR_TRANSPARENT)
    Next
    $Edit1 = GUICtrlCreateEdit("", 8, 32, 305, 345,BitOR($ES_AUTOVSCROLL,$ES_WANTRETURN,$WS_VSCROLL,$ES_MULTILINE))
    GUISetState(@SW_SHOW)

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

    $OldText=""

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

    While 1
    $NewText=GUICtrlRead($Edit1)
    If $NewText<>$OldText Then
    $OldText=$NewText
    For $i=0 To UBound($Buchstaben)-1
    $Letters[$i]=0
    Next
    Do
    $Letter=StringLeft($NewText,1)
    For $i=0 To UBound($Buchstaben)-1
    If $Buchstaben[$i]=$Letter Then
    $Letters[$i]+=1
    EndIf
    Next
    $NewText=StringTrimLeft($NewText,1)
    Until StringLen($NewText)=0
    $LettersSum=0
    For $i=0 To UBound($Buchstaben)-1
    $LettersSum+=$Letters[$i]
    Next
    For $i=0 To UBound($Buchstaben)-1
    GUICtrlSetData($Label[$i],StringUpper($Buchstaben[$i])&": "&$Letters[$i])
    GUICtrlSetPos($LabelBg[$i],335,8+$i*14,$Letters[$i]*(100/$LettersSum),13) ;<<<<<<<<<<<<<< Problem-Zeile
    Next
    EndIf
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    [/autoit]


    Mit $LabelBg will ich ein Balkendiagramm der Häufigkeit anzeigen lassen. Allerdings verhalten sich die Breiten der Balken nicht korrekt. Warum?

  • Zwischen 2 Farben Farbübergangsfarben ermitteln

    • Luke4321
    • 28. September 2013 um 21:35

    Merci. Das BitShift verstehe ich aber überhaupt nicht.

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™