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

Beiträge von autoBert

  • Button unterhalb von Childfenstern

    • autoBert
    • 25. Februar 2010 um 12:37

    Hallo Chip,

    wie wäre es damit:

    Spoiler anzeigen
    [autoit]

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

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

    #Region ### START Koda GUI section ### Form=
    $Desktop = GUICreate("Desktop", @DesktopWidth/2, @DesktopHeight/2, 0, 0, BitOR($WS_POPUP, $WS_VISIBLE), BitOR($WS_EX_CONTROLPARENT,$WS_EX_WINDOWEDGE))
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    GUICtrlCreateButton("Test", 100, 80, 60, 60, BitOR($BS_NOTIFY, $WS_GROUP, $WS_TABSTOP, $WS_VISIBLE, $BS_FLAT))

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", @DesktopWidth/4, @DesktopHeight/4, 250, 50, BitOR($WS_MINIMIZEBOX, $WS_SYSMENU, $WS_CAPTION, $WS_GROUP, $WS_VISIBLE, $WS_BORDER), $WS_EX_MDICHILD, $Desktop)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

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

    [/autoit]

    mfg (Auto)Bert

  • _ArraySort sortiert "komisch"

    • autoBert
    • 25. Februar 2010 um 10:28

    Hallo UEZ,

    da ich die Standardsortierung mit _Arraysort verwende ist dies das leidige Problem, dass Zahlen wie Strings einsortiert werden. Ich habe auf Grund deines Postes in Zeile 7 meines Testskriptes jetzt Zufallszahlen von 1 - 999. Dadurch fällt der Unterschied unserer beiden Sortierroutinen auf. Deine behandelt Zahlen als solche und ist daher als besser einzustufen. Ich könnte jetzt zwar noch meine Routine umbauen indem ich die Zahlen rechtsbündig formatiere (von links mit entsprechenden Leerstellen auffülle) aber da sich Oscar für die SQL-Version entschieden hat, dürfte das unnötig sein.

    mfg (Auto)Bert

  • _ArraySort sortiert "komisch"

    • autoBert
    • 25. Februar 2010 um 03:41

    Hallo UEZ,

    ich habe einmal deine und meine Lösung gegenübergestellt: deine Laufzeit 7384 ms, meine 5741 ms. Eine anschliessende Überprüfung auf Übereinstimmung erbrachte nur Unterschiede in Spalte 1 von 3, was ja laut Vorgabe von Oscar zulässig ist.
    Hier das Skript dazu:

    Spoiler anzeigen
    [autoit]

    #include <array.au3>
    Dim $array[9999][3] ; = [['abc', 'a11', '555'],['bcd', 'a11', '444'],['cde', 'a11', '666']]
    Dim $aNew[9999][3]
    For $i = 0 To 9998
    $array[$i][0] = Chr(Random(65, 90, 1)) & Chr(Random(65, 90, 1)) & Chr(Random(65, 90, 1))
    $array[$i][1] = Chr(Random(65, 90, 1)) & Random(0, 99, 1)
    $array[$i][2] = Random(100, 999, 1)
    Next
    $bench_start = TimerInit()
    For $i = 0 To UBound($array, 1) - 1
    $aNew[$i][0] = $array[$i][1] & "|" & $array[$i][2] & "|" & $array[$i][0]
    ;ConsoleWrite($array[$i][1] & "|" & $array[$i][2] & "|" & $array[$i][0] & @CRLF)
    Next
    _ArraySort($aNew, 0, 0, 0, 0)
    For $i = 0 To UBound($array, 1) - 1
    $aSplit = StringSplit($aNew[$i][0], "|")
    $aNew[$i][0] = $aSplit[3]
    $aNew[$i][1] = $aSplit[1]
    $aNew[$i][2] = $aSplit[2]
    Next
    $bench_end = Round(TimerDiff($bench_start), 2)
    ConsoleWrite("Laufzeit: " & $bench_end & " ms!" & @CRLF)
    ;_ArrayDisplay($aNew)

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

    $1ste_spalte = 1
    $2te_spalte = 2
    $j = 0
    $k = 1

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

    $bench_start = TimerInit()
    _ArraySort($array, 0, 0, 0, $1ste_spalte)

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

    While $k < UBound($array)
    If $array[$j][$1ste_spalte] <> $array[$k][$1ste_spalte] Then
    If $k - $j > 1 Then
    _ArraySort($array, 0, $j, $k - 1, $2te_spalte)
    $j = $k
    Else
    $j = $k
    EndIf
    EndIf
    $k += 1
    WEnd

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

    If $k - $j > 1 Then _ArraySort($array, 0, $j, $k, $2te_spalte)

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

    $bench_end = Round(TimerDiff($bench_start), 2)
    ConsoleWrite("Laufzeit: " & $bench_end & " ms!" & @CRLF & @crlf)
    ;_ArrayDisplay($array)

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

    ConsoleWrite("Jetzt wird noch auf Übereinstimmung geprüft!" & @CRLF)

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

    For $i = 0 To UBound($array, 1) - 1
    For $j = 0 To 2 ;alle 3 Spalten vergleichen
    If $aNew[$i][$j] <> $array[$i][$j] Then
    ConsoleWrite("Unterschied in ARRAYS Zeile: " & $i & " Spalte: " & $j & @CRLF)
    if $j <> 0 then ;Spalte 0 darf sich unterscheiden
    ConsoleWrite("Eine der beiden Sortiermethoden ist fehlerhaft" & @CRLF)
    Exit
    EndIf
    EndIf
    Next
    Next

    [/autoit]


    @kleiner27, deine Routine ist fehlerhaft (Unterschied in Spalte 2, schon in der 1. Zeile)

    mfg (Auto)Bert

  • _ArraySort sortiert "komisch"

    • autoBert
    • 24. Februar 2010 um 21:23

    Hallo @kleiner27,

    Zitat von Oscar

    Ich habe ein Problem mit _ArraySort. Und zwar mit einem 2D-Array. Ich möchte nach dem 2. Element sortieren lassen. Nun kann es aber sein, dass es mehrere gleiche Einträge gibt, die sich erst im dritten Element unterscheiden.

    Zitat von kleiner27

    autoBert
    das geht auch mit

    [autoit]

    _ArraySort($array, 0, 0, 0, 2)

    [/autoit]

    Aber trotzdem wird 'abc' nicht richtig Sotiert!

    Das Array soll laut Vorgabe von Oscar zuerst nach der 2. Spalte und falls diese gleich danach nach der 3. Spalte sortiert werden. Dies geht mit dem normalen _ArraySort ja nicht (sonst hätte Oscar ja keinen Thread eröffnen müssen).
    Bei den Testdaten kann abc nicht an 1. Stelle stehen.
    Der Workaround die einzelnen Zeilen zusammenzuSTRINGen (in der Reihenfolge in der sortiert werden soll), danach zu sortieren um dann wieder jede Zeile zu splitten und in die entsprechende Spalte einzufügen funktioniert (sortiert sogar falls die 3. Spalte auch gleich danach noch nach der 1. Spalte).

    Oscar ich habe es jetzt einmal mit 9999 Zufallseinträgen probiert, die Zeit ist meines Erachtens nach akzeptabel. Hier das Testskript:

    Spoiler anzeigen
    [autoit]

    #include <array.au3>
    Dim $array[9999][3] ; = [['abc', 'a11', '555'],['bcd', 'a11', '444'],['cde', 'a11', '666']]
    Dim $aNew[9999][3]
    for $i = 0 to 9998
    $array[$i][0]=chr(Random(65,90,1)) & chr(Random(65,90,1)) & chr(Random(65,90,1))
    $array[$i][1]=chr(Random(65,90,1)) & Random(0,99,1)
    $array[$i][2]= Random(0,999,1)
    Next
    ;_ArrayDisplay($array)

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

    for $i = 0 to UBound($array,1) -1
    $aNew[$i][0] = $array[$i][1] & "|" & $array[$i][2] & "|" & $array[$i][0]
    ;ConsoleWrite($array[$i][1] & "|" & $array[$i][2] & "|" & $array[$i][0] & @CRLF)
    Next
    _ArraySort($aNew,0,0,0,0)
    ;_ArrayDisplay($aNew)
    for $i = 0 to UBound($array,1) -1
    $aSplit = StringSplit($aNew[$i][0],"|")
    $aNew[$i][0] = $aSplit[3]
    $aNew[$i][1] = $aSplit[1]
    $aNew[$i][2] = $aSplit[2]
    Next
    _ArrayDisplay($aNew)

    [/autoit]

    mfg (Auto)Bert

  • _ArraySort sortiert "komisch"

    • autoBert
    • 24. Februar 2010 um 20:19

    Hallo Oscar,

    _ArraySort sortiert nur innerhalb des angebenen SubIndexes. Du könntest dies mit folgendem Workaround umgehen:

    Spoiler anzeigen
    [autoit]

    #include <array.au3>
    Dim $array[3][3] = [['abc', 'a11', '555'],['bcd', 'a11', '444'],['cde', 'a11', '666']]
    Dim $aNew[3][3]
    for $i = 0 to UBound($array,1) -1
    $aNew[$i][0] = $array[$i][1] & "|" & $array[$i][2] & "|" & $array[$i][0]
    ConsoleWrite($array[$i][1] & "|" & $array[$i][2] & "|" & $array[$i][0] & @CRLF)
    Next
    _ArraySort($aNew,0,0,0,0)
    _ArrayDisplay($aNew)
    for $i = 0 to 2
    $aSplit = StringSplit($aNew[$i][0],"|")
    $aNew[$i][0] = $aSplit[3]
    $aNew[$i][1] = $aSplit[1]
    $aNew[$i][2] = $aSplit[2]
    Next
    _ArrayDisplay($aNew)

    [/autoit]

    geht sehr warscheinlich bei großen Datenmengen auf Kosten der Performance,

    mfg (Auto)Bert

  • Buttonform ändern?

    • autoBert
    • 24. Februar 2010 um 18:32

    Halo Schnitzel,

    wenn man die richtigen Stichwörter eingibt, erhält man in der Regel auch mit der boardeigenen SuFu Ergebnisse

    chip vielleich hattest du ja einen Tipfehler? die SuFu zeigt 15 Ergebnisse für Runde Buttons, darunter auch der Post von funkey.

    mfg (Auto)Bert

  • Buttonform ändern?

    • autoBert
    • 24. Februar 2010 um 17:55

    Hallo chip,

    schau dir Runde Buttons von funkey an,

    mfg (Auto)Bert

  • Mathe Trainer

    • autoBert
    • 24. Februar 2010 um 13:47

    Hallo ScarfacePH.

    da du unmittelbar vor der Prüfung den Zähler $i auf 0 setzt fängt gibt dieser immer 1 aus. Auch ist $i ein schlecht gewählter Variablenname, denn wenn du einmal nicht daran denkst und $i z.B. in einer for .... next Schleife verwendest, würdest du die Variable schon wieder überschreiben.
    Ein größeres Problem sehe ich allerdings darin, dass du Checkboxen genommen hast. Du musst wenn mehrere angekreuzt sind auch noch zufällig auswählen, wasfür eine Aufgabe gestellt wird.
    In der 1. Version würde ich an deiner Stelle Radioboxen verwenden, da kann immer nur eine aktiv sein.
    Hier mal das geänderte Skript:

    Spoiler anzeigen
    [autoit]

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

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

    Global $iRichtig = 0, $iFalsch = 0

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

    $Form2 = GUICreate("Form2", 441, 562, 195, 134)
    $Addieren = GUICtrlCreateRadio("Addieren", 96, 24, 97, 17)
    $Subtrahieren = GUICtrlCreateRadio("Subtrahieren", 96, 56, 97, 17)
    $Dividieren = GUICtrlCreateRadio("Dividieren", 96, 88, 97, 17)
    $Multiplizieren = GUICtrlCreateRadio("Multiplizieren", 96, 120, 97, 17)
    $Zahlvon = GUICtrlCreateInput("", 288, 80, 81, 21)
    $Zahlbis = GUICtrlCreateInput("", 288, 136, 81, 21)
    $Zahlvon0bis100 = GUICtrlCreateLabel("Zahl von 0 bis 100", 288, 56, 80, 17)
    $Zahlvon0bis101 = GUICtrlCreateLabel("Zahl von 0 bis 101", 288, 112, 80, 17)
    $Zahlenbereich = GUICtrlCreateLabel("Zahlenbereich", 272, 16, 105, 24)
    GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
    $Auf = GUICtrlCreateInput("", 48, 264, 129, 21)
    $Erg = GUICtrlCreateInput("", 48, 360, 89, 21)
    $Aufgabe = GUICtrlCreateLabel("Aufgabe", 48, 240, 44, 17)
    $Ergebnis = GUICtrlCreateLabel("Ergebnis", 48, 336, 45, 17)
    $Starten = GUICtrlCreateButton("Starten", 72, 192, 163, 25, $WS_GROUP)
    $Pruefen = GUICtrlCreateButton("Prüfen", 72, 480, 163, 25, $WS_GROUP)
    Global $Rich = GUICtrlCreateInput("", 280, 312, 97, 21)
    Global $Fal = GUICtrlCreateInput("", 280, 368, 97, 21)
    $Richtige = GUICtrlCreateLabel("Richtige", 280, 288, 43, 17)
    $Falsche = GUICtrlCreateLabel("Falsche", 280, 344, 41, 17)
    GUISetState(@SW_SHOW)

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

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

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

    Case $Starten

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

    If GUICtrlRead($Addieren) = $GUI_CHECKED Then
    $Z1 = Random(GUICtrlRead($Zahlvon), GUICtrlRead($Zahlbis), 1)
    $Z2 = Random(GUICtrlRead($Zahlvon), GUICtrlRead($Zahlbis), 1)
    $D = GUICtrlSetData($Auf, "")
    $A = GUICtrlSetData($Auf, $Z1)
    $B = GUICtrlSetData($Auf, " + ", $A)
    $C = GUICtrlSetData($Auf, $Z2, $A)

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

    EndIf

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

    If GUICtrlRead($Subtrahieren) = $GUI_CHECKED Then
    $Z1 = Random(GUICtrlRead($Zahlvon), GUICtrlRead($Zahlbis), 1)
    $Z2 = Random(GUICtrlRead($Zahlvon), GUICtrlRead($Zahlbis), 1)
    $D = GUICtrlSetData($Auf, "")
    $A = GUICtrlSetData($Auf, $Z1)
    $B = GUICtrlSetData($Auf, " - ", $A)
    $C = GUICtrlSetData($Auf, $Z2, $A)

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

    EndIf

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

    If GUICtrlRead($Dividieren) = $GUI_CHECKED Then
    $Z1 = Random(GUICtrlRead($Zahlvon), GUICtrlRead($Zahlbis), 1)
    $Z2 = Random(GUICtrlRead($Zahlvon), GUICtrlRead($Zahlbis), 1)
    $D = GUICtrlSetData($Auf, "")
    $A = GUICtrlSetData($Auf, $Z1)
    $B = GUICtrlSetData($Auf, " : ", $A)
    $C = GUICtrlSetData($Auf, $Z2, $A)

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

    EndIf

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

    If GUICtrlRead($Multiplizieren) = $GUI_CHECKED Then
    $Z1 = Random(GUICtrlRead($Zahlvon), GUICtrlRead($Zahlbis), 1)
    $Z2 = Random(GUICtrlRead($Zahlvon), GUICtrlRead($Zahlbis), 1)
    $D = GUICtrlSetData($Auf, "")
    $A = GUICtrlSetData($Auf, $Z1)
    $B = GUICtrlSetData($Auf, " x ", $A)
    $C = GUICtrlSetData($Auf, $Z2, $A)

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

    EndIf

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

    Case $Pruefen

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

    If GUICtrlRead($Addieren) = $GUI_CHECKED Then
    $SZ = $Z1 + $Z2

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

    If GUICtrlRead($Erg) = $SZ Then
    _richtig()
    Else
    _falsch()
    EndIf
    EndIf

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

    If GUICtrlRead($Subtrahieren) = $GUI_CHECKED Then
    $SZ = $Z1 - $Z2

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

    If GUICtrlRead($Erg) = $SZ Then
    _richtig()
    Else
    _falsch()
    EndIf
    EndIf

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

    If GUICtrlRead($Dividieren) = $GUI_CHECKED Then
    $SZ = $Z1 / $Z2

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

    If GUICtrlRead($Erg) = $SZ Then
    _richtig()
    Else
    _falsch()
    EndIf
    EndIf

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

    If GUICtrlRead($Multiplizieren) = $GUI_CHECKED Then
    $SZ = $Z1 * $Z2

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

    If GUICtrlRead($Erg) = $SZ Then
    _richtig()
    Else
    _falsch()
    EndIf
    EndIf
    EndSwitch
    WEnd

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

    Func _richtig()
    $iRichtig += 1
    GUICtrlSetData($Rich, $iRichtig)
    EndFunc ;==>_richtig

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

    Func _falsch()
    $iFalsch += 1
    GUICtrlSetData($Fal, $iFalsch)
    EndFunc ;==>_falsch

    [/autoit]

    Du solltest auch in der Hilfe den Befehl execute nachlesen, könnte dir bei komplexeren Aufgabenstellungen das errechnen des Ergebnisses erleichtern. Übrigens Jautois hat einen Trainer im Forum Skripte gepostet, dieser ist sehr gut gelungen

    mfg (Auto)Bert

  • Frage zum Dateien abspeichern

    • autoBert
    • 24. Februar 2010 um 08:47

    Hallo @m-obi,

    falls es aus meinem vorhergehenden Beitrag nicht hervorgegangen ist: ich habe lediglich (auch mit Hilfe von Tidy) den Code compilierfähig gemacht. Das heist falsche Zeilenschaltungen innerhalb von If .... then entfernt und abschliessende wend's bzw. endselect eingefügt. Ansonsten habe ich den Code nicht überarbeitet,

    mfg (Auto)Bert

  • Balloontip mit Inputfelder verknüpfen?

    • autoBert
    • 24. Februar 2010 um 08:34

    Hallo stinger2k,

    am besten lässt duerst gar keine Falscheingaben zu. Sieh dir dazu [ gelöst ] nur zahlen zulassen von peethebee an,

    mfg (Auto)Bert

  • abnormal program termination

    • autoBert
    • 23. Februar 2010 um 21:31

    Hallo Bakku,

    das ist eine Fehlermeldung, die aussagt dass das Programm einen Laufzeitfehler hatte und deshalb abnormal beendet wurde (Die jeweiligen Programmierer haben es versäumt eine anständige Fehlerbehandlung und auch Reporting einzubauen). Du musst dich also in jedem Einzelfall an den Entwickler des Spieles oder deinen Händler wenden und dein Geld (falls nicht FreeWare etc.) zurückfordern,

    mfg (Auto)Bert

  • Frage zum Dateien abspeichern

    • autoBert
    • 23. Februar 2010 um 20:52

    Hallo clonker,

    Skript hat Fehlermeldungen beim Starten:

    Spoiler anzeigen
    Code
    C:\Programme\AutoIt3\Downloads\clonker\test.au3(91,16) : ERROR: multi-line 'If' missing 'Then'.
    if  $Msg = $txt
    ~~~~~~~~~~~~~~~^
    C:\Programme\AutoIt3\Downloads\clonker\test.au3(92,1) : ERROR: syntax error
    then
    ^
    C:\Programme\AutoIt3\Downloads\clonker\test.au3(107,18) : ERROR: multi-line 'If' missing 'Then'.
    if  $Msg = $excel
    ~~~~~~~~~~~~~~~~~^
    C:\Programme\AutoIt3\Downloads\clonker\test.au3(108,1) : ERROR: syntax error
    then
    ^
    C:\Programme\AutoIt3\Downloads\clonker\test.au3(126,1) : ERROR: missing Wend.
    Case
    ^
    C:\Programme\AutoIt3\Downloads\clonker\test.au3(74,5) : REF: missing Wend.
        While
    ~~~~^
    C:\Programme\AutoIt3\Downloads\clonker\test.au3 - 5 error(s), 0 warning(s)
    Alles anzeigen

    , daher mit Hilfe Tidy in Form gebracht und danch lauffähig gemacht:

    Spoiler anzeigen
    [autoit]

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

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

    AutoIt Version: 3.3.4.0
    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 <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=c:\users\jonas\downloads\koda_1.7.2.0\forms\wachstum.kxf
    $Form1_1 = GUICreate("Wachstumssimulator Version 1.5", 515, 199, 192, 135)
    $lineargo = GUICtrlCreateButton("Berechnen", 48, 144, 97, 33, $WS_GROUP)
    $expogo = GUICtrlCreateButton("Berechnen", 200, 144, 91, 33, $WS_GROUP)
    $bgrgo = GUICtrlCreateButton("Berechnen", 392, 144, 91, 33, $WS_GROUP)
    $Label2 = GUICtrlCreateLabel("Bestand", 32, 40, 43, 17)
    $Label3 = GUICtrlCreateLabel("Änderung", 31, 65, 50, 17)
    $Label4 = GUICtrlCreateLabel("Zeit", 35, 90, 22, 17)
    $linearb = GUICtrlCreateInput("", 80, 40, 57, 21)
    $lineard = GUICtrlCreateInput("", 81, 62, 57, 21)
    $lineart = GUICtrlCreateInput("", 79, 86, 57, 21)
    $Label6 = GUICtrlCreateLabel("Bestand", 192, 38, 43, 17)
    $Label7 = GUICtrlCreateLabel("Änderung", 191, 63, 50, 17)
    $Label8 = GUICtrlCreateLabel("Zeit", 195, 88, 22, 17)
    $expob = GUICtrlCreateInput("", 240, 38, 57, 21)
    $expod = GUICtrlCreateInput("", 241, 60, 57, 21)
    $expot = GUICtrlCreateInput("", 239, 84, 57, 21)
    $Label10 = GUICtrlCreateLabel("Bestand", 392, 38, 43, 17)
    $Label11 = GUICtrlCreateLabel("Änderung", 391, 63, 50, 17)
    $Label12 = GUICtrlCreateLabel("Zeit", 395, 88, 22, 17)
    $bgrb = GUICtrlCreateInput("", 440, 38, 57, 21)
    $bgrd = GUICtrlCreateInput("", 441, 60, 57, 21)
    $bgrt = GUICtrlCreateInput("", 439, 84, 57, 21)
    $Label13 = GUICtrlCreateLabel("Wachstumsgrenze", 343, 114, 92, 17)
    $bgrn = GUICtrlCreateInput("", 435, 110, 57, 21)
    $Label1 = GUICtrlCreateLabel("Exponentiell", 248, 16, 61, 17)
    $Label5 = GUICtrlCreateLabel("Linear", 86, 14, 33, 17)
    $Label9 = GUICtrlCreateLabel("Begrenzt", 446, 14, 46, 17)
    GUISetState(@SW_SHOW)

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

    MsgBox(64, "Willkommen !", " Herzlich Willkommen zum Wachstumssimulator Version 1.0 von Florian Jonas !")
    #EndRegion ### END Koda GUI section ###
    While 1
    $nMsg = GUIGetMsg()

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

    If $nMsg = $GUI_EVENT_CLOSE Then Exit
    Select

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

    Case $nMsg = $lineargo
    $Anzahl = GUICtrlRead($lineart)
    $file = FileOpen("Lineareswachstum.txt", 1)
    $aenderunglinear = GUICtrlRead($lineard)
    $linearbestand = GUICtrlRead($linearb)
    $linearmax = GUICtrlRead($lineart)
    $linearjahr = 0
    FileWriteLine($file, " Zeit t Bestand B ")
    For $i = 0 To $linearmax - 1
    $linearjahr = $linearjahr + 1
    $linearbestand = $linearbestand + $aenderunglinear
    FileWriteLine($file, $linearjahr & " " & $linearbestand)
    Next
    MsgBox(64, "Erfolgreich", " Datei wurde unter dem Namen Lineareswachstum.txt erstellt !")
    FileClose($file)
    Exit

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

    Case $nMsg = $expogo
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 200, 147, 192, 124)
    $txt = GUICtrlCreateButton("Txt", 16, 104, 75, 25, $WS_GROUP)
    $excel = GUICtrlCreateButton("Excel", 112, 104, 75, 25, $WS_GROUP)
    $Label1 = GUICtrlCreateLabel("Soll als Excel oder Txt gespeichert werden ?", 24, 48, 150, 51)
    GUISetState(@SW_SHOW)

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

    While 1
    $Msg = GUIGetMsg()

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

    If $Msg = $txt Then
    $file = FileOpen("Exponentielles_Wachstum.txt", 1)
    $aenderungexpo = GUICtrlRead($expod) / 100
    $expobestand = GUICtrlRead($expob)
    $expomax = GUICtrlRead($expot)
    $expojahr = 0
    FileWriteLine($file, " Zeit t Bestand B ")
    For $i = 0 To $expomax - 1
    $expojahr = $expojahr + 1
    $expobestand = $expobestand + ($aenderungexpo * $expobestand)
    FileWriteLine($file, $expojahr & " " & $expobestand)

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

    Next
    MsgBox(64, "Erfolgreich", " Datei wurde unter dem Namen Exponentielles_Wachstum.txt erstellt !")
    FileClose($file)
    Exit
    EndIf
    If $Msg = $excel Then
    $file = FileOpen("Exponentielles_Wachstum.xls", 1)

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

    $aenderungexpo = GUICtrlRead($expod) / 100
    $expobestand = GUICtrlRead($expob)
    $expomax = GUICtrlRead($expot)
    $expojahr = 0
    FileWriteLine($file, " Zeit t Bestand B ")
    For $i = 0 To $expomax - 1
    $expojahr = $expojahr + 1
    $expobestand = $expobestand + ($aenderungexpo * $expobestand)
    FileWriteLine($file, $expojahr & " " & $expobestand)

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

    Next
    MsgBox(64, "Erfolgreich", " Datei wurde unter dem Namen Exponentielles_Wachstum.xls erstellt !")
    FileClose($file)
    Exit
    EndIf
    WEnd

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

    Case $nMsg = $bgrgo
    $Anzahl = GUICtrlRead($bgrt)
    $file = FileOpen("Begrenztes_Wachstum.txt", 1)
    $aenderungbgr = GUICtrlRead($bgrd) / 100
    $bgrbestand = GUICtrlRead($bgrb)
    $bgrmax = GUICtrlRead($bgrt)
    $bgrgrenze = GUICtrlRead($bgrn)
    $bgrjahr = 0
    FileWriteLine($file, " Zeit t Bestand B ")
    For $i = 0 To $bgrmax - 1
    $bgrjahr = $bgrjahr + 1
    $bgrbestand = $bgrbestand + ($aenderungbgr * ($bgrgrenze - $bgrbestand))
    FileWriteLine($file, $bgrjahr & " " & $bgrbestand)

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

    Next
    MsgBox(64, "Erfolgreich", " Datei wurde unter dem Namen Begrenztes_Wachstum.txt erstellt !")
    FileClose($file)
    Exit
    EndSelect
    WEnd

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

    Teste es ausgiebig durch, ob noch alles so funktioniert wie du es willst, ansonsten zurück zu deinem Stand und die Fehler beseitigen

    Edit: fehlende FileClose eingefügt und doppelte Includes entfernt etc.

    mfg (Auto)Bert

  • SpeedGear in AutoIt schreiben

    • autoBert
    • 23. Februar 2010 um 20:23

    Hallo sl4y3r,

    bie Speedgear dürfte es sich hauptsächlich um einen Werbe-Hpe handeln. Prozesse können zwar 5 unterschiedliche Priorietäten haben, aber die Spieleprogrammierer weden sich ja wohl nicht den langsamsten heraussuchen. Wenn du (d)ein Spiel auf einem sauber installierten PC startest, und nicht gleichzeitih noch andere konkurrierende Anwendungen laufen wird sich der Gewschwindigkeitsvorteil gegen 0 bewegen.

    mfg (Auto)Bert

  • hilfe beim dowloaden

    • autoBert
    • 23. Februar 2010 um 19:25

    Hallo ophiel,

    wenn die URL korrekt ist (derzeit ja nur Test) dann klappt's auch,

    mfg (Auto)Bert

  • Frage zum Dateien abspeichern

    • autoBert
    • 23. Februar 2010 um 19:03

    Hallo clonker,

    hier das Beispiel aus der Hilfe (leicht abgeändert):

    Spoiler anzeigen
    [autoit]

    $file = FileOpen("test.xls", 10)

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

    ; Prüfen, ob Datei im Schreibmodus geöffnet ist
    If $file = -1 Then
    MsgBox(0, "Fehler", "Die Datei konnte nicht geöffnet werden.")
    Exit
    EndIf

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

    FileWrite($file, "Zeile 1" & @TAB)
    FileWrite($file, "Immer noch Zeile 1" & @CRLF)
    FileWrite($file, "Zeile 2" & @TAB)
    FileWrite($file, "Zeile 2 Spalte 2")

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

    FileClose($file)

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • listvieweintrag verschieben

    • autoBert
    • 23. Februar 2010 um 18:45

    Hallo JuraX,

    hier meine Version (Spalte für Pfad ist berücksichtigt):

    Spoiler anzeigen
    [autoit]

    #NoTrayIcon
    #include <GDIPlus.au3>
    #include <Bass.au3>
    #include <_GetFilesFolder_Rekursiv.au3>
    #include <GuiListView.au3>
    #include <Misc.au3>
    #include <BassConstants.au3>
    #include <WindowsConstants.au3>
    #include <ListViewConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StructureConstants.au3>
    #include <WinAPI.au3>
    #include <GDIPlusConstants.au3>
    #include <basstags.au3>
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Icon=INRadio Entwicklungs-umgebung\INRadio.ico
    #AutoIt3Wrapper_Outfile=Localtuner.exe
    #AutoIt3Wrapper_Res_Fileversion=2.0.0.0
    #AutoIt3Wrapper_Res_LegalCopyright=JuraX
    #AutoIt3Wrapper_Res_Language=1031
    #AutoIt3Wrapper_Res_Field=ProductVersion|2.0
    #AutoIt3Wrapper_Run_Au3check=n
    #AutoIt3Wrapper_Run_Tidy=y
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    ;===================================================================================================
    ; INRadio-Localtuner by JuraX
    ;===================================================================================================

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

    _GDIPlus_Startup()
    Global Const $WM_DROPFILESplay = 0x0233
    Global Const $WM_DROPFILES = 0x0233
    Global $gaDropFiles[1]
    Global $aItem[2]
    Global $playing_state = -1
    Global $MusicHandle
    Global $titelnummer = 0
    Global $progress_slider, $slots, $hwnd
    Global $fftstruct = DllStructCreate("float[128]")
    Global $song_length = _BASS_ChannelGetLength($MusicHandle, $BASS_POS_BYTE)
    Global $tags
    Global $ARRPLAY
    $Width = 380
    $Height = 650
    Global $hwnd = GUICreate("INRadio-Localtuner", $Width, $Height, -1, -1, Default, $WS_EX_ACCEPTFILES)
    $TITART = GUICtrlCreateLabel("", 130, 220, 500, 70)
    $slots = GUICtrlCreateLabel(GUICtrlRead($progress_slider), 8, 8, 150, 17)
    $Close = GUICtrlCreateButton("Close", 296, 160, 75, 25, 0)
    $PlayPause = GUICtrlCreateButton("Play|Pause", 216, 160, 75, 25, 0)
    $Stop = GUICtrlCreateButton("Stop", 136, 160, 75, 25, 0)
    $newfile = GUICtrlCreateButton("Andere Datei", 36, 160, 75, 25, 0)
    $progress_slider = GUICtrlCreateProgress(8, 32, 236, 20)
    $ordner = GUICtrlCreateButton("Neue Bibliothek", 136, 330)
    GUICtrlCreateLabel("Lautstärke", 8, 190, 80, 20)
    $Volume_slider = GUICtrlCreateSlider(8, 250, 366, 80)
    $hListView = GUICtrlCreateListView('Dateiname|Pfad', 10, 375, 350, 200)
    GUICtrlSetLimit($progress_slider, 100)
    GUICtrlSetData($Volume_slider, 100)
    SoundSetWaveVolume(100)
    $Playliste = GUICtrlCreateButton("Playliste abspielen", 20, 330)

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

    #Region StartUp

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

    #Region OPT
    Opt("TrayMenuMode", 1)
    Opt("MouseCoordMode", 0)
    #EndRegion OPT

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

    #Region Tray
    $uottray = TrayCreateItem("Anzeigen")
    $totray = TrayCreateItem("Verstecken")
    $deleate = TrayCreateItem("Schließen")
    TraySetState()
    #EndRegion Tray

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

    ;Bass StartUp
    _BASS_STARTUP(@ScriptDir & "\BASS.dll")
    _Bass_Tags_Startup("BassTags.dll")
    _BASS_Init(0, -1, 44100, 0, "")

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

    If @error Then
    MsgBox(0, "Error", "Sound konnte nicht Initialisiert werden!")
    Exit
    EndIf

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

    #Region Register
    If IsDeclared("Musichandle") Then
    AdlibRegister("tagout", 3000)
    EndIf
    AdlibRegister("Aktualisieren")
    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
    GUIRegisterMsg($WM_DROPFILES, 'WM_DROPFILES_FUNC')

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

    #EndRegion Register

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

    #EndRegion StartUp

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

    #Region GUI

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

    #Region BIB Füllen

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

    $return = IniRead(@ScriptDir & "\INRadio.ini", "Load", "BIB", "")
    If $return = "" Then
    $return = 'C:\Users\' & @UserName & '\Desktop'
    EndIf
    $returnputin = _GetFilesFolder_Rekursiv($return, "mp3", 0)
    For $i = 1 To $returnputin[0]
    $dateiname = StringSplit($returnputin[$i], "\")
    GUICtrlCreateListViewItem($dateiname[$dateiname[0]] & "|" & $returnputin[$i], $hListView)
    Next
    #EndRegion BIB Füllen

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

    $rightVol = GUICtrlCreateProgress(8, 88, 236, 17)
    GUICtrlSetLimit(-1, 100, 0)
    GUICtrlCreateLabel("Right Channel Volume Level", 8, 112, 150, 17)
    $LeftVol = GUICtrlCreateProgress(8, 136, 236, 17)
    GUICtrlSetLimit(-1, 100, 0)
    GUICtrlCreateLabel("Left Channel Volume Level", 8, 64, 150, 17)

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

    GUISetState()
    #EndRegion GUI

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

    #Region GDIstartup
    _GUICtrlListView_SetColumnWidth($hListView, 0, $LVSCW_AUTOSIZE)
    $iX = 120
    $iY = 145
    $graphics = _GDIPlus_GraphicsCreateFromHWND($hwnd)
    $bitmap = _GDIPlus_BitmapCreateFromGraphics($iX, $iY, $graphics)
    $backbuffer = _GDIPlus_ImageGetGraphicsContext($bitmap)
    _GDIPlus_GraphicsClear($backbuffer)
    $pen1_size = 4
    $pen1 = _GDIPlus_PenCreate(0, $pen1_size)
    $pen2_size = 4
    $pen2 = _GDIPlus_PenCreate(0, $pen2_size)
    $pen3_size = 3
    $pen3 = _GDIPlus_PenCreate(0, $pen3_size)

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

    $fall_speed_l_threshold = 0
    $fall_speed_r_threshold = 0
    $equalizer_width = 24
    $max_l = 0
    $max_r = 0
    $fall_speed = 5
    $fire_up = 15

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

    $fft_start = 7
    $fft_end = 127
    $fft_boost = 750
    $dy = Int($iY / ($fft_end - $fft_start)) + $pen3_size
    $dyy = Int($iY / $dy / 2)
    $eq = 1
    Dim $mpos[2]
    #EndRegion GDIstartup

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

    #Region Loop

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

    While (True)
    $selectcode = _GUICtrlListView_GetSelectedCount($hListView)
    If _IsPressed("2E") Then
    _GUICtrlListView_DeleteItemsSelected($hListView)
    EndIf
    _GUICtrlListView_SetColumnWidth($hListView, 1, 0)
    $soundoff = _SoundGetWaveVolume()
    GUICtrlSetData($Volume_slider, $soundoff)
    If $playing_state = 1 Then
    $song_length = _BASS_ChannelGetLength($MusicHandle, $BASS_POS_BYTE)
    $current = _BASS_ChannelGetPosition($MusicHandle, $BASS_POS_BYTE)
    $percent = Round(($current / $song_length) * 100, 0)
    ConsoleWrite("MH: " & $MusicHandle & " Current: " & $current & " song_length: " & $song_length & @CRLF)
    GUICtrlSetData($progress_slider, $percent)
    $levels = _BASS_ChannelGetLevel($MusicHandle)
    $rightChLvl = _LoWord($levels)
    $rightChLvlper = Round(($rightChLvl / 32768) * 100, 0)
    $LeftChLvl = _HiWord($levels)
    $leftChLvlper = Round(($LeftChLvl / 32768) * 100, 0)
    If IsArray($ARRPLAY) Then
    If $current = $song_length Then
    GUICtrlSetData($progress_slider, 0)
    If $playing_state = 1 Then
    _BASS_ChannelStop($MusicHandle)
    EndIf
    $titelnummer += 1
    If $titelnummer = UBound($ARRPLAY) - 1 Then $titelnummer = 0
    ; Sleep (50)
    $playing_state = 1
    $MusicHandle = _BASS_StreamCreateFile(False, $ARRPLAY[$titelnummer][1], 0, 0, 0)
    _BASS_ChannelPlay($MusicHandle, 0)
    EndIf
    EndIf
    Else
    $rightChLvlper = 0
    $leftChLvlper = 0
    EndIf
    GUICtrlSetData($rightVol, $rightChLvlper)
    GUICtrlSetData($LeftVol, $leftChLvlper)
    Display_Vis($eq)

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

    $Msg = GUIGetMsg()
    $tmsg = TrayGetMsg()
    Switch $tmsg

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

    Case $uottray
    GUISetState(@SW_SHOW)
    Case $totray
    GUISetState(@SW_HIDE)
    Case $deleate
    EXITF()
    EndSwitch
    Switch $Msg

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

    Case $Close, $GUI_EVENT_CLOSE
    EXITF()
    Case $PlayPause
    If $playing_state = 1 Then
    _Bass_ChannelPause($MusicHandle)
    $playing_state = 2
    ElseIf $playing_state = 2 Then
    _BASS_ChannelPlay($MusicHandle, 0)
    $playing_state = 1
    EndIf
    Case $Stop
    If $playing_state = 1 Then
    _BASS_ChannelStop($MusicHandle)
    $playing_state = -1
    EndIf
    $ARRPLAY = 0
    Sleep(50)
    Case $newfile
    If $playing_state = 1 Then
    _BASS_ChannelStop($MusicHandle)
    EndIf
    $ARRPLAY = 0
    Sleep(50)
    $file = FileOpenDialog("Open...", "", "MP3 Files (*.mp3)")
    $MusicHandle = _BASS_StreamCreateFile(False, $file, 0, 0, 0)
    _BASS_ChannelPlay($MusicHandle, 0)
    $playing_state = 1
    Case $Volume_slider
    SoundSetWaveVolume(GUICtrlRead($Volume_slider))
    Case $ordner
    $var = FileSelectFolder("Ordner wählen", "")
    IniWrite(@ScriptDir & "\INRadio.ini", "Load", "BIB", $var)
    $returnputin = _GetFilesFolder_Rekursiv($var, "mp3", 0)
    For $i = 1 To $returnputin[0]
    $dateiname = StringSplit($returnputin[$i], "\")
    GUICtrlCreateListViewItem($dateiname[$dateiname[0]] & "|" & $returnputin[$i], $hListView)
    Next
    Case $Playliste
    If $playing_state = 1 Then
    _BASS_ChannelStop($MusicHandle)
    EndIf
    $Read = GUICtrlRead($hListView)
    If $Read = "" Then
    $ARRPLAY = _ListViewToArray($hListView)
    $playing_state = 1
    $MusicHandle = _BASS_StreamCreateFile(False, $ARRPLAY[$titelnummer][1], 0, 0, 0)
    _BASS_ChannelPlay($MusicHandle, 0)
    Else
    $Read -= 15
    Local $sString = ""
    For $i = $Read To _GUICtrlListView_GetItemCount($hListView) - 1
    $sString &= _GUICtrlListView_GetItemTextString($hListView, $i)
    $sString &= ";"
    Next
    $aSplit = StringSplit(StringTrimRight($sString, 1), ";", 2)
    $iUB1 = UBound($aSplit)
    Dim $anext[$iUB1][1]
    For $i = 0 To $iUB1 - 1
    $aSplit2 = StringSplit($aSplit[$i], "|", 2)
    $iUB2 = UBound($aSplit2)
    If $iUB2 > UBound($anext, 2) Then ReDim $anext[$iUB1][$iUB2]
    For $j = 0 To $iUB2 - 1
    $anext[$i][$j] = $aSplit2[$j]
    Next
    Next
    $ARRPLAY = $anext
    $playing_state = 1
    $MusicHandle = _BASS_StreamCreateFile(False, $anext[$titelnummer][1], 0, 0, 0)
    _BASS_ChannelPlay($MusicHandle, 0)
    EndIf
    Case $GUI_EVENT_DROPPED
    For $i = 0 To UBound($gaDropFiles) - 1
    GUICtrlCreateListViewItem(StringRegExpReplace($gaDropFiles[$i], '.*\\(.*)\..*', '$1'), $hListView)
    _GUICtrlListView_SetColumnWidth($hListView, 0, $LVSCW_AUTOSIZE)
    Next
    Case $GUI_EVENT_PRIMARYDOWN
    _MoveListViewItem()
    EndSwitch

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

    WEnd

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

    #EndRegion Loop
    $mpos = MouseGetPos()
    If $mpos[0] >= $Width - $iX - 10 And $mpos[0] <= $Width - 10 And $mpos[1] > 8 And $mpos[1] <= $iY + 8 And _IsPressed("01", "user32.dll") And WinActive($hwnd) Then
    $eq *= -1
    EndIf
    #Region Func's

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

    Func WM_DROPFILES_FUNC($hwnd, $msgID, $wParam, $lParam) ; diese Funktion wird benötigt, damit man auch mehrere Dateien droppen kann
    Local $nSize, $pFileName
    Local $nAmt = DllCall('shell32.dll', 'int', 'DragQueryFileW', 'hwnd', $wParam, 'int', 0xFFFFFFFF, 'ptr', 0, 'int', 255)
    For $i = 0 To $nAmt[0]
    $nSize = DllCall('shell32.dll', 'int', 'DragQueryFileW', 'hwnd', $wParam, 'int', $i, 'ptr', 0, 'int', 0)
    $nSize = $nSize[0] + 1
    $pFileName = DllStructCreate('wchar[' & $nSize & ']')
    DllCall('shell32.dll', 'int', 'DragQueryFileW', 'hwnd', $wParam, 'int', $i, 'ptr', DllStructGetPtr($pFileName), 'int', $nSize)
    $filename = DllStructGetData($pFileName, 1) ;Dateinamen holen
    ConsoleWrite($filename & @CRLF)
    ReDim $gaDropFiles[$i + 1]
    $gaDropFiles[$i] = DllStructGetData($pFileName, 1)
    $pFileName = 0
    Next
    ;_ArrayDisplay($gaDropFiles)
    For $i = 0 To UBound($gaDropFiles) - 2 ;kommt derzeit immer noch ein leerer Eintrag am schluss
    GUICtrlCreateListViewItem(StringRegExpReplace($gaDropFiles[$i], '.*\\(.*)\..*', '$1') & "|" & $gaDropFiles[$i], $hListView)
    Next
    _GUICtrlListView_SetColumnWidth($hListView, 0, $LVSCW_AUTOSIZE) ;erst wenn alle eigefügt sind
    EndFunc ;==>WM_DROPFILES_FUNC

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

    Func Aktualisieren()
    $Sliderstatus = GUICtrlRead($progress_slider)
    GUICtrlSetData($slots, $Sliderstatus)
    EndFunc ;==>Aktualisieren

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

    Func WM_NOTIFY($hwnd, $msgID, $wParam, $lParam);Für Doppelcklick Erkennung
    Local $tagNMHDR, $event, $hwndFrom, $code
    $tagNMHDR = DllStructCreate("int;int;int", $lParam)
    If @error Then Return 0
    $code = DllStructGetData($tagNMHDR, 3)
    If $wParam = $hListView And $code = -3 And _GUICtrlListView_GetSelectedCount($hListView) > 0 Then
    For $i = 0 To _GUICtrlListView_GetItemCount($hListView)
    If _GUICtrlListView_GetItemSelected($hListView, $i) Then
    $aItem = _GUICtrlListView_GetItemTextArray($hListView, $i)
    ;~ In aItem[1] steht der Dateiname und in $aItem[2] der Pfad zincl. Dateinamen
    _LeftDblClick()
    EndIf
    Next
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

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

    Func _LeftDblClick()
    If $playing_state = 1 Then
    _BASS_ChannelStop($MusicHandle)
    EndIf
    $titelnummer = -1
    $file = $aItem[2]
    $MusicHandle = _BASS_StreamCreateFile(False, $file, 0, 0, 0)
    _BASS_ChannelPlay($MusicHandle, 0)
    $playing_state = 1
    EndFunc ;==>_LeftDblClick

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

    Func Display_Vis($eq = 1)
    _GDIPlus_GraphicsClear($backbuffer, 0x80F0F0F0)
    If $eq > 0 Then
    $levels = _BASS_ChannelGetLevel($MusicHandle)
    $LeftChLvl = $leftChLvlper ;Round(_HiWord($levels) / $iY, 0)
    $rightChLvl = $rightChLvlper ;Round(_LoWord($levels) / $iY, 0)

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

    If $max_l <= $LeftChLvl Then ;fire up higest line
    $max_l = $LeftChLvl + $fire_up
    $fall_speed_l_threshold = 20
    Else
    If $fall_speed_l_threshold <= 0 Then ;increase fall speed of highest line faster until threshold is <= 0 (second fall part)
    If $max_l > $LeftChLvl + $pen2_size * 2 Then $max_l -= $fall_speed
    Else
    $fall_speed_l_threshold -= 1 ;increase fall speed of highest line by slower until threshold is <= 0 (first fall part)
    If $max_l > $LeftChLvl + $pen2_size * 2 Then $max_l -= $fall_speed / 3
    EndIf
    EndIf

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

    If $max_r <= $rightChLvl Then
    $max_r = $rightChLvl + $fire_up
    $fall_speed_r_threshold = 20
    Else
    If $fall_speed_r_threshold <= 0 Then
    If $max_r > $rightChLvl + $pen2_size * 2 Then $max_r -= $fall_speed
    Else
    $fall_speed_r_threshold -= 1
    If $max_r > $rightChLvl + $pen2_size * 2 Then $max_r -= $fall_speed / 3
    EndIf
    EndIf
    _BASS_ChannelGetData($MusicHandle, DllStructGetPtr($fftstruct), $BASS_DATA_FFT256)
    For $i = $fft_start To $fft_end Step $dy
    $fft = Round(DllStructGetData($fftstruct, 1, $i + 1) * $fft_boost)
    $r = (-(Cos(1.7 * $fft / 256) + 1) * 0.5) * 256
    $g = ((Cos(4 * $fft / 256) + 1) * 0.5) * 256
    $b = 0
    _GDIPlus_PenSetColor($pen3, "0xFF" & Hex($r, 2) & Hex($g, 2) & Hex($b, 2))
    _GDIPlus_GraphicsDrawLine($backbuffer, $iX / 5, $i + $dyy, $iX / 5 + $fft, $i + $dyy, $pen3)
    Next
    EndIf
    _GDIPlus_GraphicsDrawImageRect($graphics, $bitmap, $Width - $iX - 10, 8, $iX, $iY)
    EndFunc ;==>Display_Vis

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

    Func _SoundGetWaveVolume()
    Local $WaveVol = -1, $p, $ret
    Const $MMSYSERR_NOERROR = 0
    $p = DllStructCreate("dword")
    If @error Then
    SetError(2)
    Return -2
    EndIf
    $ret = DllCall("winmm.dll", "long", "waveOutGetVolume", "long", -1, "long", DllStructGetPtr($p))
    If ($ret[0] == $MMSYSERR_NOERROR) Then
    $WaveVol = Round(Dec(StringRight(Hex(DllStructGetData($p, 1), 8), 4)) / 0xFFFF * 100)
    Else
    SetError(1)
    EndIf
    $p = ""
    Return $WaveVol
    EndFunc ;==>_SoundGetWaveVolume

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

    Func EXITF()
    _BASS_Stop()
    _BASS_Free()
    _GDIPlus_PenDispose($pen1)
    _GDIPlus_PenDispose($pen2)
    _GDIPlus_PenDispose($pen3)
    _GDIPlus_BitmapDispose($bitmap)
    _GDIPlus_GraphicsDispose($graphics)
    _GDIPlus_GraphicsDispose($backbuffer)
    _GDIPlus_Shutdown()
    _GDIPlus_Shutdown()
    $fftstruct = 0
    ProcessClose("Radiotuner.exe")
    AdlibUnRegister("Aktualisieren")
    Exit
    EndFunc ;==>EXITF

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

    Func _ListViewToArray($hListView)
    If Not IsHWnd($hListView) Then $hListView = GUICtrlGetHandle($hListView)
    Local $sString = ""
    For $i = 0 To _GUICtrlListView_GetItemCount($hListView) - 1
    $sString &= _GUICtrlListView_GetItemTextString($hListView, $i)
    $sString &= ";"
    Next
    $aSplit = StringSplit(StringTrimRight($sString, 1), ";", 2)
    $iUB1 = UBound($aSplit)
    Dim $aRet[$iUB1][1]
    For $i = 0 To $iUB1 - 1
    $aSplit2 = StringSplit($aSplit[$i], "|", 2)
    $iUB2 = UBound($aSplit2)
    If $iUB2 > UBound($aRet, 2) Then ReDim $aRet[$iUB1][$iUB2]
    For $j = 0 To $iUB2 - 1
    $aRet[$i][$j] = $aSplit2[$j]
    Next
    Next
    Return $aRet
    EndFunc ;==>_ListViewToArray

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

    Func TAGOUT()
    $tags = _Bass_Tags_Read($MusicHandle, "%TITL" & "-" & "%ARTI")
    If $tags = "" & "-" & "" Then
    GUICtrlSetData($TITART, "Konnte ID3-Tags nicht Lesen!")
    Else
    GUICtrlSetData($TITART, $tags)
    EndIf
    EndFunc ;==>TAGOUT

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

    Func _MoveListViewItem()
    Local $von, $bis, $down = GUIGetCursorInfo($hwnd)

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

    If $down[4] = $hListView Then
    $von = _GUICtrlListView_GetHotItem($hListView)

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

    While $down[2]
    $down = GUIGetCursorInfo($hwnd)
    Sleep(50)
    WEnd

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

    If $down[4] = $hListView Then
    $bis = _GUICtrlListView_GetHotItem($hListView)

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

    If Not ($von = $bis) Then
    _MoveLVItem($von, $bis - $von, $hListView)
    _GUICtrlListView_SetItemState($hListView, $bis, 1, 1)
    EndIf
    EndIf
    EndIf
    EndFunc ;==>_MoveListViewItem

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

    ;----------------------------------------------------------------------------------------------------------------------
    ; Funktion _MoveLVItem($ItemIndex, $StepWidth, $hLV)
    ;
    ; Beschreibung verschiebt per Index angegebenen Eintrag eines ListViewCtrl um eine Anzahl Positionen
    ;
    ; Parameter $ItemIndex: Index der Zeile
    ; $StepWidth: Anzahl Zeilen um die der Eintrag verschoben wird (negative Zahl - aufwärts)
    ; $hLV: ListView ID
    ;
    ; Erfordernisse #include <GuiListView.au3>
    ;
    ; Autor BugFix ([email='bugfix@autoit.de'][/email])
    ;----------------------------------------------------------------------------------------------------------------------

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

    Func _MoveLVItem($ItemIndex, $StepWidth, $hLV)
    If ($ItemIndex + $StepWidth) < 0 Or _
    ($ItemIndex + $StepWidth) > _GUICtrlListView_GetItemCount($hLV) - 1 Then
    SetError(1)
    Return 0
    EndIf
    Local $askip = _GUICtrlListView_GetItemTextArray($hLV, $ItemIndex)

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

    If $StepWidth > 0 Then
    _GUICtrlListView_InsertItem($hLV, $askip[1], $ItemIndex + $StepWidth + 1)
    _GUICtrlListView_SetItemText($hLV, $ItemIndex + $StepWidth + 1, $askip[2], 1)
    _GUICtrlListView_DeleteItem($hLV, $ItemIndex)
    Else
    _GUICtrlListView_InsertItem($hLV, $askip[1], $ItemIndex + $StepWidth)
    _GUICtrlListView_SetItemText($hLV, $ItemIndex + $StepWidth, $askip[2], 1)
    _GUICtrlListView_DeleteItem($hLV, $ItemIndex + 1)
    EndIf

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

    Return -1
    EndFunc ;==>_MoveLVItem
    #EndRegion Func's

    [/autoit]

    nach unten klappt leider nur ca. 80% bei mir,

    mfg (Auto)Bert

  • listvieweintrag verschieben

    • autoBert
    • 23. Februar 2010 um 17:47

    Halo JuraX,

    bei mir klappt es nach oben immer, aber nach unten nur in ca. 80% der Fälle in dn anderen 20% ist der Eintrg doppelt da (also das ursprüngliche wird nicht gelöscht. Hier meine geänderte func:

    [autoit]

    ;----------------------------------------------------------------------------------------------------------------------
    ; Funktion _MoveLVItem($ItemIndex, $StepWidth, $hLV)
    ;
    ; Beschreibung verschiebt per Index angegebenen Eintrag eines ListViewCtrl um eine Anzahl Positionen
    ;
    ; Parameter $ItemIndex: Index der Zeile
    ; $StepWidth: Anzahl Zeilen um die der Eintrag verschoben wird (negative Zahl - aufwärts)
    ; $hLV: ListView ID
    ;
    ; Erfordernisse #include <GuiListView.au3>
    ;
    ; Autor BugFix ([email='bugfix@autoit.de'][/email])
    ;----------------------------------------------------------------------------------------------------------------------
    #include <GuiListView.au3>
    Func _MoveLVItem($ItemIndex, $StepWidth, $hLV)
    If ($ItemIndex + $StepWidth) < 0 Or _
    ($ItemIndex + $StepWidth) > _GUICtrlListView_GetItemCount($hLV) - 1 Then
    SetError(1)
    Return 0
    EndIf
    Local $txt2skip = _GUICtrlListView_GetItemText($hLV, $ItemIndex)
    ;bei mehrsplatigen LVs noch umstellen auf _GUICtrlListView_GetItemTextArray
    ConsoleWrite($txt2skip & " " & $ItemIndex & " " & $StepWidth & @crlf)

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

    If $StepWidth > 0 Then
    ConsoleWrite(">0" & @CRLF)
    _GUICtrlListView_InsertItem($hLV, $txt2skip, $ItemIndex + $StepWidth + 1)
    _GUICtrlListView_DeleteItem($hLV, $ItemIndex)
    Else
    ConsoleWrite("Else" & @CRLF)
    _GUICtrlListView_InsertItem($hLV, $txt2skip, $ItemIndex + $StepWidth)
    _GUICtrlListView_DeleteItem($hLV, $ItemIndex + 1)
    EndIf

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

    Return -1
    EndFunc ;==>_MoveLVItem

    [/autoit]

    mfg (Auto)Bert

  • listvieweintrag verschieben

    • autoBert
    • 23. Februar 2010 um 16:27

    Hallo JuraX,

    von 2007 bis heute hat sich anscheinend die Syntax des Befehls _GUICtrlListView_InsertItem geändert. Der Text wird als 2. Parameter erwartet und danach der Itemindex, bei dir ist es aber genau umgekehrt,

    mfg (Auto)Bert

  • Vorhandene Programm-GUI umbauen/ergänzen - mit AutoIT sinnvoll machbar?

    • autoBert
    • 23. Februar 2010 um 11:00

    Hallo beagle,

    es gibt fast nichts, was mit AutoIt nicht möglich wäre. Um Controls in Fremdanwendungen zu ändern solltest duch dich anstatt mit KODA zu beschäftigen die Kapitel in der Hilfe unter Allgemeines zu AutoIt:

    • AutoIt Fenster-Informations-Tool (AU3Info)
    • Fenster-Titel und -text (Grundlagen)
    • Fenster-Titel und -Text (erweitert)
    • Controls

    durchlesen und eventuell die Tutorials durcharbeiten. Danach ist folgendes kleine Skript, das die MC-Taste des Taschenrechners verändert ein Kinderspiel für dich:

    [autoit]

    Run("calc.exe")
    WinWait("[Class:SciCalc]")
    $hWnd = WinGetHandle("[Class:SciCalc]")
    SendKeepActive("[Class:SciCalc]")
    Send("!as") ;Umschalten auf Standard-Ansicht
    $hCtrl = "Button1" ;Button 'MC'

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

    $Pos = ControlGetPos($hWnd,"",$hCtrl)
    ControlMove($hWnd,"",$hCtrl,$Pos[0]-5,$Pos[1]-5,$Pos[2]+10,$Pos[3]+10)

    [/autoit]

    mfg (Auto)Bert

  • Text aus Class Edit lesen und in anderes Feld schreiben

    • autoBert
    • 23. Februar 2010 um 07:53

    Hallo SmilingStar,

    falls es sich bei beiden Controls um eigene in deinem Skript handelt vewende GuiCtrlRead, ansonsten schaue dir auch die Hilfe zu ControlGetText bzw. ControlCommand an,

    mfg (Auto)Bert

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™