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

Beiträge von chrisatack

  • jQuery_Move() Bewegungen UDF

    • chrisatack
    • 25. Oktober 2011 um 20:02

    Servus..

    [Blockierte Grafik: http://img717.imageshack.us/img717/3323/bild001f.png]

    Ich habe in einem aktuellem Projekt flüssige Bewegungen benötigt. Da bin ich auf ein jQuery Plugin Easing gestoßen.
    Ich habe die ca.30 Funktionen von Javascript in autoit übersetzt. Ich hoffe es kann jemand benutzen... Danke dafür auch nochmal an XovoxKingdom für die kurze Hilfe am Anfang.
    Achja... sorry für die schlampige GDI übersetzung.. aber mangelnde Erfahrung und Zeitdruck kommt nicht gut ;). Falls da noch einmal jemand ran möchte
    um das ganze etwas runder zu gestalten..gerne!! Ich aktualisiere dann den Post.

    Kleines Bsp. für die Benutzung der UDF:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <GDIPlus.au3>
    #include <ComboConstants.au3>
    #include <StaticConstants.au3>
    #include 'jQuery_Move.au3'

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

    $hWnd = GUICreate("JQueryMove Bewegungen", 400, 400, Default, Default)
    $hCombo = GUICtrlCreateCombo("", 5, 5,120,22)
    GUICtrlSetData(-1, "|easeSmooth|easeInQuad|easeOutQuad|easeInOutQuad|easeInCubic|easeOutCubic|easeInOutCubic"& _
    "|easeInQuart|easeOutQuart|easeInOutQuart|easeInQuint|easeOutQuint|easeInOutQuint"& _
    "|easeInSine|easeOutSine|easeInOutSine|easeInExpo|easeOutExpo|easeInOutExpo|easeInCirc"& _
    "|easeOutCirc|easeInOutCirc|easeInElastic|easeOutElastic|easeInOutElastic|easeInBack"& _
    "|easeOutBack|easeInOutBack|easeInBounce|easeOutBounce|easeInOutBounce","easeInOutBack")
    $hButton = GUICtrlCreateButton('starten...',130,5,100,22)
    GUICtrlCreateLabel("Dauer in ms" ,235,5,60,22,$SS_CENTERIMAGE)
    $hInput_ms = GUICtrlCreateInput(2000,300,5,50,22)
    $verstrichen = GUICtrlCreateLabel("" ,235,105,60,22,$SS_CENTERIMAGE)
    GUISetState(@SW_SHOW)
    _GDIPlus_Startup()

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

    $graphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)
    $graphic2 = _GDIPlus_GraphicsCreateFromHWND($hWnd)
    $bitmap = _GDIPlus_BitmapCreateFromGraphics(400, 50, $graphic)
    $bitmap2 = _GDIPlus_BitmapCreateFromGraphics(400, 250, $graphic2)
    $buffer = _GDIPlus_ImageGetGraphicsContext($bitmap)
    $buffer2 = _GDIPlus_ImageGetGraphicsContext($bitmap2)
    $hPenRED = _GDIPlus_PenCreate(0xFFFF0000 )
    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $hButton

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

    ; DrawChartLines
    $x_old = 0
    $x_now = 0
    $old_x = 0
    $bewegt = 0
    $bewegt_old = 0
    _GDIPlus_GraphicsClear($buffer2,0xFFFFFFFF)
    _GDIPlus_GraphicsDrawImage($graphic2, $bitmap2, 0, 130)
    _GDIPlus_GraphicsDrawLine($graphic2,50,150,50,350,$hPenRED)
    _GDIPlus_GraphicsDrawLine($graphic2,300,150,300,350,$hPenRED)
    _GDIPlus_GraphicsDrawLine($graphic2,0,250,400,250,$hPenRED)

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

    $intime = TimerInit()
    $ms_max = GUICtrlRead($hInput_ms)
    While TimerDiff($intime) < $ms_max

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

    ; DrawLine
    _GDIPlus_GraphicsClear($buffer,0x11FFFFFF)
    _GDIPlus_GraphicsDrawLine($graphic,50,55,50,85,$hPenRED)
    _GDIPlus_GraphicsDrawLine($graphic,300,55,300,85,$hPenRED)
    $diff = TimerDiff($intime)
    GUICtrlSetData($verstrichen,Round($diff,0)&' ms')
    $art = GUICtrlRead($hCombo)
    $x = _jQuery_Move( $art , $diff ,0,250,$ms_max)
    _GDIPlus_GraphicsDrawLine($graphic,50+$x,60,50+$x,80)
    _GDIPlus_GraphicsDrawImage($graphic, $bitmap, 0, 50)

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

    ; DrawChart
    $x_now = 250/$ms_max*$diff
    $bewegt = $x-$old_x
    _GDIPlus_GraphicsDrawLine($graphic2,50+$x_old,250-Round($bewegt_old*8,0),50+$x_now,250-Round($bewegt*8,0))
    $bewegt_old = $bewegt
    $x_old = $x_now
    $old_x = $x

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

    WEnd
    _GDIPlus_GraphicsClear($buffer,0xFFFFFFFF)
    _GDIPlus_GraphicsDrawImage($graphic, $bitmap, 0, 50)
    _GDIPlus_GraphicsDrawLine($graphic,50,55,50,85,$hPenRED)
    _GDIPlus_GraphicsDrawLine($graphic,300,55,300,85,$hPenRED)
    _GDIPlus_GraphicsDrawLine($graphic,300,60,300,80)
    GUICtrlSetData($verstrichen,$ms_max&' ms')
    EndSwitch
    Sleep(5)
    WEnd

    [/autoit]

    JQuery_Move.au3

    Spoiler anzeigen
    [autoit]

    #include-once
    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _jQuery_Move
    ; Description ...: Berechnet Bewegungen nach wählbaren Art, wie in jQuery
    ; Syntax.........: _jQuery_Move($art, $t, $b, $c, $d))
    ; Parameters ....: $art = Art der Bewegung:- easeSmooth
    ;- easeInQuad
    ;- easeOutQuad
    ;- easeInOutQuad
    ;- easeInCubic
    ;- easeOutCubic
    ;- easeInOutCubic
    ;- easeInQuart
    ;- easeOutQuart
    ;- easeInOutQuart
    ;- easeInQuint
    ;- easeOutQuint
    ;- easeInOutQuint
    ;- easeInSine
    ;- easeOutSine
    ;- easeInOutSine
    ;- easeInExpo
    ;- easeOutExpo
    ;- easeInOutExpo
    ;- easeInCirc
    ;- easeOutCirc
    ;- easeInOutCirc
    ;- easeInElastic
    ;- easeOutElastic
    ;- easeInOutElastic
    ;- easeInBack
    ;- easeOutBack
    ;- easeInOutBack
    ;- easeInBounce
    ;- easeOutBounce
    ;- easeInOutBounce
    ;$t = Aktuelle Zeit ( gemessen von beginn der Bewegung )
    ;$b = Sartwert ( Anfangswert der Bewegung )
    ;$c = Strecke ( Bewegte Strecke der Bewegung )
    ;$d = Dauer ( gesamte Zeit der Bewegung )
    ; Return values .: Erfolg - Gibt die aktuelle Position der Bewegung zurück
    ; Fehler - Gibt -1 zurück und setzt @error auf 1 = Fehler in den Übergabeparametern
    ; Author ........: chrisatack ( C. Schiffer ) schiffer-soft.de
    ; Remarks .......: /
    ; THX ...........: Danke an http://gsgd.co.uk/sandbox/jquery/easing/
    ; ===============================================================================================================================
    Func _jQuery_Move($art, $t, $b, $c, $d)
    If Not $art <> '' And $t >-1 And $d > 0 Then
    SetError(1)
    Return -1
    EndIf
    If $t>$d Then Return $c
    Local $PI = 3.14159265358979
    Switch $art
    ;### easeSmooth ###
    Case 'easeSmooth'
    return ($t/$d)*($c-$b)

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

    ;### easeQuad ###
    Case 'easeInQuad'
    $t/=$d
    Return $c*$t*$t+$b
    Case 'easeOutQuad'
    $t/=$d
    Return -$c*$t*($t-2)+$b
    Case 'easeInOutQuad'
    $t /= $d/2
    if $t < 1 Then
    return $c/2*$t*$t + $b;
    Else
    $t -= 1
    return -$c/2*(($t)*($t-2) -1 )+ $b;
    EndIf

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

    ;### easeCubic ###
    Case 'easeInCubic'
    $t/=$d
    Return $c*$t*$t*$t+$b
    Case 'easeOutCubic'
    $t=$t/$d-1
    Return $c*($t*$t*$t+1)+$b
    Case 'easeInOutCubic'
    $t /= $d/2
    if $t < 1 Then
    return $c/2*$t*$t*$t + $b;
    Else
    $t -= 2
    return $c/2*($t*$t*$t + 2 )+ $b;
    EndIf

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

    ;### easeQuart ###
    Case 'easeInQuart'
    $t/=$d
    Return $c*$t*$t*$t*$t+$b
    Case 'easeOutQuart'
    $t=$t/$d-1
    Return -$c*($t*$t*$t*$t-1)+$b
    Case 'easeInOutQuart'
    $t /= $d/2
    if $t < 1 Then
    return (($c-1)/2*$t*$t*$t*$t+$b)
    Else
    $t -= 2
    Return -1*($c-1)/2*($t*$t*$t*$t-2)+$b
    EndIf

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

    ;### easeQuint ###
    Case 'easeInQuint'
    $t/=$d
    Return $c*$t*$t*$t*$t*$t+$b
    Case 'easeOutQuint'
    $t=$t/$d-1
    Return $c*($t*$t*$t*$t*$t+1)+$b
    Case 'easeInOutQuint'
    $t /= $d/2
    if $t < 1 Then
    return $c/2*$t*$t*$t*$t*$t + $b
    Else
    $t -= 2
    Return $c/2*($t*$t*$t*$t*$t+2)+$b
    EndIf

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

    ;### easeSine ###
    Case 'easeInSine'
    Return -$c*cos($t/$d*($PI/2))+$c+$b
    Case 'easeOutSine'
    Return $c*sin($t/$d*($PI/2))+$b
    Case 'easeInOutSine'
    Return -$c/2 * (cos($PI*$t/$d) - 1) + $b

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

    ;### easeExpo ###
    Case 'easeInExpo'
    If $t=0 Then
    Return $b
    Else
    Return $c*(2^(10*($t/$d-1)))+$b
    EndIf
    Case 'easeOutExpo'
    If $t=$d Then
    Return $b+$c
    Else
    Return $c*(-(2^(-10*$t/$d))+1)+$b
    EndIf
    Case 'easeInOutExpo'
    If $t=0 Then Return $b
    If $t=$d Then Return $b+$c
    $t/=$d/2
    If $t<1 Then Return $c/2*(2^(10 *($t-1)))+$b
    $t -= 1
    Return $c/2*(-(2^(-10*$t))+2)+$b

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

    ;### easeCirc ###
    Case 'easeInCirc'
    $t/=$d
    Return -$c*(Sqrt(1-$t*$t)-1)+$b
    Case 'easeOutCirc'
    $t=$t/$d-1
    Return $c*Sqrt(1-$t*$t)+$b
    Case 'easeInOutCirc'
    Local $s=1.70158
    Local $p=0
    Local $a=$c
    If $t = 0 Then Return $b
    $t/=$d/2
    If $t = 2 Then Return $b+$c
    If $p=0 Then $p=$d*(.3*1.5)
    If $a < Abs($c) Then
    $a=$c
    Local $s=$p/4
    Else
    Local $s=$p/(2*$PI)*ASin($c/$a)
    EndIf
    If $t < 1 Then
    $t-=1
    Return -.5*($a*(2^(10*$t))*Sin(($t*$d-$s)*(2*$PI)/$p))+$b
    EndIf
    $t-=1
    Return $a*(2^(-10*$t))*Sin(($t*$d-$s)*(2*$PI)/$p)*.5+$c+$b

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

    ;### easeElastic ###
    Case 'easeInElastic'
    Local $s=1.70158
    Local $p=0
    Local $a=$c
    If $t=0 Then Return $b
    $t/=$d
    If $t=1 Then Return $b+$c
    If Not $p Then $p=$d*.3
    If $a<Abs($c) Then
    $a=$c
    $s=$p/4
    Else
    $s=$p/(2*$PI)*ASin($c/$a)
    EndIf
    $t-=1
    Return -($a*(2^(10*$t))*sin(($t*$d-$s)*(2*$PI)/$p))+$b
    Case 'easeOutElastic'
    Local $s=1.70158
    Local $p=0
    Local $a=$c
    If $t=0 Then Return $b
    $t/=$d
    If $t=1 Then Return $b+$c
    If Not $p Then $p=$d*.3
    If $a<Abs($c) Then
    $a=$c
    $s=$p/4
    Else
    $s=$p/(2*$PI)*ASin($c/$a)
    EndIf
    Return $a*(2^(-10*$t))*sin(($t*$d-$s)*(2*$PI)/$p)+$c+$b
    Case 'easeInOutElastic'
    Local $s=1.70158
    Local $p=0
    Local $a=$c
    If $t=0 Then Return $b
    $t/=$d/2
    If $t=2 Then Return $b+$c
    If Not $p Then $p=$d*(.3*1.5)
    If $a<Abs($c) Then
    $a=$c
    $s=$p/4
    else
    $s=$p/(2*$PI)*ASin($c/$a)
    EndIf
    If $t<1 Then
    $t-=1
    Return -.5*($a*(2^(10*$t))*sin(($t*$d-$s)*(2*$PI)/$p))+$b
    EndIf
    $t-=1
    Return $a*(2^(-10*$t))*sin(($t*$d-$s)*(2*$PI)/$p)*.5+$c+$b

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

    ;### easeBack ###
    Case 'easeInBack'
    If Not IsDeclared('s') Then $s = 1.70158
    $t/=$d
    Return $c*$t*$t*(($s+1)*$t-$s)+$b
    Case 'easeOutBack'
    If Not IsDeclared('s') Then $s = 1.70158
    $t=$t/$d-1
    Return $c*($t*$t*(($s+1)*$t+$s)+1)+$b
    Case 'easeInOutBack'
    If Not IsDeclared('s') Then $s = 1.70158
    $t/=$d/2
    $s*=1.525
    If $t<1 Then Return $c/2*($t*$t*(($s+1)*$t-$s))+$b
    $s*=1.525
    $t-=2
    return $c/2*($t*$t*(($s+1)*$t+$s)+2)+$b

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

    ;### easeOutBounce ###
    Case 'easeInBounce'
    return $c - _jQuery_Move('easeOutBounce',$d-$t,0,$c,$d)+$b;
    Case 'easeOutBounce'
    $t/=$d
    If $t<(1/2.75) Then
    Return $c*(7.5625*$t*$t)+$b
    ElseIf $t<(2/2.75) Then
    $t-=(1.5/2.75)
    Return $c*(7.5625*$t*$t+.75)+$b
    ElseIf $t < (2.5/2.75) Then
    $t-=(2.25/2.75)
    Return $c*(7.5625*$t*$t+.9375)+$b
    Else
    $t-=(2.625/2.75)
    Return $c*(7.5625*$t*$t+.984375)+$b
    EndIf
    Case 'easeInOutBounce'
    If $t<($d/2) Then Return _jQuery_Move('easeInBounce',$t*2,0,$c,$d)*.5+$b
    Return _jQuery_Move('easeOutBounce',$t*2-$d,0,$c,$d)*.5+$c*.5+$b
    EndSwitch
    ;wenn nichts dann smooth
    return ($t/$d)*($c-$b)
    EndFunc

    [/autoit]

    Kleine Voransichten der Charts:

    Spoiler anzeigen


    easeInOutBounce
    [Blockierte Grafik: http://img705.imageshack.us/img705/919/bild002.png]

    easeInOutElastic
    [Blockierte Grafik: http://img15.imageshack.us/img15/1472/bild003w.png]

    easeInOutBack
    [Blockierte Grafik: http://img835.imageshack.us/img835/5765/bild004.png] 
    und noch 27 weitere...

    MFG Chris :D

  • Javascript Funktion zu AutoIt

    • chrisatack
    • 20. Oktober 2011 um 17:14

    Vielen Dank XovoxKingdom für die Hilfe...
    Das mit dem umstellen war echt gut....

    Ich habe allerdings eben was krasses festellen müssen
    lässt man folgendes laufen...

    [autoit]

    $PI = ACos(-1)
    $degToRad = $PI/180
    For $i = 0 to 10

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

    ConsoleWrite( cos($degToRad * 23)&@CRLF)
    Next

    [/autoit]

    .. bekommt man 10x den cos von 23
    ..lässt man aber

    [autoit]

    For $i = 0 to 10
    $PI = ACos(-1)
    $degToRad = $PI/180
    ConsoleWrite( cos($degToRad * 23)&@CRLF)
    Next

    [/autoit]

    kommt nach 6x kein Ergebnis zurück?

    0.92050485345244
    0.92050485345244
    0.92050485345244
    0.92050485345244
    0.92050485345244
    0.92050485345244
    -1.#IND
    -1.#IND
    -1.#IND
    -1.#IND
    -1.#IND

    was soll das???

    MFG Chris :D

  • Javascript Funktion zu AutoIt

    • chrisatack
    • 20. Oktober 2011 um 08:40

    Moin moin

    Ich glaube ich stehe heute Morgen echt aufm Schlauch.. Oder es liegt daran das es einfach noch zu früh dafür ist...
    Ich habe ne JavaScript Funktion, die ich gerne nach Autoit übersetzen möchte..

    Aber wie gesagt ich bin anscheinend heute morgen des mathischen Denkens noch nicht mächtig :D

    erst mal in javascript

    PHP
    document.write(test(125, 1, 400, 200));    
     function test(t, b, c, d) 
     {
    // t: current time
    // b: begInnIng value
    // c: change In value
    // d: duration
    if ((t/=d/2) < 1) return (c-1)/2*t*t*t*t + b;
    return -(c-1)/2 * ((t-=2)*t*t*t - 2) + b;
    }


    Ergebnis bei mir in javascipt ist 336.876953125

    das ganze in autoit...

    [autoit]

    ; t: current time
    ; b: begInnIng value
    ; c: change In value
    ; d: duration
    Func _easeInOutQuart( $t, $b, $c, $d)
    ; ((t/=d/2) < 1) return (c-1)/2*t*t*t*t + b;
    if ($t=($t/($d/2))) < 1 Then return (($c-1)/2*$t*$t*$t*$t + $b)
    ;-(c-1)/2 * ((t-=2)*t*t*t - 2) + b;
    return -(($c-1)/2 * ((($t=$t-2)*$t*$t*$t) - 2)) + $b
    EndFunc

    [/autoit]


    hier kommt aber 48706054688.5 raus...

    ich denke es liegt an der Umstellung vom -= und /=

    Naja ich Danke schon einmal...

    MFG chris :D

  • MatheProgramm

    • chrisatack
    • 20. September 2011 um 11:01

    Hiho...

    Ich glaube ich habe da noch was kleines gefunden...
    Aber ansonsten echt hammer... Hast dir viel Arbeit gemacht!!!

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

    MFG chris :D

    Dateien

    Bild 1.png 20,22 kB – 0 Downloads
  • AutoIt-Gebrauch im Alltag

    • chrisatack
    • 17. Juni 2011 um 19:00

    huhu

    Absolut genial um mal schnell keine Daten verschiebe- oder bearbeitungs Tools zu schreiben.
    Oder auch mal was größeres wie mein Infosys 2.0 (Infosys 2.0 "Informationssystem für Bargstedt und Holzma"),
    das mitlerweile große Teile unserer Firma unterstützt und Informationen rund um einen Auftrag, Material usw. bereitstellt.

    Für mich ist autoit einfach nicht mehr wegzudenken...

    MFG chris :D

  • GDI+ Perfect Illusion

    • chrisatack
    • 3. Juni 2011 um 16:15

    Huhu...

    Einfach nur genial...
    Echt...super!!!


    MFG chris :D

  • Diagramm hilfe

    • chrisatack
    • 22. Mai 2011 um 11:29

    Servus..

    So gehts...

    Spoiler anzeigen
    [autoit]

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_UseX64=n
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include 'rmchart_smart.au3'

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

    $hGUI = GUICreate("Chart Test", 650,500)
    _RMC_Smart_StartUp()
    $hChart = _RMC_Smart_ChartCreate($hGUI,"Ein Test Diagramm",10,10,600,450 )

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

    $ivar = IniReadSection(@ScriptDir & "\daten.ini", "deutsch")
    Dim $data[$ivar[0][0]][2]
    For $i = 0 To $ivar[0][0]-1
    $data[$i][0] = $ivar[$i+1][0]
    $data[$i][1] = $ivar[$i+1][1]
    Next

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

    _RMC_Smart_ChartAdd2DArray($hChart,$data,1,7,0x0000ff,0x00ff00, 0xff0000, 0 )
    _RMC_Smart_ChartDraw($hChart)

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

    GUISetState()

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

    While 1
    Switch GUIGetMsg()
    Case -3
    Exit
    EndSwitch
    WEnd

    [/autoit]

    MFG chris :D

  • Wie komplexe GUI erzeugen?

    • chrisatack
    • 17. Mai 2011 um 09:21

    Hallo..

    sorry ich habe gerade leider auch nicht so viel Zeit aber guck dir mal meine Ribbons Bar an.
    Da habe ich auch Bilder aus dlls übereinander gelegt... Vieleicht kannst du ja was daraus gebrauchen...
    https://autoit.de/index.php?page=Thread&amp;threadID=12698

    MFG chris :D

  • Mehrere Seiten gleichzeitig unsichtbar öffnen (ca.20)

    • chrisatack
    • 30. April 2011 um 13:05

    servus vel2000

    Ich glaube schon das das sehr gut mit der TCP Methode möglich ist. Immerhin bekommst du ja alle Rohdaten die der Server schickt.
    Wenn dann da irgendwas als Cookie oder so abgelegt wird, kommt es ja mit dem Header mit...

    Den kannst du leicht mit der _INetGetSourcePostCookie() bekommen und verabeiten..
    Guck mal unter volgendem Link.. da ist ein login Bsp. zu wkw.

    Dieses _IECreate ist nicht schön ;)

    MFG chris :D

  • Sudoku-Löser

    • chrisatack
    • 30. April 2011 um 11:42

    huhu

    Ich habe mal etwas mit if gespielt für die Optik...
    Aber irgendwie stimmt was in der Lösung nicht... musste nochmal nachgucken...
    hab gerade nicht so viel Zeit..

    Spoiler anzeigen
    [autoit]

    Global $hinputs[9][9]
    GUICreate("Sudoku", 190, 212);GUI erstellen

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

    ; ab hier geändernt .... Chris
    GUISetBkColor ( 0x555555 )
    For $guizaehleins = 0 To 8
    For $guizaehlzwei = 0 To 8
    If $guizaehlzwei > 5 Or $guizaehleins > 5 Then
    If $guizaehleins > 5 And $guizaehlzwei > 5 Then
    $hinputs[$guizaehlzwei][$guizaehleins] = GUICtrlCreateInput("",$guizaehlzwei * 20 +5 +5 , $guizaehleins * 20 +5 +5, 20,20)
    ElseIf $guizaehleins > 2 And $guizaehlzwei > 2 Then
    If $guizaehleins > 2 And $guizaehlzwei > 5 Then
    $hinputs[$guizaehlzwei][$guizaehleins] = GUICtrlCreateInput("",$guizaehlzwei * 20 + 5 +5, $guizaehleins * 20 +5, 20,20)
    EndIf
    If $guizaehleins > 5 And $guizaehlzwei > 2 Then
    $hinputs[$guizaehlzwei][$guizaehleins] = GUICtrlCreateInput("",$guizaehlzwei * 20 + 5 , $guizaehleins * 20 +5+5, 20,20)
    EndIf
    EndIf
    If $guizaehleins < 3 And $guizaehlzwei > 4 Then
    $hinputs[$guizaehlzwei][$guizaehleins] = GUICtrlCreateInput("",$guizaehlzwei * 20 +5+5, $guizaehleins * 20, 20,20)
    EndIf
    If $guizaehleins > 4 And $guizaehlzwei < 3 Then
    $hinputs[$guizaehlzwei][$guizaehleins] = GUICtrlCreateInput("",$guizaehlzwei * 20, $guizaehleins * 20+5+5, 20,20)
    EndIf
    Elseif $guizaehlzwei > 2 Then
    If $guizaehleins > 2 Then
    $hinputs[$guizaehlzwei][$guizaehleins] = GUICtrlCreateInput("",$guizaehlzwei * 20 + 5, $guizaehleins * 20 + 5, 20,20)
    Else
    $hinputs[$guizaehlzwei][$guizaehleins] = GUICtrlCreateInput("",$guizaehlzwei * 20 + 5, $guizaehleins * 20, 20,20)
    EndIf
    Else
    If $guizaehleins > 2 Then
    $hinputs[$guizaehlzwei][$guizaehleins] = GUICtrlCreateInput("",$guizaehlzwei * 20 , $guizaehleins * 20 + 5, 20,20)
    Else
    $hinputs[$guizaehlzwei][$guizaehleins] = GUICtrlCreateInput("",$guizaehlzwei * 20, $guizaehleins * 20, 20,20)
    EndIf
    EndIf
    Next
    Next
    $hloesenbutton = GUICtrlCreateButton("Lösen!",0,192,190, 20); Lösen-Button erstellen
    ; bis hier geändernt .... Chris

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

    GUISetState()
    While 1
    sleep(20)
    $MSG = GUIGetMsg()
    If $MSG = -3 Then
    Exit;Beim Drücken auf das Kreuz: Schließen
    ElseIf $MSG = $hLoesenbutton Then
    _Loesen();Beim Drücken auf den Lösen-Button: Lösen
    EndIf
    WEnd

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

    Func _Loesen()
    For $einundachzigmal = 0 To 81;Nach 81 Durchläufen muss das Sudoku fertig sein, wenn es lösbar ist
    For $loesy = 0 To 8;hier geht das Script alle 9 y-Werte durch, die das Feld haben kann, in das eine Zahl geschrieben werden soll
    For $Loesx = 0 To 8;hier geht das Script alle 9 x-Werte durch, die das Feld haben kann, in das eine Zahl geschrieben werden soll
    $inputstate = GUICtrlRead($hinputs[$loesx][$loesy]);Wenn das Feld bereits voll ist, soll nichts gemacht werden
    If $inputstate = "" Then;Wenn das Feld bereits voll ist, soll nichts gemacht werden
    Local $moeglich[9] = [1,1,1,1,1,1,1,1,1];Hier wird gespeichert, ob die 1, die 2 ... in dieses Feld geschrieben werden könnte
    For $einsneun = 1 To 9;Hier geht das Script die Zahlen von 1 - 9 durch und prüft, ob diese in das Feld geschrieben werden können
    For $andery = 0 To 8;Dazu werden alle Felder der gleichen Spalte...
    $otherinputstate = GUICtrlRead($hinputs[$loesx][$andery])
    If $einsneun = $otherinputstate Then
    $moeglich[$einsneun - 1] = 0
    Endif
    Next
    For $anderx = 0 To 8;, die der gleichen Zeile...
    $otherinputstate = GUICtrlRead($hinputs[$anderx][$loesy])
    If $einsneun = $otherinputstate Then
    $moeglich[$einsneun - 1] = 0
    Endif
    Next
    For $andery2 = 0 To 2; und die des gleichen 3x3-Feldes überprüft, ob sie gleich der durch $einsneun festgelegten Zahl sind, wenn ja, kann diese Zahl nicht in das Feld geschrieben werden.
    For $anderx2 = 0 To 2
    $otherinputstate = GUICtrlRead($hinputs[Floor($loesx / 3) * 3 + $anderx2][Floor($loesy / 3) * 3 + $andery2])
    If $einsneun = $otherinputstate Then
    $moeglich[$einsneun - 1] = 0
    Endif
    Next
    Next
    Next
    If $moeglich[0] = 1 And $moeglich[1] = 0 And $moeglich[2] = 0 And $moeglich[3] = 0 And $moeglich[4] = 0 And $moeglich[5] = 0 And $moeglich[6] = 0 And $moeglich[7] = 0 And $moeglich[8] = 0 Then GUICtrlSetData($hinputs[$loesx][$loesy],1);Wenn
    If $moeglich[0] = 0 And $moeglich[1] = 1 And $moeglich[2] = 0 And $moeglich[3] = 0 And $moeglich[4] = 0 And $moeglich[5] = 0 And $moeglich[6] = 0 And $moeglich[7] = 0 And $moeglich[8] = 0 Then GUICtrlSetData($hinputs[$loesx][$loesy],2);nur
    If $moeglich[0] = 0 And $moeglich[1] = 0 And $moeglich[2] = 1 And $moeglich[3] = 0 And $moeglich[4] = 0 And $moeglich[5] = 0 And $moeglich[6] = 0 And $moeglich[7] = 0 And $moeglich[8] = 0 Then GUICtrlSetData($hinputs[$loesx][$loesy],3);eine
    If $moeglich[0] = 0 And $moeglich[1] = 0 And $moeglich[2] = 0 And $moeglich[3] = 1 And $moeglich[4] = 0 And $moeglich[5] = 0 And $moeglich[6] = 0 And $moeglich[7] = 0 And $moeglich[8] = 0 Then GUICtrlSetData($hinputs[$loesx][$loesy],4);Zahl
    If $moeglich[0] = 0 And $moeglich[1] = 0 And $moeglich[2] = 0 And $moeglich[3] = 0 And $moeglich[4] = 1 And $moeglich[5] = 0 And $moeglich[6] = 0 And $moeglich[7] = 0 And $moeglich[8] = 0 Then GUICtrlSetData($hinputs[$loesx][$loesy],5);möglich
    If $moeglich[0] = 0 And $moeglich[1] = 0 And $moeglich[2] = 0 And $moeglich[3] = 0 And $moeglich[4] = 0 And $moeglich[5] = 1 And $moeglich[6] = 0 And $moeglich[7] = 0 And $moeglich[8] = 0 Then GUICtrlSetData($hinputs[$loesx][$loesy],6);ist,
    If $moeglich[0] = 0 And $moeglich[1] = 0 And $moeglich[2] = 0 And $moeglich[3] = 0 And $moeglich[4] = 0 And $moeglich[5] = 0 And $moeglich[6] = 1 And $moeglich[7] = 0 And $moeglich[8] = 0 Then GUICtrlSetData($hinputs[$loesx][$loesy],7);muss
    If $moeglich[0] = 0 And $moeglich[1] = 0 And $moeglich[2] = 0 And $moeglich[3] = 0 And $moeglich[4] = 0 And $moeglich[5] = 0 And $moeglich[6] = 0 And $moeglich[7] = 1 And $moeglich[8] = 0 Then GUICtrlSetData($hinputs[$loesx][$loesy],8);diese
    If $moeglich[0] = 0 And $moeglich[1] = 0 And $moeglich[2] = 0 And $moeglich[3] = 0 And $moeglich[4] = 0 And $moeglich[5] = 0 And $moeglich[6] = 0 And $moeglich[7] = 0 And $moeglich[8] = 1 Then GUICtrlSetData($hinputs[$loesx][$loesy],9);die richtige sein und wird in das Feld geschrieben.
    EndIf
    Next
    Next
    Next
    EndFunc

    [/autoit]

    MFG chris :D

  • Conrad Relaiskarte RS232 anteuern und Zustand abfragen

    • chrisatack
    • 16. April 2011 um 16:36

    huhu...

    falls du die Karte hier meinst...

    http://www.conrad.de/ce/de/product/197720/8FACH-RELAISKARTE-24V7A/SHOP_AREA_17362&promotionareaSearchDetail=005

    musst du mal gucken, bei der Software muss eine DLL dabei sein und auch eine Anleitung wie man sie mit C++ ansteuert...
    Das sollte dann nach meinem Wissen mit Autoit per DLLCall genau so gehen!!

    Ich hoffe ich konnte dir etwas weiter helfen..

    MFG chris :D

  • MySQL Abfrage

    • chrisatack
    • 10. Februar 2011 um 11:45

    Ich danke vielmals..

    Deine Ansätze haben geholfen...
    Wenn man einmal die Richtung weiß...

    SQL
    SELECT name, nachname, Count(  *  )  AS SummePosts
    FROM av_avitems, user
    WHERE av_avitems.createuser = user.id
    GROUP  BY av_avitems.createuser
    ORDER  BY SummePosts DESC

    MFG chris :D

  • MySQL Abfrage

    • chrisatack
    • 10. Februar 2011 um 08:53

    Servus...

    Hab mal ne Frage.. Ich such schon wie lang im Inet nach ner Möglichkeit wie man an folgende SQL Abfrage ran geht.
    Ich habe folgende Daten....

    Tabelle: av_avitems

    Spoiler anzeigen
    SQL
    id createuser AB 
    14 1 AB100881
    12 24 AB101006 
    13 4 AB110040
    11 1 AB100953
    16 6 AB110067
    22 22 AB100992
    17 20 AB110042 
    19 6 AB100960 
    20 4 AB110055 
    21 1 AB101007 
    23 1 AB100910 
    24 1 AB110044 
    25 22 AB110009 
    26 22 AB110012 
    27 2 AB100993 
    28 2 AB100908 
    29 2 AB100576 
    30 6 AB100960 
    31 6 AB110071 
    32 6 AB100576 
    33 22 AB110011 
    34 1 AB101032 
    35 22 AB100992 
    36 1 AB100793 
    37 2 AB100827 
    38 6 AB110071 
    40 1 AB110034 
    41 1 AB110014 
    46 6 AB110067 
    57 4 AB100560
    Alles anzeigen


    dann die Usertabelle: user

    Spoiler anzeigen
    SQL
    id name nachname
    1 Johannes Schilling
    2 Josef Schäfer
    5 Tobias Gebert
    4 Andreas Schlimm
    6 Paul Neuer
    20 Hans Peter
    21 Jan K&ouml;nig
    22 Stefan Mau
    23 Johannes Maurer
    24 Heiko Westermann
    Alles anzeigen


    Jetzt würde ich daraus gerne sowas wie in unserem Forum machen aber es geth mir rein um die DB abfrage...
    Also im Prinziep mit Distinct(av_avitems.createuser) die einzelnen user herausfinden dann die anzahl der beiträge eines einzelnen user finden und das alles DESC ausgeben...
    Ich komm nur auf keinen grünen Zweig.

    Spoiler anzeigen

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

    Danke schonmal...

    MFG chris :D

    Dateien

    Unbenannt.PNG 9,73 kB – 0 Downloads
  • Knut reloaded 2011

    • chrisatack
    • 4. Februar 2011 um 15:48

    Servus...

    Ein Kumpel von mir hat wohl zu oft IKEA Werbung gesehen...Aber ihm seine Theorie kann schon stimmen...

    Zitat

    Einige Weihnachtsbäume gewöhnen sich schnell an ihre neue Umgebung. Warm, immer genug Wasser, liebevolle Behandlungen. Es ist dann schwer die Bäume zu entsorgen. Wir zeigen Ihnen was ein Baum für übermenschliche Kräfte entwickeln kann.
    Viel Spaß
    Link

    © Philipp Borsch

    Was haltet Ihr davon?

    MFG chris :D

  • Sporadischer Fehler im Quelltext nach Kompilieren

    • chrisatack
    • 13. Januar 2011 um 07:42

    Moin...

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

    Tja wie der Titel schon sagt habe ich in meinem Infosys 2.0 Projekt in meiner Firma gelegentlich einen Array Fehler im Kompilierten Zustand. Da ich viele Includes habe wird mir der Feher in Zeile 9628 angezeigt. Im SciTE habe ich etwas an die 4k Zeilen. Da der Fehler nur sehr selten statt findet kann ich es nicht einfach über probieren herraus finden. Daher die Frage ob es noch eine anderen Möglichkeit gibt das ich mir den ganzen Quelltext mit allen fertigen Includes und gesäubert angucken kann?

    Danke schonmal für eine Antwort!!!

    MFG chris :D

    Dateien

    FehlerCode3.PNG 7,49 kB – 0 Downloads
  • _FTP_FileListRekursiv()

    • chrisatack
    • 28. Dezember 2010 um 01:01

    Huhu

    Hier falls Ihr es noch gebrauchen könnt meine Version mit 2D Array

    Spoiler anzeigen
    [autoit]

    #include <ftpEx.au3>
    #include <file.au3>
    #include <array.au3>

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

    $server = 'ftp.csx.cam.ac.uk'
    $username = ''
    $pass = ''

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

    $hFTP = _FTP_Open('FTP_open')
    $hCon = _FTP_Connect($hFTP, $server, $username, $pass)

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

    Global $aArray[1][2]
    _FTP_RecrusiveFileList('/pub/software/antivirus/datfiles_old')
    _ArrayDisplay ( $aArray )

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

    Func _FTP_RecrusiveFileList($sPath)
    Local $aFiles, $aDirs
    _FTP_DirSetCurrent($hCon, $sPath)

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

    $aFiles = _Ftp_ListToArray2D($hCon, 2)
    If IsArray($aFiles) Then
    For $x = 1 To $aFiles[0][0]
    $aArray[0][1] += $aFiles[$x][1]
    ConsoleWrite($sPath & "/" & $aFiles[$x][0] & @CRLF)
    _Array2DAdd($aArray, $sPath & "/" & $aFiles[$x][0]&'|'& $aFiles[$x][1])
    Next
    EndIf

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

    $aDirs = _Ftp_ListToArray($hCon, 1)
    If IsArray($aDirs) Then
    For $x = 1 To $aDirs[0]
    ;~ ConsoleWrite($sPath & "/" & $aDirs[$x] & @CRLF)
    _FTP_RecrusiveFileList($sPath & "/" & $aDirs[$x])
    Next
    EndIf
    $aArray[0][0] = UBound($aArray)-1

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

    EndFunc ;==>Recrusive

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

    Func _Array2DAdd(ByRef $avArray, $sValue = '')
    If (Not IsArray($avArray)) Then
    SetError(1)
    Return 0
    EndIf
    Local $UBound2nd = UBound($avArray, 2)
    If @error = 2 Then
    ReDim $avArray[UBound($avArray) + 1]
    $avArray[UBound($avArray) - 1] = $sValue
    Else
    Local $arValue
    ReDim $avArray[UBound($avArray) + 1][$UBound2nd]
    If $sValue = '' Then
    For $i = 0 To $UBound2nd - 2
    $sValue &= '|'
    Next
    EndIf
    $arValue = StringSplit($sValue, '|')
    If $arValue[0] <> $UBound2nd Then
    SetError(2)
    Return 0
    EndIf
    For $i = 0 To $UBound2nd - 1
    $avArray[UBound($avArray) - 1][$i] = $arValue[$i + 1]
    Next
    EndIf
    Return -1
    EndFunc

    [/autoit]

    MFG chris :D

  • _FTP_FileListRekursiv()

    • chrisatack
    • 28. Dezember 2010 um 00:51
    Zitat von autoBert


    Hatte dir auch in der SB ca. 20-30 min nach deiner Frage letzte Nacht den Hinweis gegeben,

    mfg autoBert

    Mist dann hab ich das nicht mehr gelesen... naja ich denke das sollte man der FTPEx.au3 dann auch hinzufügen...
    Am besten bei den _FTP_ListToArray... als optional für rekursiv nen True oder False
    Aber Danke trotzdem...

    MFG chris :D

  • _FTP_FileListRekursiv()

    • chrisatack
    • 27. Dezember 2010 um 23:49

    Hehe..

    Ich hab gerade angefangen an mir selbst zu zweifeln ( Wieso läuft das bei jemand anderem aber nicht bei mri)

    löl

    Vielen Dank !!

    MFG chris :D

  • _FTP_FileListRekursiv()

    • chrisatack
    • 27. Dezember 2010 um 23:07

    Servus

    Ich würde gerne alle Dateien mit Größe auf nem Server mit Unterverzeichnissen in nen Array lesen
    Irgendwas stimmt da bei mir aber leider nicht... konnte auch im Forum keine Funktion in der hinsicht finden...

    Spoiler anzeigen
    [autoit]

    #include <ftpEx.au3>
    #include <file.au3>
    #include <array.au3>

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

    $Open = _FTP_Open('FTP - Verbindung')
    $Conn = _FTP_Connect($Open, '***', '***', '***')

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

    Global $return[1]
    Global $searchHandle
    $array = _FTP_FileListRekursiv('/html/')
    _ArrayDisplay ( $array )

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

    Func _FTP_FileListRekursiv($current)
    _FTP_DirSetCurrent ( $Conn,$current )
    $file = _FTP_FindFileFirst( $Conn, $current ,$searchHandle )
    If $file[1] == 128 Then
    _ArrayAdd ( $return, $current&$file[10] )
    EndIf
    While 1
    Local $file = _FTP_FindFileNext($searchHandle)
    If @error Then ExitLoop
    If $file[1] == 128 Then; wenns eine Datei ist
    _ArrayAdd ( $return, $current&$file[10] )
    EndIf
    If $file[1] == 16 Then ; wenns ein Ordner ist..
    _FTP_FileListRekursiv($current&$file[10]&'/')
    EndIf
    WEnd
    _FTP_FindFileClose($searchHandle)
    $return[0] = UBound ( $return ) -1
    Return $return
    EndFunc

    [/autoit]

    Danke schonmal für Hilfe

    MFG chris :D

  • [UDF] GUICtrlPic - Update am 27.12.2010

    • chrisatack
    • 27. Dezember 2010 um 12:08

    huhu

    Bin gerade über die UDF gestolpert... Super echt ... eine gute zusammenfassung Nütlicher Fuktionen die ich schon oft gesucht habe..
    Danke

    MFG chris :D

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™