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. Weisgarnix

Beiträge von Weisgarnix

  • "Lesbarkeit auf dem Bildschirm erleichtern" zerstört meine GUI

    • Weisgarnix
    • 25. Oktober 2016 um 09:00
    Zitat von misterspeed

    Ähm hast du dir die Beispielscripte aus dem Link von UEZ angeschaut? Die dort verwendete Funktion _GDIPlus_GraphicsGetDPIRatio() Gibt dir das abweichende Verhältnis der DPI zum Standardwert. Damit kannst du die korrekte Schriftgröße wie im Beispiel berechnen.

    Solltest du also neben der Standard GUI Schriftgröße noch weitere vom Standard abweichende Controls nutzen dann verwende dort eben ebenfalls den ermittelten DPI Abweichungsfaktor.

    Das dachte ich mir auch, habs aber nicht hinbekommen :(

    *Edit*: Habs doch noch hinbekommen: Search and Replace GUICtrlSetFont(-1, 12, mit GUICtrlSetFont(-1, 12 * _GDIPlus_GraphicsGetDPIRatio()[0], hat halbwegs funktioniert. Warum halbwegs? Das "Fett" sieht anders aus und ein ganz kleines Bisschen passts von der Skalierung nicht, aber ich habe die entsprechenden Labels um wenige Pixel länger gemacht, nun passt alles - dass das Fette anders ausschaut, ist mir egal.
    GUISetFont($MainForm, 12.0 * _GDIPlus_GraphicsGetDPIRatio()[0]) verwende ich nun gar nicht mehr, sondern mache es überall über GUICtrlSetFont(-1, 12 * _GDIPlus_GraphicsGetDPIRatio()[0], ...

    Zitat von Bitnugger

    Hier mal meine Version von GetDPI()...

    Deine Demo funktioniert bei normaler DPI gut, bei 125% sieht die GUI aber wie folgt aus:

    Spoiler anzeigen

    2016-10-25 08_57_17-My GUI.png


    Das ist ja aber genau, was ich zu verhindern versuche, dass die Texte bei anderer DPI-Einstellungen nicht mehr richtig/vollständig angezeigt werden.

  • "Lesbarkeit auf dem Bildschirm erleichtern" zerstört meine GUI

    • Weisgarnix
    • 21. Oktober 2016 um 07:39

    Vielen Dank euch beiden! Im Großen und Ganzen klappts damit!
    Zwei Kleinigkeiten habe ich aber noch: Wie kann ich nun ein einzelnes Label z.B. unterstrichen darstellen oder fett?
    Wende ich GUICtrlSetFont an, muss ich eine Größe angeben und diese Controls werden dann vom GDI-Workaround nicht mehr erfasst :(

    Danke euch und LG,
    Weisgarnix

    *Edit*: Ich versuche es momentan als alternativen Lösungsansatz, Die Manifest-Daten per ResourceHacker anzupassen, allerdings passiert da rein gar nix. Bin ich auch zu blöd für :(

  • "Lesbarkeit auf dem Bildschirm erleichtern" zerstört meine GUI

    • Weisgarnix
    • 20. Oktober 2016 um 17:09

    Hallo zusammen.

    Ich habe folgendes Problem: Wenn ein User diese Einstellung hier auf einen anderen Wert als 100% einstellt, ist meine GUI vollkommen hinüber:
    [Blockierte Grafik: http://i.imgur.com/phLQy5A.png]

    Lässt sich das irgendwie verhindern, dass diese Einstellung für meine GUI greift? Oder lässt sich mit halbwegs einfachen Mitteln bewerkstelligen, dass sich alles an meiner GUI daran anpasst?

    Danke euch schonmal und LG,
    Weisgarnix

  • Liegen zwei Partitionen auf gleicher Festplatte?

    • Weisgarnix
    • 11. August 2016 um 13:46

    Die Drive... - Befehle reichen dafür nicht. Scriptomatic schließt sich bei mir, wenn ich z.B. DiskPartition aus Microsoft COM auswähle.
    Aber ich rbauche nicht mehr unbedingt eine Antwort auf die Frage.

    Hintergrund: Ich möchte die Systemfestplatte inkl. ggf. vorhandener Datenpartition per Bitlocker verschlüsseln lassen.
    Ich habe mich aber nun dazu entschlossen, einfach C zu verschlüsseln und D nur dann zu verschlüsseln, wenn der DriveType Fixed ist.
    Das sollte so auch in Ordnung sein denk ich mal.

    Thx und LG Weisgarnix

  • Liegen zwei Partitionen auf gleicher Festplatte?

    • Weisgarnix
    • 11. August 2016 um 10:29

    Hallo zusammen.

    Ich möchte irgendwie ermitteln, ob zwei Paritionen (C: und D:) auf der gleichen Festplatte liegen.
    Hat jemand eine Idee, wie ich das anstellen könnte?

    Meine beste Idee bislang ist mit Diskpart zu versuchen, die Infos auszulesen und dann per Autoit zu versuchen, die Infos aus Diskpart auf die Laufwerke zu "matchen", welches Laufwerk wohl anhand der Größe welches sein könnte.
    Die Lösung wäre allerdings unglaublich schlecht, da sie sich auf die deutsche Ausgabe von Diskpart beziehen würde und somit z.B. mit einem englischen Betriebssystem schon nicht mehr funktioniert...

    Vielen Dank euch schonmal und liebe Grüße,
    Weisgarnix

  • Nur erste Ping-Abfrage im Script funktioniert

    • Weisgarnix
    • 20. Februar 2014 um 13:54

    Hi Oscar.

    @CRLF

    Daran lags! Danke dir! ;)

  • Splash Ladebildschirm (ähnlich wie bei Office 2010)

    • Weisgarnix
    • 20. Februar 2014 um 11:34

    Leider funktioniert keiner der Links mehr :(

  • Nur erste Ping-Abfrage im Script funktioniert

    • Weisgarnix
    • 20. Februar 2014 um 11:15

    Erstmal danke für die raschen Rückmeldungen.

    Für die Verwendung der While-Schleife sag ich Sry, hatte die Syntax der For-Schleife nicht im Kopf. While ist außerdem mächtiger als For, aber die Diskussion soll hier lieber nicht losgetreten werden :D

    Leider klappt auch der Code von kra88 nicht besser als meiner. Das Array ist korrekt (am Ende eine Leerzeile, die bearbeite ich mit meinem Code einfach nicht und gut is).
    Selbes Ergebnis: Der Ping für die erste Abfrage funktioniert, der Rest ist angeblich offline - ohne, dass ich dafür einen Grund finde. Ich kann noch versuchen, über das @Error-Flag was rauszufinden.
    Verwende AutoIt in Version 3.3.8.1 unter Windows 8 x64 mit aktuellen Sicherheitsupdates.

  • Nur erste Ping-Abfrage im Script funktioniert

    • Weisgarnix
    • 20. Februar 2014 um 10:48

    Hallo zusammen.

    Ich habe mir ein kleines script geschrieben, das mir aus einer csv-Datei PC-Namen ausliest. anschließend speichert er in einer separaten Textdatei Informationen dazu, ob die Geräte gerade an sind oder nicht:

    [autoit]

    $handle=FileOpen("Mappe2.csv")
    $content=FileRead($handle)
    FileClose($handle)
    $handle=FileOpen("ausgabe.txt", 10)
    $array=StringSplit($content, Chr(13))
    $i=1
    While ($i<$array[0])
    $returnvalue=Ping($array[$i], 200)
    If $returnvalue=0 Then
    FileWriteLine($handle, "Host " & $array[$i] & " seems to be offline.")
    Else
    TCPStartup()
    FileWriteLine($handle, "Host " & $array[$i] & " seems to be online (Response time: " & $returnvalue & "ms). IP is " & TCPNameToIP($array[$i]))
    TCPShutdown()
    EndIf
    $i=$i+1
    Sleep(100)
    WEnd
    FileClose($handle)

    [/autoit]

    Vollkommen Minimalprinzip, keine Frage.
    Allerdings funktioniert nur der erste Ping korrekt, alle weiteren PCs in der Liste seien angeblich offline.
    Stimmt aber nicht, nehme ich einen aus der Liste und Pinge diesen in cmd, gehts problemlos. Also was mache ich falsch?

    Vielen Dank und viele Grüße,
    Weisgarnix

  • Skincrafter - AutoIT - Skins v1/v2

    • Weisgarnix
    • 19. August 2013 um 09:30

    Scheint leider unter Windows 8 nicht mehr zu tun, schade :(
    Hat jemand eine Idee, warum das so ist?

  • Ordner umbenennen mit DirMove funktioniert nicht

    • Weisgarnix
    • 1. Mai 2013 um 13:28

    RR04: Wenn ich den Backslash noch anfüge, verschiebe ich den Ordner in einen Unterordner des Ausgangsordners namens "_temp", ich will ja aber dem Ordner nur "_temp" anhängen, ihn also umbenennen und nicht wirklich verschieben...
    Fliwatt: Jop, das ist die UDF, mit der ich es bereits versucht habe. Klappt genauso wenig, sprich: gar nicht :/
    Ich hatte die Hoffnung, dass das ein Bug ist, der bekannt ist, aber kann mir das eigentlich nicht vorstellen :(
    Weitere Vorschläge gerne ;)

    *Edit*: Ich habs gefunden.

    Ich hatte es eigentlich schon gestern Abend durchsucht gehabt, ob es das sein könnte. Aber naja, gestern Abend war eigentlich nachts um halb 3. Bin dann ja auch pennen gegangen^^
    Der Fehler ist mir bewusst geworden, nachdem ich nochmal debugged habe per MsgBox (thx RR04). Ich habe schlichtweg den falschen Ordner umbenannt, in meinem Fall Desktop anstatt eines Ordners auf dem Desktop.
    Ich bitte wegen dieser Peinlichtkeit um Entschuldigung und danke nochmal allen Helfenden hier!

  • Ordner umbenennen mit DirMove funktioniert nicht

    • Weisgarnix
    • 1. Mai 2013 um 11:21

    Hallo zusammen.

    Woran kann es liegen, dass das Umbenennen eines Ordners nicht funktioniert?
    Mache das bekanntermaßen mithilfe von DirMove. Hatte auch schon eine UDF aus dem Forum hier getestet, tat auch nicht.
    Ich habe hier Autoit v3.3.8.1 (lt. Hilfedatei) in Verwendung.

    [autoit]

    DirMove($Folder, $Folder&"_temp", 1)

    [/autoit]


    $Folder ist ein vollständiger Ordnerpfad.
    Der Ordner mit "_temp" existiert noch nicht.
    Das ganze spielte sich in den Tests z.B. auf dem Desktop ab - alle Berechtigungen hat das, Desktop ist für den Admin, mit dem ich das Script zwischenzeitlich ausgeführt hatte, nicht schreibgeschützt oder so was. Habe keine Ahnung, woran das liegen soll. Möchte mir aber sparen, den Ordner kopieren und löschen zu müssen, um ihn hinterher wieder kopieren und wieder löschen zu müssen. Die temporäre Umbenennung wäre mir deutlich lieber.

    Danke schonmal! ;)

  • Finde den Fehler in einfachem Verschlüsselungstool nicht

    • Weisgarnix
    • 29. November 2012 um 21:47

    Wuhu! Hatte zuerst darauf getippt, dass da was mit meiner Benutzung von _ArraySearch nicht stimmt. Aber das mache ich alles richtig.
    Fehler lag hier:

    [autoit]

    $position=_ArraySearch($biglettersarray, $letters[$everysingleletter], 1, 26, 1) ; Wir sollten das Array schon bis zum Ende und nicht bis zu $letterssize durchsuchen!!!
    ; Aktuelles Zeichen kein Großbuchstabe
    If $position=-1 Then
    ; Ermitteln der aktuellen Position des Buchstaben im Kleinbuchstabenarray
    $position=_ArraySearch($smalllettersarray, $letters[$everysingleletter], 1, 26, 1) ; Same Story hier auch...^^

    [/autoit]


    Ergebnis bei Hallo!:
    Exiil!C
    Das komplette Script, nun kann es auch zeilenumbrüche, falls es jemand auch noch gebrauchen kann:

    Spoiler anzeigen
    [autoit]

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

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

    AutoIt Version: 3.3.9.4 (beta)
    Author: myName

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

    Script Function:
    Template AutoIt script.

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

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

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

    ; Script Start - Add your code below here

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

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <Array.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 615, 438, 192, 124)
    $Edit1 = GUICtrlCreateEdit("", 16, 16, 577, 369)
    GUICtrlSetData(-1, "Edit1")
    $Button1 = GUICtrlCreateButton("Button1", 232, 408, 105, 25)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    Dim $smalllettersarray[27]
    Dim $biglettersarray[27]

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

    $smalllettersarray[1]="a"
    $smalllettersarray[2]="b"
    $smalllettersarray[3]="c"
    $smalllettersarray[4]="d"
    $smalllettersarray[5]="e"
    $smalllettersarray[6]="f"
    $smalllettersarray[7]="g"
    $smalllettersarray[8]="h"
    $smalllettersarray[9]="i"
    $smalllettersarray[10]="j"
    $smalllettersarray[11]="k"
    $smalllettersarray[12]="l"
    $smalllettersarray[13]="m"
    $smalllettersarray[14]="n"
    $smalllettersarray[15]="o"
    $smalllettersarray[16]="p"
    $smalllettersarray[17]="q"
    $smalllettersarray[18]="r"
    $smalllettersarray[19]="s"
    $smalllettersarray[20]="t"
    $smalllettersarray[21]="u"
    $smalllettersarray[22]="v"
    $smalllettersarray[23]="w"
    $smalllettersarray[24]="x"
    $smalllettersarray[25]="y"
    $smalllettersarray[26]="z"

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

    $biglettersarray[1]="A"
    $biglettersarray[2]="B"
    $biglettersarray[3]="C"
    $biglettersarray[4]="D"
    $biglettersarray[5]="E"
    $biglettersarray[6]="F"
    $biglettersarray[7]="G"
    $biglettersarray[8]="H"
    $biglettersarray[9]="I"
    $biglettersarray[10]="J"
    $biglettersarray[11]="K"
    $biglettersarray[12]="L"
    $biglettersarray[13]="M"
    $biglettersarray[14]="N"
    $biglettersarray[15]="O"
    $biglettersarray[16]="P"
    $biglettersarray[17]="Q"
    $biglettersarray[18]="R"
    $biglettersarray[19]="S"
    $biglettersarray[20]="T"
    $biglettersarray[21]="U"
    $biglettersarray[22]="V"
    $biglettersarray[23]="W"
    $biglettersarray[24]="X"
    $biglettersarray[25]="Y"
    $biglettersarray[26]="Z"

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    Case $Button1
    ClipPut(_encrypt(GUICtrlRead($Edit1)))
    EndSwitch
    WEnd

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

    Func _encrypt($input)
    ; Output-Variable, wird nach und nach gefüllt...
    $output=""
    ; Es werden einzelne Wörter verschlüsselt.
    $linefeeds=StringSplit($input, @LF)
    For $currentlinefeed=1 To $linefeeds[0]
    $words=StringSplit($linefeeds[$currentlinefeed], " ")
    ; Wortlänge in einer normalen Variable zur einfacheren Verwendung
    $wordssize=$words[0]
    ; Für jedes Wort, tue folgendes:
    For $wordscount=1 To $wordssize
    ; Zerlege das Wort in seine einzelnen Buchstaben/Zeichen
    $letters=StringSplit($words[$wordscount], "")
    ; Anzahl der Zeichen in einer normalen Variable zur einfacheren Verwendung
    $letterssize=$letters[0]
    ; Verschlüsselungszahl (Um wie viel die Buchstaben dieses Wortes im Alphabet verschoben sind)
    $key=Random(1, 26, 1)
    ; Für jeden einzelnen Buchstaben / jedes einzelne Zeichen, tue folgendes:
    For $everysingleletter=1 To $letterssize
    ; Standartwertsetzung...
    $currentletterisbig=False
    $currentletterissmall=False
    ; Ermitteln der aktuellen Position des Buchstaben im Großbuchstabenarray
    $position=_ArraySearch($biglettersarray, $letters[$everysingleletter], 1, 26, 1)
    ; Aktuelles Zeichen kein Großbuchstabe
    If $position=-1 Then
    ; Ermitteln der aktuellen Position des Buchstaben im Kleinbuchstabenarray
    $position=_ArraySearch($smalllettersarray, $letters[$everysingleletter], 1, 26, 1)
    ; Falls im Kleinbuchstabenarray auch nicht vorhanden, dann...
    If $position=-1 Then
    ; ... lassen wir die oben vergebenen Default-Werte so stehen
    Else
    ; Falls vorhanden, setzen wir die Variable einfach auf True
    $currentletterissmall=True
    EndIf
    Else
    ; Test für Großbuchstabe war positiv, also setzen wir die Variable auf True
    $currentletterisbig=True
    EndIf
    ; Initialisierung, wie oft schon verschoben wurde
    $slide=0
    ; Solange noch nicht oft genug verschoben wurde, tue folgendes:
    While $slide<$key
    ; Wir ändern den Positionswert um 1 ...
    $position-=1
    ; Positionsumsetzung, falls die aktuelle Position 0 wäre...
    If $position=0 Then
    $position=26
    EndIf
    ; ... und merken uns, dass wir ihn um eine weitere Position verändert haben
    $slide+=1
    WEnd
    ; Nun kommt die Auswertung der obigen Verschiebereien...
    If $currentletterisbig Then
    $output&=$biglettersarray[$position]
    EndIf
    If $currentletterissmall Then
    $output&=$smalllettersarray[$position]
    EndIf
    ; Falls das aktuelle Zeichen in keinem der beiden Arrays gefunden wurde, machen wir gar nichts mit ihm
    If Not ($currentletterisbig or $currentletterissmall) Then
    $output&=$letters[$everysingleletter]
    EndIf
    Next
    ; Am Ende des Wortes hängen wir den Großbuchstaben dran, der an §key-Stelle im Alphabet steht...
    $output&=$biglettersarray[$key]&" "
    ; Das widerholen wir nun noch mit den anderen Wörtern...
    Next
    ; Hier müssen wir den LineFeed wieder hinzu fügen...
    $output&=@CRLF
    Next

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

    ; Und am Ende geben wir das Ergebnis der Bastelei zurück...
    Return $output
    EndFunc

    [/autoit]


    Sry, dass hier nun welche vielleicht unnötig Zeit investiert haben, hatte vor dem posten schon eine halbe Stunde lang den Code durchforstet, aber erst eben fiel es mir wie Schuppen von den Augen...

  • Finde den Fehler in einfachem Verschlüsselungstool nicht

    • Weisgarnix
    • 29. November 2012 um 21:35

    Du hast zuerst die Position verändert (Sollte ja zu Beginn nicht 0 sein, also geht das) und dann erst geprüft, ob es nun auf 0 stünde.
    Sollte ergal sein, in welcher Reihenfolge das geschieht, und leider sieht Autoit das genauso:
    Ergebnis bei Eingabe "Hallo!": Hcllo!X
    Das c und das X stimmen, der Rest leiter nicht :(

  • Finde den Fehler in einfachem Verschlüsselungstool nicht

    • Weisgarnix
    • 29. November 2012 um 20:50

    Hallo miteinander.
    Ich bin Leiter bei den Pfadfindern und habe mit meinen Kids (7-10 Jahre alt) vor ein paar Wochen Geheimschriften in der Gruppenstunde gemacht. Das ganz einfache "um x Buchstabven verschieben"-Teil.
    Das hat den Kids gut gefallen, und ich wollte eine Ausschreibung für eine anstehende Veranstaltung nun verschlüsselt in der Gruppenstunde rausgeben. Damit das ganze ein bisschen interessanter ist, will ich die Verschiebung wortweise mit einem zufällig gewählten Wert machen. "Mein" Algorithmus müsste anhand des kommentierten Quellcodes verständlich sein. Allerdings bin ich mit dem Output nicht so glücklich, funktioniert nicht so ganz wie gewünscht :(
    Findet jemand zufällig den Fehler? Syntaxfehler waren diesesmal von Anfang an (mal abgesehen von einer falsch geschriebenen Variable) keine drin *freu*, aber den Logikfehler/die Logikfehler finde ich trotzdem nicht...

    Hier nun der Quellcode:

    Spoiler anzeigen
    [autoit]

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

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

    AutoIt Version: 3.3.9.4 (beta)
    Author: Weisgarnix

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

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

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

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <Array.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 615, 438, 192, 124)
    $Edit1 = GUICtrlCreateEdit("", 16, 16, 577, 369)
    GUICtrlSetData(-1, "Edit1")
    $Button1 = GUICtrlCreateButton("Button1", 232, 408, 105, 25)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    Dim $smalllettersarray[27]
    Dim $biglettersarray[27]

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

    $smalllettersarray[1]="a"
    $smalllettersarray[2]="b"
    $smalllettersarray[3]="c"
    $smalllettersarray[4]="d"
    $smalllettersarray[5]="e"
    $smalllettersarray[6]="f"
    $smalllettersarray[7]="g"
    $smalllettersarray[8]="h"
    $smalllettersarray[9]="i"
    $smalllettersarray[10]="j"
    $smalllettersarray[11]="k"
    $smalllettersarray[12]="l"
    $smalllettersarray[13]="m"
    $smalllettersarray[14]="n"
    $smalllettersarray[15]="o"
    $smalllettersarray[16]="p"
    $smalllettersarray[17]="q"
    $smalllettersarray[18]="r"
    $smalllettersarray[19]="s"
    $smalllettersarray[20]="t"
    $smalllettersarray[21]="u"
    $smalllettersarray[22]="v"
    $smalllettersarray[23]="w"
    $smalllettersarray[24]="x"
    $smalllettersarray[25]="y"
    $smalllettersarray[26]="z"

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

    $biglettersarray[1]="A"
    $biglettersarray[2]="B"
    $biglettersarray[3]="C"
    $biglettersarray[4]="D"
    $biglettersarray[5]="E"
    $biglettersarray[6]="F"
    $biglettersarray[7]="G"
    $biglettersarray[8]="H"
    $biglettersarray[9]="I"
    $biglettersarray[10]="J"
    $biglettersarray[11]="K"
    $biglettersarray[12]="L"
    $biglettersarray[13]="M"
    $biglettersarray[14]="N"
    $biglettersarray[15]="O"
    $biglettersarray[16]="P"
    $biglettersarray[17]="Q"
    $biglettersarray[18]="R"
    $biglettersarray[19]="S"
    $biglettersarray[20]="T"
    $biglettersarray[21]="U"
    $biglettersarray[22]="V"
    $biglettersarray[23]="W"
    $biglettersarray[24]="X"
    $biglettersarray[25]="Y"
    $biglettersarray[26]="Z"

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    Case $Button1
    ClipPut(_encrypt(GUICtrlRead($Edit1)))
    EndSwitch
    WEnd

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

    Func _encrypt($input)
    ; Output-Variable, wird nach und nach gefüllt...
    $output=""
    ; Es werden einzelne Wörter verschlüsselt.
    $words=StringSplit($input, " ")
    ; Wortlänge in einer normalen Variable zur einfacheren Verwendung
    $wordssize=$words[0]
    ; Für jedes Wort, tue folgendes:
    For $wordscount=1 To $wordssize
    ; Zerlege das Wort in seine einzelnen Buchstaben/Zeichen
    $letters=StringSplit($words[$wordscount], "")
    ; Anzahl der Zeichen in einer normalen Variable zur einfacheren Verwendung
    $letterssize=$letters[0]
    ; Verschlüsselungszahl (Um wie viel die Buchstaben dieses Wortes im Alphabet verschoben sind)
    $key=Random(1, 26, 1)
    ; Für jeden einzelnen Buchstaben / jedes einzelne Zeichen, tue folgendes:
    For $everysingleletter=1 To $letterssize
    ; Standartwertsetzung...
    $currentletterisbig=False
    $currentletterissmall=False
    ; Ermitteln der aktuellen Position des Buchstaben im Großbuchstabenarray
    $position=_ArraySearch($biglettersarray, $letters[$everysingleletter], 1, $letterssize, 1)
    ; Aktuelles Zeichen kein Großbuchstabe
    If $position=-1 Then
    ; Ermitteln der aktuellen Position des Buchstaben im Kleinbuchstabenarray
    $position=_ArraySearch($smalllettersarray, $letters[$everysingleletter], 1, $letterssize, 1)
    ; Falls im Kleinbuchstabenarray auch nicht vorhanden, dann...
    If $position=-1 Then
    ; ... lassen wir die oben vergebenen Default-Werte so stehen
    Else
    ; Falls vorhanden, setzen wir die Variable einfach auf True
    $currentletterissmall=True
    EndIf
    Else
    ; Test für Großbuchstabe war positiv, also setzen wir die Variable auf True
    $currentletterisbig=True
    EndIf
    ; Initialisierung, wie oft schon verschoben wurde
    $slide=0
    ; Solange noch nicht oft genug verschoben wurde, tue folgendes:
    While $slide<$key
    ; Positionsumsetzung, falls die aktuelle Position 0 wäre...
    If $position=0 Then
    $position=26
    EndIf
    ; Wir ändern den Positionswert um 1 ...
    $position-=1
    ; ... und merken uns, dass wir ihn um eine weitere Position verändert haben
    $slide+=1
    WEnd
    ; Nun kommt die Auswertung der obigen Verschiebereien...
    If $currentletterisbig Then
    $output&=$biglettersarray[$position]
    EndIf
    If $currentletterissmall Then
    $output&=$smalllettersarray[$position]
    EndIf
    ; Falls das aktuelle Zeichen in keinem der beiden Arrays gefunden wurde, machen wir gar nichts mit ihm
    If Not ($currentletterisbig or $currentletterissmall) Then
    $output&=$letters[$everysingleletter]
    EndIf
    Next
    ; Am Ende des Wortes hängen wir den Großbuchstaben dran, der an §key-Stelle im Alphabet steht...
    $output&=$biglettersarray[$key]
    ; ... und hängen das trennende Leerzeichen an
    $output&=" "
    ; Das widerholen wir nun noch mit den anderen Wörtern...
    Next
    ; Und am Ende geben wir das Ergebnis der Bastelei zurück...
    Return $output
    EndFunc

    [/autoit]

    *Edit* Hier das kommt z.B. raus, was aber falsch ist:
    [Eingabe]Hallo Weisgarnix!
    [Ausgabe]HhlloS Wswsuornwx!L
    Mit einzelnen Buchstaben scheint es zu tun, komischerweise, aber mit einzelnen auch wieder nicht. Bin ratlos :(
    PS: Bei den verschobenen Buchstaben scheint die Verschiebung zu stimmen, bei den nciht verschobenen stimmt sie natürlich nicht.

  • DeepRed92's Install Creator (in Arbeit)

    • Weisgarnix
    • 30. Mai 2012 um 09:39

    Wenn du mir die genauen Maße sagst, kann ich auch mal Paint.Net starten :D

  • DeepRed92's Install Creator (in Arbeit)

    • Weisgarnix
    • 21. Mai 2012 um 08:56

    Da bin ich auch gespannt. Ich kann mal schauen, ob ich aus einem vergangenen, aber abgebrochenen Projekt, was beisteuern kann ;)

  • AutoItstall

    • Weisgarnix
    • 21. Mai 2012 um 08:40

    Alles, was ich ergoogeln konnte:
    http://www.autoitscript.com/forum/topic/71…pbox-container/
    Wurde das wirklich binnen 4 Jahren noch nicht korrigiert in AutoIt?
    Hat keiner eine Idee? Notfalls nicht über eine Groupbox, sondern über irgendetwas anderes, sodass es einen Scrollbalken gibt...

  • AutoItstall

    • Weisgarnix
    • 18. Mai 2012 um 10:16

    Habe mal wieder eine Frage:
    http://dl.dropbox.com/u/49398111/autoitstall.7z

    Die Groupbox mit Scrollbalken, tut irgendwie nicht :(

  • AutoItstall

    • Weisgarnix
    • 5. März 2012 um 15:45

    Das mit dem Return ist mir klar, nur wie weise ich den Rückgabewert dann einer Variablen zu? Mit AdlibRegister gebe ich was andres zurück nicht meinen gewünschten Return-Wert... Aber wie gesagt, habs anders gelöst. habe in der Funktionins Logfile geschrieben bzw. ins Logfile schreiben lassen und gut is.

    Und zu den Schleifen: Die Grenzen der Arrays sind leider nicht die tatsächlich genutzte Größe der Arrays, sondern die Anzahl der gefüllten Felder im Array variiert. Zwecks Laufzeit dürfte das irrelevant sein.

    Danke dir schonmal an der Stelle, ich find auf Teufel komm raus nix falsches :(

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™