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

Beiträge von Yjuq

  • und wieder ein neuer

    • Yjuq
    • 19. Juni 2013 um 16:51

    Das du Anwendungen programmieren willst ist mir klar.
    Aber was für welche das sind, das interessiert mich eher.

    AutoIt ist bestens für das automatisieren von anderen Anwendungen geeignet.
    Für sehr aufwendige grafische Echtzeit Anwendung wiederum nicht.

    Ist gibt eine Menge unterschiede in der Sprache C++ und AutoIt.
    Da ist es leider nicht ganz so möglich einfach mal zu sagen "ich fange mit AutoIt an und setze dann bei C++ an."
    Ich kann es aus eigener Erfahrung sagen, habe es vor 2 Jahren auch so versucht.

    Spätestens wenn du in die GUI Programmierung einsteigst wird dir dein Wissen in AutoIt nicht mehr weiterhelfen.
    Um vielleicht die einfachen Basic's wie Variablen, Kontrollstrukturen, Prozeduren etc. Zu erlernen ja, ...
    Alles andere ist in C++ wirklich komplett anders als wie du in AutoIt lernen wirst.

    Wenn du wirklich zu 100% sicher bist das du C++ bzw. C lernen willst.
    Kauf dir ein Buch und fang direkt mit C++ an.

    Am besten sagst du einfach was für Anwendungen du programmieren möchtest.
    Einfach: Welchen Zweck sollen die Anwendungen erfüllen?

    Wenn du keine speziellen Anwendungen im Blickfeld hast, dann lern erst einmal eine Sprache richtig und spring nicht zwischen 200 umher.
    Fang entweder direkt mit C++ bzw. C an oder AutoIt.

    Zwei Sprachen als anfänger parallel zu erlernen bringt es nicht.
    Spätestens nach den Basic's von AutoIt wird dir C++ sowieso nur komplizierter erscheinen als wie es ehh schon ist.

    Ich darf auch das aus eigener Erfahrung sagen. Genau so habe ich das vor gut 5 Jahren selber versucht.
    Seitdem kann ich seit 3 Jahren wirklich "richtig" programmieren und bins seit einem Jahr nun hier im Forum.

    Aber die "alten Hasen" können dir sicherlich besser weiterhelfen als ich.
    Ich spiegel hier nur meine Erfahrung wieder die ich gemacht habe.
    Was weiß ein Kind denn schon? :D

  • und wieder ein neuer

    • Yjuq
    • 19. Juni 2013 um 16:07

    Hey Neuland!
    Ich begrüße dich auch recht herzlich hier im Forum.

    Du möchtest also C bzw. C++ lernen?
    Hast du bestimmte Gründe die Sprache zu erlernen?

    Ich selber wollte einfach nur Programmieren und habe AutoIt entdeckt. Damit habe ich bisher all meine Ideen umsetzen können. Ich programmiere einfach nur weil es mir spaß macht. Mit C++ und FreeBASIC habe ich auch schon angefangen weil ich einfach über dem AutoIt hinaus möchte. Mich persönlich interessiert es einfach und es macht mir Spaß.

    Wenn dir meine obere Beschreibung zusagt, will ich von nicht abhalten. Wenn du allerdings feste Ziele hast die du verwirklichen willst, so solltest du von Anfang an eine Programmiersprache aussuchen welche bestens dafür geeignet ist. AutoIt wurde ja im Grunde für die Automatisierung geschaffen.

    Ich möchte dir damit nur sagen, dass du direkt in der Sprache anfangen solltest zu lernen, welche du auch später nutzen willst. AutoIt mag zwar schnell zu Erfolgen führen, aber zu C++ darf man sich trotzdem umstellen. Wenn du einfach nur lernen willst wie das mit Variablen, Kontrollstrukturen und Prozeduren funktioniert, dann reicht da auch die Software „Scratch“ aus. Ist zwar nur ein zusammengeklicke von einzelnen Bausteinen aber damit hat man einen guten Einstieg in die Programmierung. Wenn du AutoIt später nicht weiter nutzen willst, würde es sich nicht lohnen damit anzufangen.

    Wenn du meinst C++ wirklich zu benötigen und mit AutoIt deine Ziele nicht umsetzen zu können, fange direkt mit C++ an. Alles andere wäre nur „vergeudete“ Zeit. Wie ich sagte reicht Scratch als Einführung sehr gut aus.

    Ich will dich aber auch nicht abhalten AutoIt zu verwenden. Wenn du damit deine Wünsche / Ziele bestens umsetzen kannst, dann würde ich dir nur diese Sprache empfehlen und sonst nichts anderes! :D

    Aber es wäre sicherlich sinnvoller erst einmal zu erfahren was für Ziele du überhaupt verfolgst!?

  • Jugend Hackt

    • Yjuq
    • 19. Juni 2013 um 15:00

    Vielen dank für die Information!
    Ich denke ich werde da mal hinfahren und mir das anschauen.

    Klingt sehr interessant und auch spannend. ^^

  • Alles Gute Alina (und der ganze Rest)

    • Yjuq
    • 19. Juni 2013 um 14:58

    Ich wünsche dir alles gute zu deinem Geburstag!
    Bleib gesund und schau öfters mal ins Forum ja? :D

    LG. Make ^^

  • Copy & Paste mit Autoit mehrmals ausführen

    • Yjuq
    • 14. Juni 2013 um 22:34

    Auch bei mir funktioniert dies einwandfrei.
    Ansonsten versuch mal folgendes:

    [autoit]

    Send('{ctrldown}v{ctrlup}')

    [/autoit]
  • Doodle Jump für Pc

    • Yjuq
    • 11. Juni 2013 um 21:57

    Wenn du Ideen hast, dann schreib doch die Programmierer alle per PN an und frag sie ob sie das erweitern wollen.
    Wenn niemand will, kannst du ja die Programmierer fragen ob du es selber erweitern kannst.
    Es würden sich bestimmt welche finden die das weiter führen würden...
    (Wenn die Ursprünglichen Programmierer nicht mehr wollen)

  • Doodle Jump für Pc

    • Yjuq
    • 11. Juni 2013 um 21:44

    Du vertust dich da...
    Ich war in keiner Weise in diesem Projekt verwickelt...
    Bin ja auch erst seit nem halben Jahr im Forum hier...
    (€dit: Uch,... Ist ja doch schon ein Jahr... Wie die Zeit vergeht...)
    :D

  • ConsoleWrite abfragen

    • Yjuq
    • 9. Juni 2013 um 00:40

    ConsoleWrite liefert als Rückgabewert die Anzahl der geschriebenen Zeichen zurück...
    Steht alles in der Hilfe. Einmal aufschlagen und dann weißt du woran es liegt.

    Spoiler anzeigen
    [autoit]

    ConsoleWrite(ConsoleWrite('Hallo') & @CRLF)
    ; Ausgabe: Hallo5 << Das zeigt das 5 Zeichen ausgegeben wurden

    [/autoit]

    Am besten liest du die Zeichen wieder aus der Console oder speicherst den zu schreibenden String vorher in eine Variable.
    Wenn du es direkt aus der Konsole lesen willst, musst du das Programm vorher als Konsolen Anwendung kompilieren.
    Zudem müssen die I/O-Streams entsprechend "aktiviert" werden. Siehe dazu in der Hilfe bei "Run" nach.

    Spoiler anzeigen
    [autoit]

    $iLast = ConsoleWrite('Hallo') ; ConsoleWrite() gibt die Anzahl der Zeichen zurück. Weil wir später
    ; die Zeichen nicht alle löschen wollen, lassen wir uns die Anzahl
    ; der geschriebenen Zeichen in eine Variable speichern. Wichtig ist
    ; zu wissen, das ConsoleWrite() in den STDOUT-Stream schreibt.
    $sRead = StdoutRead(@AutoItPID, True) ; Die Funktion StdoutRead() liest den STDOUT-Stream eines
    ; eines Prozesses aus. Der erste Parameter muss die PID des
    ; Prozesses sein. Den zweiten Parameter habe ich auf True
    ; gesetzt, damit die Zeichen nicht aus dem STDOUT-Stream
    ; entfernt werden.
    $sRead = StringRight($sRead, $iLast) ; Weil bei StdoutRead ALLE geschriebenen Daten ausgelesen
    ; werden, müssen wir die zuletzt geschriebenen Daten aus dem
    ; String auslesen. Dies tue ich durch StringRight.

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

    If $sRead == "Hallo" Then
    MsgBox(0, 2, "Du hast hallo gesagt")
    Else
    MsgBox(0, 2, "Du hast nichts gesagt")
    EndIf

    [/autoit]


    Ich hoffe ich konnte dir weiterhelfen.
    LG. Make

  • GUI - Text in Edit-Feld an derzeitiger Text-Cursor-Position einfügen

    • Yjuq
    • 5. Juni 2013 um 17:47
    Zitat von &quot;Schrubber&quot;

    Mein derzeitiges Programm ist ja unwichtig, da es sich um eine grundlegende Frage handelt.

    Hast was zu verbergen was? oO
    Zudem wäre ein Skript immer gut...
    Vor allem weil ich so faul bin eine GUI zu programmieren...
    Aber ich will mal nicht so sein und gehe mal davon aus dass du nächstes mal ein Skript mitlieferst.

    Du musst als erstes die Cursor Position ermitteln.
    Dafür gibt es keine eigene Funktion, aber du kannst den markierten Bereich ermitteln.
    Eine Funktion dazu findest du in der GUIEdit.au3.

    Mit einer weiteren Funktion kannst du dann an einer bestimmten Stelle wieder ein String einfügen.
    Auch so eine Funktion findest du in der GUIEdit.au3.

    Da es sich um eine grundliegende Antwort handelt, ist das Skript was ich dazu geschrieben habe ja unwichtig.

    LG. Make-Grafik

    Spoiler anzeigen
    [autoit]

    ; Aber ich will mal nicht so sein...

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

    #include <GUIConstants.au3>
    #include <GUIEdit.au3>

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

    ; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +

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

    $hGUI = GUICreate('Example', 400, 300)
    $idEdit = GUICtrlCreateEdit('', 0, 0, 400, 280)
    $idButton = GUICtrlCreateButton('Shortcut', 300, 280, 100, 20)
    GUISetState()

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

    ; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +

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

    While True
    $aiSel = _GUICtrlEdit_GetSel($idEdit) ; Ermittelt Start und Endposition der Markierung
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $idButton
    _GUICtrlEdit_InsertText($idEdit, 'Make-Grafik', $aiSel[1]) ; String einfügen
    EndSwitch
    WEnd

    [/autoit]
  • Audi Fan aus Köln

    • Yjuq
    • 5. Juni 2013 um 17:16

    Am besten schaust du dir mal unsere Unterforen ganz genau an.
    Dann wirst du einige merkwürdige Zeichen in einer gewissen Reihenfolge sehen,
    Diese Hieroglyphartigen Werke werden bei uns Skripte genannt.

    Kurz: Wir schieben über diese Plattform Skripte hin und her.
    Aber auch wertvolle Tipps um ein Skript zu vollenden.

    Du kannst dir sicher sein, dass es hier zu 100% um eine Skriptsprache geht.
    Nur weil ein Wort in einem anderen steckt, übernimmt es nicht gleich den Sinn des Wortes.

    Ich hoffe du hattest hier eine schöne Zeit! :D

    Und nicht entmutigen lassen von den ganzen Beiträgen.
    Ist nun mal eine lustige Situation (für uns).
    Naja,... Zumindest für mich. Wie es bei den anderen aussieht weiß ich nicht. :D

  • Audi Fan aus Köln

    • Yjuq
    • 4. Juni 2013 um 13:08

    Hey :)
    Wenn du dachtest das wäre ein Forum wo es um Autos geht,...
    Leider ist dieser Gedanke falsch.

    Wie name bereits sagte ist dies ein Support Forum für die Skriptsprache AutoIt.

    Sollte dir tatsächlich das bei der Registrierung klar gewesen sein:
    Herzlich willkommen und viel Spaß im Forum! :D

  • "Buttontext" <> "Buttonwert"

    • Yjuq
    • 4. Juni 2013 um 06:08

    Was du da veränderst ist die Button Beschriftung.
    Wie BugFix sagte, speichert die Variable nur die ID ab, um den Button ansprechen zu können.
    Am besten speicherst du einfach die alte Beschriftung in eine eigene Variable:

    Spoiler anzeigen
    [autoit]

    GUICreate('', 200, 50)
    $idButton = GUICtrlCreateButton('Text', 0, 0, 200, 50)
    GUISetState()

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

    Sleep(500)

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

    $sText = GUICtrlRead($idButton)
    GUICtrlSetData($idButton, 'Neuer Text')

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

    Sleep(500)
    GUICtrlSetData($idButton, $sText)

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

    Sleep(1000)

    [/autoit]
  • Halli Hallo

    • Yjuq
    • 3. Juni 2013 um 05:37

    Hey Gabriella! :)
    Du wirst dich sicherlich schnell in unseren Forum einfinden.
    Ich wünsche dir viel Spaß in unsere Community. ^^

  • Bit.au3 | Bitweise arbeiten mit AutoIt

    • Yjuq
    • 3. Juni 2013 um 05:08

    Hallo Community! :)
    Da ich mich in den letzten Tagen extrem mit Datenkompression Algorithmen beschäfftigt habe, sind ein Paar Funktionen entstanden die mir bei der Datenkompression auf Bit Ebene helfen sollten. Ich finde die Funktionen sind es Wert in eine UDF zusammen geschrieben zu werden da sie doch das eine oder andere Kopfrechnen abnehmen. Am besten schaut ihr euch die Funktionsbeschreibungen selber an (welche auf Deutsch geschrieben sind) und seht was diese alles kann. Hier eine Liste mit allen Funktionen:

    Code
    _Bit($iInteger, $iBit)
    _BitSet($iInteger, $iBit, $bState)
    _LoX($iInteger, $iBit)
    _HiX($iInteger, $iBit)
    _DecToDual($iInteger, $iBit)
    _DualToDec($sDual)
    _StringToBitArr($sString, $iBit = 8)
    _BitArrToString($aiArray)
    _HexToBitArray($sHex, $iBit = 8)
    _BitArrToHex($aiArray)

    Hier die UDF: (Auf Error Ausgaben wurde verzichtet)

    Spoiler anzeigen
    [autoit]

    ; #FUNCTION# ====================================================================================================================
    ; Name ..........: _Bit
    ; Beschreibung ..: Gibt den Status eines Bits in einer Ganzzahl wieder
    ; Syntax ........: _Bit($iInteger, $iBit)
    ; Parameters ....: $iInteger - Die zu verwendende Ganzzahl
    ; $iBit - Die zu prüfende Bit Position (1 bis 32/64)
    ; Rückgabewerte .: 0 - Bit ist nicht gesetzt
    ; 1 - Bit ist gesetzt
    ; Autor .........: Make-Grafik
    ; ===============================================================================================================================
    Func _Bit($iInteger, $iBit)
    Return Int(BitAND($iInteger, BitShift(1, ($iBit -1) * -1)) <> 0)
    EndFunc

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

    ; #FUNCTION# ====================================================================================================================
    ; Name ..........: _BitSet
    ; Beschreibung ..: Setzt den Status eines Bits in einer Ganzzahl
    ; Syntax ........: _BitSet($iInteger, $iBit, $bState)
    ; Parameters ....: $iInteger - Die zu verwendene Ganzzahl
    ; $iBit - Den zu setzenden Bit (1 bis 32/64)
    ; $bState - Den Status des zu setzenden Bits
    ; Rückgabewerte .: Die neue entstandene Ganzzahl
    ; Autor .........: Make-Grafik
    ; ===============================================================================================================================
    Func _BitSet($iInteger, $iBit, $bState)
    If $bState Then Return BitOR($iInteger, BitShift(1, ($iBit -1) * -1))
    Return BitAND($iInteger, BitNOT(BitShift(1, ($iBit -1) * -1)))
    EndFunc

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

    ; #FUNCTION# ====================================================================================================================
    ; Name ..........: _LoX
    ; Beschreibung ..: Gibt das niedere Byte, Word oder Dword einer Ganzzahl zurück
    ; Syntax ........: _LoByte($iInteger, $iBit)
    ; Parameters ....: $iInteger - Die zu verwendene Ganzzahl
    ; $iBit - Gibt die Anzahl der Bits der Ganzzahl an
    ; Rückgabewerte .: Das niedere Byte, Word oder Dword als Ganzzahl
    ; Autor .........: Make-Grafik
    ; ===============================================================================================================================
    Func _LoX($iInteger, $iBit)
    If $iBit = 16 Then Return BitAND($iInteger, 0xff)
    If $iBit = 32 Then Return BitAND($iInteger, 0xffff)
    If $iBit = 64 Then Return BitAND($iInteger, 0xffffffff)
    EndFunc

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

    ; #FUNCTION# ====================================================================================================================
    ; Name ..........: _HiByte
    ; Bschreibung ...: Gibt das obere Byte, Word oder Dword einer Ganzzahl zurück
    ; Syntax ........: _HiByte($iInteger, $iBit)
    ; Parameters ....: $iInteger - Die zu verwendene Ganzzahl
    ; $iBit - Gibt die Anzahl der Bits der Ganzzahl an
    ; Rückgabewerte .: Das obere Byte, Word oder Dword als Ganzzahl
    ; Autor .........: Make-Grafik
    ; ===============================================================================================================================
    Func _HiX($iInteger, $iBit)
    If $iBit = 16 Then Return BitAND(BitShift($iInteger, 8), 0xff)
    If $iBit = 32 Then Return BitAND(BitShift($iInteger, 16), 0xffff)
    If $iBit = 64 Then Return BitAND(BitShift($iInteger, 32), 0xffffffff)
    EndFunc

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

    ; #FUNCTION# ====================================================================================================================
    ; Name ..........: _DecToDual
    ; Bschreibung ...: Konvertiert eine Ganzzahl ins Dualsystem
    ; Syntax ........: _DecToDual($iInteger[, $iBit = 8])
    ; Parameters ....: $iInteger - Die zu konvertierende Ganzzahl
    ; $iBit - Anzahl der auszugebenden Bits
    ; Rückgabewert ..: Die konvertierte Ganzzahl im Dualsystem
    ; Autor .........: Make-Grafik
    ; ===============================================================================================================================
    Func _DecToDual($iInteger, $iBit)
    Local $i, $sDual

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

    For $i = $iBit To 1 Step -1
    $sDual &= _Bit($iInteger, $i)
    Next

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

    Return $sDual
    EndFunc

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

    ; #FUNCTION# ====================================================================================================================
    ; Name ..........: _DualToDec
    ; Bschreibung ...: Konvertiert eine Zahl im Dualsystem in eine Ganzzahl
    ; Syntax ........: _DualToDec($sDual)
    ; Parameters ....: $sDual - Die zu konvertierende Zahl im Dualsystem
    ; Rückgabewerte .: Die konvertierte Zahl im Dualsystem als Ganzzahl
    ; Autor .........: Make-Grafik
    ; ===============================================================================================================================
    Func _DualToDec($sDual)
    Local $iBit = StringLen($sDual)
    Local $i, $iDec

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

    For $i = 1 To $iBit
    $iDec += Int(StringMid($sDual, $iBit +1 -$i, 1)) * 2 ^ ($i -1)
    Next

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

    Return Int($iDec)
    EndFunc

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

    ; #FUNCTION# ====================================================================================================================
    ; Name ..........: _StringToBitArr
    ; Beschreibung ..: Konvertiert ein String in ein Array welches die Zeichen im Dualsystem abspeichert
    ; Syntax ........: _StringToBitArr($sString[, $iBit = 8])
    ; Parameters ....: $sString - Der zu konvertierende String
    ; $iBit - [optional] Anzahl der Bits pro Array Element
    ; Rückgabewerte .: Das Array mit den Dualwerten
    ; Autor .........: Make-Grafik
    ; ===============================================================================================================================
    Func _StringToBitArr($sString, $iBit = 8)
    Local $aiAscii = StringToASCIIArray($sString)
    Local $i, $n, $sDual

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

    For $i = 0 To UBound($aiAscii) -1
    $sDual &= _DecToDual($aiAscii[$i], 8)
    Next

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

    Return StringRegExp($sDual, '[01]{1,' & $iBit & '}', 3)
    EndFunc

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

    ; #FUNCTION# ====================================================================================================================
    ; Name ..........: _BitArrToString
    ; Beschreibung ..: Erstellt aus einem Array welches Dualwerte beinhaltet einen String
    ; Syntax ........: _BitArrToString($aiArray)
    ; Parameters ....: $aiArray - Das zu konvertierende Array
    ; Rückgabewerte .: Der String aus den Dualwerten
    ; Autor .........: Make-Grafik
    ; ===============================================================================================================================
    Func _BitArrToString($aiArray)
    Local $i, $sDual, $avAscii

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

    For $i = 0 To UBound($aiArray) -1
    $sDual &= $aiArray[$i]
    Next

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

    $avAscii = StringRegExp($sDual, '[01]{8}', 3)
    For $i = 0 To UBound($avAscii) -1
    $avAscii[$i] = _DualToDec($avAscii[$i])
    Next

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

    Return StringFromASCIIArray($avAscii)
    EndFunc

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

    ; #FUNCTION# ====================================================================================================================
    ; Name ..........: _HexToBitArr
    ; Beschreibung ..: Erstellt aus Binärdaten ein Array mit Dualwerten
    ; Syntax ........: _HexToBitArr($sHex[, $iBit = 8])
    ; Parameters ....: $sHex - Die zu konvertierende Binärdaten
    ; $iBit - [optional] Anzahl der Bits pro Array Element
    ; Rückgabewerte .: Das Array mit den Dualwerten
    ; Autor .........: Make-Grafik
    ; ===============================================================================================================================
    Func _HexToBitArr($sHex, $iBit = 8)
    Local $asHex = StringRegExp($sHex, '[0-9A-F]{2}', 3)
    Local $i, $n, $sDual

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

    For $i = 0 To UBound($asHex) -1
    $sDual &= _DecToDual(Dec($asHex[$i]), 8)
    Next

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

    Return StringRegExp($sDual, '[01]{1,' & $iBit & '}', 3)
    EndFunc

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

    ; #FUNCTION# ====================================================================================================================
    ; Name ..........: _BitArrToHex
    ; Beschreibung ..: Erstellt aus einem Array welches Dualwerte beinhaltet Binärdaten
    ; Syntax ........: _BitArrToHex($aiArray)
    ; Parameters ....: $aiArray - Das zu konvertierende Array
    ; Rückgabewerte .: Die Binärdaten aus den Dualwerten
    ; Autor .........: Make-Grafik
    ; ===============================================================================================================================
    Func _BitArrToHex($aiArray)
    Local $i, $sDual, $asHex, $sHex

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

    For $i = 0 To UBound($aiArray) -1
    $sDual &= $aiArray[$i]
    Next

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

    $asHex = StringRegExp($sDual, '[01]{4}', 3)
    For $i = 0 To UBound($asHex) -1 Step 2
    $sHex &= Hex(_DualToDec($asHex[$i] & $asHex[$i +1]), 2)
    Next

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

    Return '0x' & $sHex
    EndFunc

    [/autoit]

    Ich weiß nicht ob es ähnliche Funktionen hier irgendwo gibt.
    Als ich sie schrieb hatte ich keinen Internetzugang um danach zu googeln.
    Vielleicht kann ja der eine oder andere Funktionen daraus gebrauchen.

    Ich wünsche viel Spaß und würde mich über Rückmeldungen freuen. :)

  • disable local inputs

    • Yjuq
    • 2. Juni 2013 um 19:24

    Du kannst manuell die Tastatur und die Maus deaktivieren. Ich gehe davon aus das du das Touch-Pad deaktivieren willst. Ich hab leider nur ein Windows 7 und kann daher auch nur beschreiben wie es dort funktioniert. Was für ein Betriebsystem du hast weiß ich nicht.

    Zum deaktivieren des Touch-Pad's:
    Gehe in die Systemsteuerung und wähle dort "Hardware und Sound" und danach "Geräte und Drucker" aus. Nun machst du einen Rechtsklick auf das Symbol deines PC's und wählst dort "Mauseinstellungen" aus. Mein Touch-Pad stammt von ELAN. Dort gibt es einen extra Tab den ich anklicken muss um das Touch-Pad zu deaktivieren. Am besten schaust dich da ein bischen selber um.

    Bei der Tastatur könnte es schwieriger werden. Habe dafür bisher keine Möglichkeit gefunden. ^^
    Aber ich verstehe nicht wofür du das brauchst? Ist doch wurscht ob die Tastatur noch Eingaben entgegen nimmt oder nicht?

  • Bild in Script einfügen

    • Yjuq
    • 2. Juni 2013 um 16:16

    Korrekt :)

    Das was UEZ verlinkt hat ist (fast) das gleiche!
    Nur werden die Binärdaten dadurch verkürzt. (Wenn ich es richtig gelesen habe).
    Die Beispiele dazu zeigen wie du das Bild direkt (ohne zwischenspeichern in einer File) laden kannst.

  • Bild in Script einfügen

    • Yjuq
    • 2. Juni 2013 um 03:17
    Zitat von &quot;masterRobb&quot;

    [...] überschreitet meine Fähigkeiten wohl doch bei Weitem :D [...]

    Ich kann leider deine Fähigkeiten jetzt nicht einschätzen. Aus diesen Grund fange ich ganz von vorne an.


    Wie du wissen solltest, bestehen Dateien aus Bits. Ein Bit kann nur ein Zustand speichern. Es gibt viele Bezeichnungen für die Zustände: An und Aus, 1 und 0, wahr und falsch, O und L,... (Mehr kenne ich nicht ^^) Im weiteren verwende ich 1 und 0.

    8 Bit stehen dafür für ein Byte. Ein Byte kann ein Zeichen darstellen. Der Buchstabe "A" Beispielsweise hat den ASCII Wert 65 (Es gibt dafür Tabellen) und demnach den Dualwert 01000001. Wie ich auf den Dualwert gekommen bin spielt gerade keine Rolle. Falls dich aber diese Thematik interessiert kannst du danach googeln.

    Zurück zum Thema: Es gibt aber noch eine andere Darstellung des Buchstabe. Und zwar im Hexdezimalsystem. Genau genommen werden Daten die Zeichenketten darstellen "Binärdaten" genannt. Unser Buchstabe "A" ist also im Hexdezimalsystem die Zahl 41. Um dieses "A" nun als Binärdaten ins Skript zu speichern müssen wir ein "0x" davor schreiben.

    Beispiel:

    [autoit]

    $dBinary = '0x41'
    MsgBox(0, '', BinaryToString($dBinary))

    [/autoit]

    Wie dir auffallen sollte, erstellt BinaryToString aus unseren Binärdaten wieder ein String. Mit StringToBinäry können wir demnach Strings in Binärdaten konvertieren.

    [autoit]

    $sString = 'Hallo Welt!'
    MsgBox(0, '', StringToBinary($sString))

    [/autoit]

    Dies sollte dir soweit zum Verständnis helfen wie das mit den Binärdaten funktioniert. Wie werden aber nun Bilder als Binärdaten eingelesen und auch dann im Skript hinterlegt? Wie ich bereits sagte sind Dateien nur Bits. Und 8 Bits bilden ein Byte welches ein Zeichen darstellt. Wie ich auch zeigte können wir aus den Zeichen Binärdaten zaubern. Wir müssen einfach mit FileRead die Datei lesen und den String zu Binärdaten konvertieren.

    Beispiel:

    [autoit]

    $sString = FileRead('Bild.jpg')
    $dBinary = StringToBinary($sString)
    ClipPut($dBinary)

    [/autoit]

    Nun befinden sich die Binärdaten in deinen Zwischenspeicher zu der gewählten Datei. Da die SciTE aber nur maximal etwa 4000 (weiß gerade nicht genau) Zeichen an länge fasst, müssen die Binärdaten auf mehrere Zeilen verteilt werden. Ich habe mir ein Skript dazu geschrieben was mir die Arbeit dafür abnimmt:

    Spoiler anzeigen
    [autoit]

    $sVar = '$dBinary'
    $sPath = 'Bild.jpg'

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

    $hFile = FileOpen($sPath, 16)
    $sRead = FileRead($hFile)
    $asRead = StringRegExp($sRead, '[^ ]{1,4000}', 3)
    FileClose($hFile)

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

    For $i = 0 To UBound($asRead) - 1
    If $i = 0 Then
    $sClip = $sVar & ' = ' & "'" & $asRead[0] & "'" & ' & _' & @CRLF
    Else
    $sClip &= "'" & $asRead[$i] & "'"
    If $i < UBound($asRead) - 1 Then $sClip &= ' & _' & @CRLF
    EndIf
    Next

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

    ClipPut($sClip)

    [/autoit]

    Wie du in Zeile 4 erkennst, habe ich bei FileOpen als zweiten Parameter 16 angegeben. Das bewirkt, dass die Datei direkt als Binärdatei gelesen wird. Dann muss man das nicht mit StringToBinary als Binärdaten konvertieren. Wenn du das Skript ausführst erhälst du in deiner Zwischenablage die Binärdaten deiner Datei. Diese kannst du dann in jedes beliebige Skriot einfügen. Allerdings musst du aus den Binärdaten wieder eine Datei erstellen.

    Wie du oben bereits gesehen hast kannst du mit BinaryToString wieder einen String aus den Binärdaten erzeugen. Diesen String speicherst du einfach als Datei ab und kannst somit die Datei verwenden.

    Oder du verwendest bei FileOpen einfach auch als zweiten Parameter die Zahl 16. Dann kannst du mit FileWrite die Binärdaten 1 zu 1 verwenden ohne konvertierung.

    Beispiele hast du ja bereits genug bekommen. Setz dich ran und versuche und schaue dir die Skripts an!
    Lass das mit dem Base64 erst einmal sein. Das soll nur die Binärdaten kürzen.
    Verstehe erst einmal wie das ganze funktioniert.

    Ich wünsche viel Spaß! Bei Fragen stehe ich gerne zur Verfügung. ^^
    LG. Make :)


    €dit:
    Achja, in den Beitrag #7 hast du ja ein Skript gepostet. Das ganze ist auch funktionsfähig. Das einzigste was da fehlt ist, dass das Bild gar nicht erstellt wird. Das wird in der Funktion pic() erledigt, allerdings wird diese nie aufgerufen. Setze einfach vor $Pic1 = GUICtrlCreatePic(@TempDir &"\gears-of-war.jpg", 0, 30, 625, 441) den Aufruf pic() und du kannst das Ergebnis betrachten. Das Skript eignet sich auch vor allem um zu sehen wie das ganze mit dem erstellen der Datei funktioniert! :)

  • Buttontext aus Variable lesen

    • Yjuq
    • 1. Juni 2013 um 21:35

    Setz bitte den Thread auf [ gelöst ].
    Dazu musst du nur deinen ersten Post editieren. :)

  • Bild in Script einfügen

    • Yjuq
    • 1. Juni 2013 um 18:42

    Das was ich gepostet habe entspricht doch dem was du gepostet hast (Beitrag #7)...
    Nur mit dem Unterschied das ich zum zeichnen in die GUI GDI+ verwendet habe.

    Wo genau hast du denn Probleme?

    Das Bild in das Skript zu hinterlegen oder
    das Bild aus dem Skript zu laden?

    Zudem wäre es sinnvoll hier im Thread das Problem zu behandeln damit andere Google Nutzer auch eine Lösung finden wenn sie auf dieses Thread stoßen.
    Zudem belästigst du damit nicht. Du bleibst ja höflich und spamst nicht hier rum wie andere die ich schon erlebt habe.
    Ansonsten schlaf doch einfach eine Nacht drüber und setzt dich morgen nochmal ran.
    Oder was auch hilft: Geh an die Luft. Dann denkt man gleich viel klarer :D

  • Basics? GUI > Array erstellen, Werte sortieren, danach Wert wieder an richtige Stelle...

    • Yjuq
    • 1. Juni 2013 um 18:29

    Ich hoffe das Skript ist selbsterklärend. Ansonsten kannst du gerne nachfragen :)

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    Global $hGUI, $idInput1, $idInput2, $idInput3, $idInput4, _
    $idInput5, $idInput6, $idButton

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

    ; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +

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

    $hGUI = GUICreate('Example', 220, 220)
    $idInput1 = GUICtrlCreateInput('', 10, 10, 200, 20) ; Ausdauer
    $idInput2 = GUICtrlCreateInput('', 10, 40, 200, 20) ; Tempo
    $idInput3 = GUICtrlCreateInput('', 10, 70, 200, 20) ; Dressur
    $idInput4 = GUICtrlCreateInput('', 10, 100, 200, 20) ; Gallopp
    $idInput5 = GUICtrlCreateInput('', 10, 130, 200, 20) ; Trab
    $idInput6 = GUICtrlCreateInput('', 10, 160, 200, 20) ; Springen
    $idButton = GUICtrlCreateButton('', 10, 190, 200, 20)
    GUISetState()

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

    ; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +

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

    While True
    Switch GUIGetMsg()
    Case $idButton
    _Bonus()
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

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

    ; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +

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

    Func _Bonus()
    Local $aiArray[6][2], $aiHoechstwert[2][2], $i
    Local Enum $Ausdauer, $Tempo, $Dressur, $Gallopp, $Trab, _
    $Springen
    Local Enum $Id, $Wert

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

    ; ID's speichern
    $aiArray[$Ausdauer][$Id] = $idInput1
    $aiArray[$Tempo ][$Id] = $idInput2
    $aiArray[$Dressur ][$Id] = $idInput3
    $aiArray[$Gallopp ][$Id] = $idInput4
    $aiArray[$Trab ][$Id] = $idInput5
    $aiArray[$Springen][$Id] = $idInput6

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

    ; Werte speichern
    $aiArray[$Ausdauer][$Wert] = Number(GUICtrlRead($idInput1))
    $aiArray[$Tempo ][$Wert] = Number(GUICtrlRead($idInput2))
    $aiArray[$Dressur ][$Wert] = Number(GUICtrlRead($idInput3))
    $aiArray[$Gallopp ][$Wert] = Number(GUICtrlRead($idInput4))
    $aiArray[$Trab ][$Wert] = Number(GUICtrlRead($idInput5))
    $aiArray[$Springen][$Wert] = Number(GUICtrlRead($idInput6))

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

    ; Alle Attribute durchgehen
    For $i = $Ausdauer To $Springen
    If $aiArray[$i][$Wert] > $aiHoechstwert[0][$Wert] Then
    $aiHoechstwert[1][$Id ] = $aiHoechstwert[0][$Id ]
    $aiHoechstwert[1][$Wert] = $aiHoechstwert[0][$Wert]
    $aiHoechstwert[0][$Id ] = $aiArray[$i][$Id ]
    $aiHoechstwert[0][$Wert] = $aiArray[$i][$Wert]
    ElseIf $aiArray[$i][$Wert] > $aiHoechstwert[1][$Wert] Then
    $aiHoechstwert[1][$Id ] = $aiArray[$i][$Id ]
    $aiHoechstwert[1][$Wert] = $aiArray[$i][$Wert]
    EndIf
    Next

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

    ; Die beiden Höchstwerte sind nun im Array gespeichert.
    ; Mit der ID des entsprechenden Input Controls.
    GUICtrlSetData($aiHoechstwert[0][$Id], $aiHoechstwert[0][$Wert] + 6 * .25)
    GUICtrlSetData($aiHoechstwert[1][$Id], $aiHoechstwert[1][$Wert] + 6 * .25)
    EndFunc

    [/autoit]

    Habe es für bessere lesbarkeit mit Enum Variablen geschrieben.

    €dit:
    Kleine Skriptkorrektur...
    Danke Greek für den Hinweis mit Number!
    Hatte ich nicht mehr dran gedacht. :P

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™