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

Beiträge von BugFix

  • Gibt es hilfen für Fehleranalysen?

    • BugFix
    • 18. Mai 2008 um 16:41

    Du brauchst nur die Returns der Befehle oder den aktuellen @error-Wert auslesen und entsprechend reagieren.
    Grundsätzlich ist @error = 0, wenn die Funktion erfolgreich war. Welche Errorwerte im Fehlerfall entstehen ist in der Hilfe zu den jeweiligen Funktionen zu lesen.
    Wenn du auf ein Fenster wartest, solltest du ein Timeout (z.B. 10 s) einbauen, falls es geschehen kann, dass es nicht erscheint.
    Also zum Bsp.:

    [autoit]

    ; statt:
    WinWaitActive('Fenster')
    ; besser:
    $OK = False
    $start = TimerInit()
    Do
    If WinActive('Fenster') Then $OK = True
    Sleep(100)
    Until (TimerDiff($start) > 10000) Or $OK
    If Not $OK Then Exit MsgBox(0,'', 'Fehlgeschlagen')
    ; ....

    [/autoit]


    Kannst ja mal ein paar Funktionen von mir anschauen, ich versuche eigentlich eine intensive Fehlerbehandlung einzubauen.

  • Prüfen ob Programm schon offen ist

    • BugFix
    • 18. Mai 2008 um 16:17

    Wie wärs denn mit _Singleton() ? ;)

  • ArrayMore.au3

    • BugFix
    • 18. Mai 2008 um 12:43

    Hab soeben mal noch an der Performanceschraube gedreht :D und ca. 40 % Geschwindigkeitsgewinn mit der neuen Version.
    Testet mal auf euren PC's, ob da ähnlich Unterschiede sind.
    Hab auf meinem Laptop getestet, Celeron M 1,5 GHz, 448 MB RAM.
    Im Test sortiere ich ein Array mit 2400 Zeilen und 8 Spalten, befüllt mit Zufallszahlen 1 bis 40.
    Sortierung: gemischt und wechselnde Sortierrichtung, aber ALLE Spalten ineinander sortiert.

    Code für Test
    [autoit]

    #include <SQLite.au3>
    #include <SQLite.dll.au3>
    #include <array.au3>

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

    Local $b[2400][8]
    For $i = 0 To UBound($b) -1
    For $k = 0 To UBound($b,2) -1
    $b[$i][$k] = Random(1, 40, 1)
    Next
    Next

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

    ConsoleWrite('Variante: _SQLite_GetTable2d' & @CRLF)
    $sum = 0
    $min = 10000
    $max = 0
    $endrun = 20
    For $i = 1 To $endrun
    $start = TimerInit()
    _Array2DSortFree($b, '7|1,1|0,0|1,3|1,5|0,2|0,6|1,4|0')
    $end = TimerDiff($start)
    $sum += $end
    If $end < $min Then $min = $end
    If $end > $max Then $max = $end
    ConsoleWrite($end & ', ')
    If $i = $endrun Then ConsoleWrite(@CRLF)
    Next
    ConsoleWrite('Min: ' & $min & @CRLF)
    ConsoleWrite('Max: ' & $max & @CRLF)
    ConsoleWrite('Durchschnitt: ' & $sum/$endrun & @CRLF & @CRLF)

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

    ConsoleWrite('Variante: _SQLite_Query + _SQLite_FetchData' & @CRLF)
    $sum = 0
    $min = 10000
    $max = 0
    $endrun = 20
    For $i = 1 To $endrun
    $start = TimerInit()
    _Array2DSort_Free($b, '7|1,1|0,0|1,3|1,5|0,2|0,6|1,4|0')
    $end = TimerDiff($start)
    $sum += $end
    If $end < $min Then $min = $end
    If $end > $max Then $max = $end
    ConsoleWrite($end & ', ')
    If $i = $endrun Then ConsoleWrite(@CRLF)
    Next
    ConsoleWrite('Min: ' & $min & @CRLF)
    ConsoleWrite('Max: ' & $max & @CRLF)
    ConsoleWrite('Durchschnitt: ' & $sum/$endrun & @CRLF) ; ca. 40 % schneller als Variante 1

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

    ; erste Version:
    Func _Array2DSortFree(ByRef $ARRAY, $sCOL_ASC)
    If Not IsArray($ARRAY) Then Return SetError(1,0,1)
    Local $tableStr = "CREATE TABLE tblTEST ("
    Local $insertStr = '', $insertBase = "INSERT INTO tblTEST VALUES ("
    Local $sortOrder = '', $sortStr = "SELECT * FROM tblTEST ORDER BY "
    Local $aResult, $iRows, $iColumns, $iRval, $asc
    $sCOL_ASC = StringStripWS($sCOL_ASC, 8)
    Local $ub2nd = UBound($ARRAY, 2)
    If @error = 2 Then
    If (StringLen($sCOL_ASC) > 3) Or (StringLeft($sCOL_ASC, 1) <> '0') Then Return SetError(2,0,1)
    If StringRight($sCOL_ASC, 1) = 0 Then
    _ArraySort($ARRAY)
    Else
    _ArraySort($ARRAY, 1)
    EndIf
    Return 0
    Else
    Local $aOut[UBound($ARRAY)][$ub2nd]
    EndIf
    _SQLite_Startup ()
    If @error > 0 Then Return SetError(3,0,1)
    $hSQL = _SQLite_Open ()
    If @error > 0 Then
    _SQLite_Shutdown ()
    Return SetError(3,0,1)
    EndIf
    For $i = 0 To UBound($ARRAY, 2) -1
    $tableStr &= "'field" & $i & "',"
    Next
    $tableStr = StringTrimRight($tableStr, 1) & ");"
    For $i = 0 To UBound($ARRAY) -1
    $insertStr &= $insertBase
    For $k = 0 To UBound($ARRAY, 2) -1
    $insertStr &= "'" & $ARRAY[$i][$k] & "',"
    Next
    $insertStr = StringTrimRight($insertStr, 1) & ");"
    Next
    If _SQLite_Exec ( $hSQL, $tableStr & $insertStr ) <> $SQLITE_OK Then
    _SQLite_Close ()
    _SQLite_Shutdown ()
    Return SetError(3,0,1)
    EndIf
    If StringInStr($sCOL_ASC, ',') Then
    Local $aOrder = StringSplit($sCOL_ASC, ',')
    For $i = 1 To UBound($aOrder) -1
    If StringInStr($sCOL_ASC, '|') Then
    Local $var = StringSplit($aOrder[$i], '|')
    $asc = ' ASC'
    If $var[2] = 1 Then $asc = ' DESC'
    $sortOrder &= 'field' & $var[1] & $asc & ','
    Else
    _SQLite_Close ()
    _SQLite_Shutdown ()
    Return SetError(4,0,1)
    EndIf
    Next
    $sortOrder = StringTrimRight($sortOrder, 1) & ';'
    Else
    If (StringLen($sCOL_ASC) = 3) And (StringInStr($sCOL_ASC, '|')) Then
    Local $var = StringSplit($sCOL_ASC, '|')
    $asc = ' ASC'
    If $var[2] = 1 Then $asc = ' DESC'
    $sortOrder &= 'field' & $var[1] & $asc
    Else
    _SQLite_Close ()
    _SQLite_Shutdown ()
    Return SetError(4,0,1)
    EndIf
    EndIf
    $iRval = _SQLite_GetTable2d (-1, $sortStr & $sortOrder, $aResult, $iRows, $iColumns)
    If $iRval = $SQLITE_OK Then
    For $i = 1 To UBound($aResult) -1
    For $k = 0 To UBound($aResult,2) -1
    $aOut[$i-1][$k] = $aResult[$i][$k]
    Next
    Next
    Else
    _SQLite_Close ()
    _SQLite_Shutdown ()
    Return SetError(4,0,1)
    EndIf
    _SQLite_Exec ($hSQL, "DROP TABLE tblTEST;")
    _SQLite_Close ()
    _SQLite_Shutdown ()
    $ARRAY = $aOut
    Return 0
    EndFunc

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

    ; zweite Version:
    Func _Array2DSort_Free(ByRef $ARRAY, $sCOL_ASC)
    If Not IsArray($ARRAY) Then Return SetError(1,0,1)
    Local $tableStr = "CREATE TABLE tblTEST ("
    Local $insertStr = '', $insertBase = "INSERT INTO tblTEST VALUES ("
    Local $sortOrder = '', $sortStr = "SELECT * FROM tblTEST ORDER BY "
    Local $hQuery, $aRow, $asc, $i, $k
    $sCOL_ASC = StringStripWS($sCOL_ASC, 8)
    Local $ub2nd = UBound($ARRAY, 2)
    If @error = 2 Then
    If (StringLen($sCOL_ASC) > 3) Or (StringLeft($sCOL_ASC, 1) <> '0') Then Return SetError(2,0,1)
    If StringRight($sCOL_ASC, 1) = 0 Then
    _ArraySort($ARRAY)
    Else
    _ArraySort($ARRAY, 1)
    EndIf
    Return 0
    Else
    Local $aOut[UBound($ARRAY)][$ub2nd]
    EndIf
    _SQLite_Startup ()
    If @error > 0 Then Return SetError(3,0,1)
    $hSQL = _SQLite_Open ()
    If @error > 0 Then
    _SQLite_Shutdown ()
    Return SetError(3,0,1)
    EndIf
    For $i = 0 To UBound($ARRAY, 2) -1
    $tableStr &= "'field" & $i & "',"
    Next
    $tableStr = StringTrimRight($tableStr, 1) & ");"
    For $i = 0 To UBound($ARRAY) -1
    $insertStr &= $insertBase
    For $k = 0 To UBound($ARRAY, 2) -1
    $insertStr &= "'" & $ARRAY[$i][$k] & "',"
    Next
    $insertStr = StringTrimRight($insertStr, 1) & ");"
    Next
    If _SQLite_Exec ( $hSQL, $tableStr & $insertStr ) <> $SQLITE_OK Then
    _SQLite_Shutdown ()
    Return SetError(3,0,1)
    EndIf
    If StringInStr($sCOL_ASC, ',') Then
    Local $aOrder = StringSplit($sCOL_ASC, ',')
    For $i = 1 To UBound($aOrder) -1
    If StringInStr($sCOL_ASC, '|') Then
    Local $var = StringSplit($aOrder[$i], '|')
    $asc = ' ASC'
    If $var[2] = 1 Then $asc = ' DESC'
    $sortOrder &= 'field' & $var[1] & $asc & ','
    Else
    _SQLite_Shutdown ()
    Return SetError(4,0,1)
    EndIf
    Next
    $sortOrder = StringTrimRight($sortOrder, 1) & ';'
    Else
    If (StringLen($sCOL_ASC) = 3) And (StringInStr($sCOL_ASC, '|')) Then
    Local $var = StringSplit($sCOL_ASC, '|')
    $asc = ' ASC'
    If $var[2] = 1 Then $asc = ' DESC'
    $sortOrder &= 'field' & $var[1] & $asc
    Else
    _SQLite_Shutdown ()
    Return SetError(4,0,1)
    EndIf
    EndIf
    If _SQlite_Query (-1, $sortStr & $sortOrder, $hQuery) <> $SQLITE_OK Then
    _SQLite_Shutdown ()
    Return SetError(3,0,1)
    EndIf
    $i = 0
    While _SQLite_FetchData ($hQuery, $aRow) = $SQLITE_OK
    For $k = 0 To UBound($ARRAY,2) -1
    $ARRAY[$i][$k] = $aRow[$k]
    Next
    $i += 1
    WEnd
    _SQLite_Exec ($hSQL, "DROP TABLE tblTEST;")
    _SQLite_Close ()
    _SQLite_Shutdown ()
    Return 0
    EndFunc

    [/autoit]


    Für den Testlauf hab ich der neuen Version einen anderen Namen verpaßt, im Anhang ist es derselbe, wie Version 1.

    Edit 17.08.08: Die aktuelle Version ist in Post 15

  • Script mit Tastenenkombination Text Erstellen?

    • BugFix
    • 18. Mai 2008 um 11:17
    [autoit]

    Send("#r")
    WinWaitActive("Ausführen")
    Send("notepad.exe{Enter}")

    [/autoit]

    Warum so kompliziert?

    [autoit]

    ShellExecute("notepad")

    [/autoit]

    ;)

    [autoit]

    Opt("GUIOnEventMode", 1) ; mit dieser Option kannst Du Funktionen aufrufen

    [/autoit]

    Kann man so nicht stehen lassen. Funktionen kannst du immer aufrufen. Der OnEventMode sorgt dafür, dass du die Events nicht per GUIGetMsg() abfragen mußt, sondern direkt verarbeiten kannst.
    "Wie McPoldy schon sagt, kräftig die Hilfe lesen...." :D

  • Script mit Tastenenkombination Text Erstellen?

    • BugFix
    • 18. Mai 2008 um 10:20

    Du mußt natürlich die angegebenen Funktionen für die Hotkeys auch erstellen.
    HotKeySet(Tastenkombi, Funktion)

    Spoiler anzeigen
    [autoit]

    HotKeySet ( "{F10}" , "Start" ) ; start
    HotKeySet ( "{F11}" , "End" ) ; ende des scripts
    HotKeySet ( "^1", "sendText" ) ; mit strg + 1 soll der text 99000 da stehen

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

    Func Start()
    ; Code
    EndFunc

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

    Func End()
    ; Code
    EndFunc

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

    Func sendText()
    ; Code
    EndFunc

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

    ; den folgenden Code, dann in die entsprechende Funktion, wobei ich nicht weiß, was die Pfeiltasten sollen:
    Send("{down}") ;taste drücken ### Falsch ==> Pfeiltaste abwärts wird gedrückt
    Send("{up}") ; taste loslassen ### Falsch ==> Pfeiltaste aufwärts wird gedrückt
    Sleep(1) ; text wird in 1 milsec eingegeben # so kurze Pause gibt es nicht
    send ("99000") ; text bzw zahlen die geschreiben werden sollen

    [/autoit]


    Nebenbei: Das war mein Post Nr. 2000

  • torrent erzeuger selber bauen?

    • BugFix
    • 18. Mai 2008 um 09:54

    Also Spinne, warum diese abweisende Haltung ;)
    Man kann mit Autos auch Menschen totfahren, aber grundsätzlich sind sie nützlich :P
    Das Sharen von Files per Torrent gab es schon vor den Musik- und Filmpiraten und wird auch z.B. in der Linux-Welt zum Verteilen der Images weiter genutzt. Und soweit ich das mitbekommen habe, arbeiten auch die Hochschulen damit - das Prinzip ist nunmal einfach klasse :D

  • FAQ

    • BugFix
    • 17. Mai 2008 um 22:22

    Es gibt ein praktisches Tool zum Konfigurieren von SciTE ohne Gefahr zu laufen, die Einstellungsdatei zu vermurksen.
    Hier der Link.

  • ArrayMore.au3

    • BugFix
    • 17. Mai 2008 um 20:47

    Hi,
    ich habe nun für die Funktion _ArraySort_2ary eine andere Möglichkeit gefunden, mehrstufig zu sortieren.
    In der neuen Version kann die Art der Sortierung völlig frei gewählt werden. Sortierung ist nicht nur 2-stufig, sondern für alle Spalten möglich.
    Daher auch ein neuer Name: _Array2DSortFree().
    Gerade in der mehrstufigen Sortierung großer Datenmengen ist hierbei ein gewaltiger Geschwindigkeitsvorteil entstanden.
    Diese Features stehen zur Verfügung:
    • Sortierung von 1D-Arrays
    Sortierrichtung Ascending oder Descending
    • Sortierung von 2D-Arrays
    - Sortierung nach ein bis allen Spalten mehrstufig
    - Für jede Spalte wird eine eigene Sortierrichtung angegeben
    - Sortierreihenfolge beliebig kombinierbar
    • Syntax
    _Array2DSortFree($Array2Sort, 'SpaltenIndex|RichtingsIndex,SpaltenIndex|RichtingsIndex')
    _Array2DSortFree($Array2Sort, '0|0,3|1')

    Testet mal schön und gebt mir Feedback. Dann werde ich die Funktion anstelle der _ArraySort_2ary in die ArrayMore.au3 aufnehmen. Leider nicht möglich (s. hier).

    Edit 10.05.2009
    In der aktuellen Stable (3.3.0.0) arbeitet die Funktion _SQLite_Query() fehlerhaft. Habe sie ersetzt mit _SQLite_GetTable2d(), nun funktioniert es auch wieder.

    _Array2DSortFree() mit Bsp.
    [autoit]


    #include <array.au3>
    #include <SQLite.au3>
    #include <SQLite.dll.au3>

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

    Local $a[10][4] = [ _
    [18,4,6,3], _
    [11,5,6,3], _
    [11,6,7,3], _
    [14,4,4,2], _
    [11,5,6,1], _
    [18,4,8,1], _
    [14,3,4,4], _
    [11,5,7,2], _
    [14,4,4,1], _
    [18,4,6,2]]

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

    _Array2DSortFree($a, '0|0,3|1')
    _ArrayDisplay($a, 'Array sortiert, Spalte 0 ASC und innerhalb dann Spalte 3 DESC')

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

    ;==================================================================================================
    ; Function Name: _Array2DSortFree(ByRef $ARRAY, $sCOL_ASC [, $NUM=False])
    ; Description:: Sortierung von 1D/2D-Arrays nach freier Wahl
    ; 1D Sortierung Auf- oder Absteigend
    ; 2D mehrstufige Sortierung, Reihenfolge und Sortier-
    ; richtung (je Spalte) frei wählbar
    ; auch einzelne Spalte sortierbar
    ; Parameter(s): $ARRAY Das zu sortierende Array
    ; $sCOL_ASC String mit Sortierangaben "Spalte|Richtung [, Spalte|Richtung]"
    ; zu sortierende Spalte (0-Index)|Richtung (0-Asc, 1-Desc)
    ; z.B. Spalte 2 aufsteigend und in 2 absteigend Spalte 1
    ; _Array2DSortFree($ar2Sort, '1|0,0|1')
    ; optional $NUM "False" sortiert alphabetisch (Standard), "True" sortiert numerisch
    ; Return Value(s): Erfolg 0
    ; Fehler 1 Set Error 1 $ARRAY ist kein Array
    ; 2 1D-Array, aber Spaltenangabe für 2D
    ; 3 SQL-Fehler
    ; 4 Angaben für Spalte|Sortierrichtung fehlerhaft
    ; Requirements: #include <SQLite.au3>
    ; #include <SQLite.dll.au3>
    ; #include <Array.au3>
    ; Note: Es ist dringend erforderlich, die SQLite-Includes am Beginn des aufrufenden
    ; Skriptes auszuführen. Anderenfalls schlägt die Initialisierung der SQLite.dll
    ; durch _SQLite_Startup() fehl.
    ; Version: 3.3.0.0
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ;==================================================================================================
    #include-once
    #include <SQLite.au3>
    #include <SQLite.dll.au3>
    #include <Array.au3>
    Func _Array2DSortFree(ByRef $ARRAY, $sCOL_ASC, $NUM=False)
    If Not IsArray($ARRAY) Then Return SetError(1,0,1)
    Local $tableStr = "CREATE TABLE [tblTEST] ("
    Local $insertStr = '', $insertBase = "INSERT INTO tblTEST VALUES ("
    Local $sortOrder = '', $sortStr = "SELECT * FROM tblTEST ORDER BY "
    Local $aResult, $asc, $iRows, $iCol
    $sCOL_ASC = StringStripWS($sCOL_ASC, 8)
    Local $ub2nd = UBound($ARRAY, 2)
    If @error = 2 Then
    If (StringLen($sCOL_ASC) > 3) Or (StringLeft($sCOL_ASC, 1) <> '0') Then Return SetError(2,0,1)
    If StringRight($sCOL_ASC, 1) = 0 Then
    _ArraySort($ARRAY)
    Else
    _ArraySort($ARRAY, 1)
    EndIf
    Return 0
    Else
    Local $aOut[UBound($ARRAY)][$ub2nd]
    EndIf
    _SQLite_Startup ()
    If @error > 0 Then Return SetError(3,0,1)
    $hSQL = _SQLite_Open ()
    If @error > 0 Then
    _SQLite_Shutdown ()
    Return SetError(3,0,1)
    EndIf
    For $i = 0 To UBound($ARRAY, 2) -1
    $tableStr &= "'field" & $i & "',"
    Next
    $tableStr = StringTrimRight($tableStr, 1) & ");"
    For $i = 0 To UBound($ARRAY) -1
    $insertStr &= $insertBase
    For $k = 0 To UBound($ARRAY, 2) -1
    $insertStr &= "'" & $ARRAY[$i][$k] & "',"
    Next
    $insertStr = StringTrimRight($insertStr, 1) & ");"
    Next
    If _SQLite_Exec ( $hSQL, $tableStr & $insertStr ) <> $SQLITE_OK Then
    _SQLite_Shutdown ()
    Return SetError(3,0,1)
    EndIf
    If StringInStr($sCOL_ASC, ',') Then
    Local $aOrder = StringSplit($sCOL_ASC, ',')
    For $i = 1 To UBound($aOrder) -1
    If StringInStr($sCOL_ASC, '|') Then
    Local $var = StringSplit($aOrder[$i], '|')
    $asc = ' ASC'
    If $var[2] = 1 Then $asc = ' DESC'
    If $NUM Then
    $sortOrder &= 'ABS(field' & $var[1] & ')' & $asc & ','
    Else
    $sortOrder &= 'field' & $var[1] & $asc & ','
    EndIf
    Else
    _SQLite_Shutdown ()
    Return SetError(4,0,1)
    EndIf
    Next
    $sortOrder = StringTrimRight($sortOrder, 1) & ';'
    Else
    If (StringLen($sCOL_ASC) > 2) And (StringInStr($sCOL_ASC, '|')) Then
    Local $var = StringSplit($sCOL_ASC, '|')
    $asc = ' ASC'
    If $var[2] = 1 Then $asc = ' DESC'
    If $NUM Then
    $sortOrder &= 'ABS(field' & $var[1] & ')' & $asc
    Else
    $sortOrder &= 'field' & $var[1] & $asc
    EndIf
    Else
    _SQLite_Shutdown ()
    Return SetError(4,0,1)
    EndIf
    EndIf
    If _SQLite_GetTable2d ( $hSQL, $sortStr & $sortOrder, $aResult, $iRows, $iCol ) <> $SQLITE_OK Then
    _SQLite_Shutdown ()
    Return SetError(3,0,1)
    EndIf
    For $i = 1 To UBound($aResult) -1
    For $j = 0 To UBound($ARRAY,2) -1
    $ARRAY[$i-1][$j] = $aResult[$i][$j]
    Next
    Next
    _SQLite_Exec ($hSQL, "DROP TABLE tblTEST;")
    _SQLite_Close ()
    _SQLite_Shutdown ()
    Return 0
    EndFunc ;==>_Array2DSortFree

    [/autoit]

    Edit:
    Eines fällt mir grad noch ein, die SQLite-Includes müssen zwingend am Anfang des aufrufenden Skripts stehen.
    Ist dies nicht der Fall, kann _SQLite_Startup() nicht die SQLite.dll initialisieren.
    Also die Includes in die Funktions-au3 schreiben geht nicht. Habe bestimmt eine Stunde damit verbracht, diesen Fehler zu lokalisieren.

    DL bisher: 25

  • Spezielle Variablen deklarieren

    • BugFix
    • 17. Mai 2008 um 12:56

    Es geht, stör dich nicht an der Fehlermeldung beim Start. Die Variablen werden ja erst zur Laufzeit erstellt, sind somit noch nicht deklariert:

    [autoit]

    For $i = 1 To 9
    Assign('var' & $i, $i)
    Next
    ConsoleWrite('var1 = ' & $var1 & @CRLF)
    ConsoleWrite('var2 = ' & $var2 & @CRLF)
    ConsoleWrite('var3 = ' & $var3 & @CRLF)
    ConsoleWrite('var4 = ' & $var4 & @CRLF)
    ConsoleWrite('var5 = ' & $var5 & @CRLF)
    ConsoleWrite('var6 = ' & $var6 & @CRLF)
    ConsoleWrite('var7 = ' & $var7 & @CRLF)
    ConsoleWrite('var8 = ' & $var8 & @CRLF)
    ConsoleWrite('var9 = ' & $var9 & @CRLF)

    [/autoit]

    Aber um die Angaben weiter zu verarbeiten, mußt du vorab den Variablennamen kennen. Insofern weiß ich nicht, ob das was bringt.

  • ArrayMore.au3

    • BugFix
    • 17. Mai 2008 um 12:47

    Hi,
    Anpassung an Prod 3.2.12.0 vorgenommen. s. 1. Post

  • Quadratische Gleichung auflösen

    • BugFix
    • 16. Mai 2008 um 23:16
    Zitat von fabs

    komme ich per Hand auf L={4,45|0,9}

    Da hast du dich vertan ;-), der Wert muß halbiert werden ( / 2*a ).

    Habs mal so probiert, funzt:

    [autoit]

    Global $a = 1
    Global $b = -4
    Global $c = -2
    Global $p, $x1, $x2
    Global $sqrt_radikant = Sqrt($b*$b - 4*$a*$c)
    $p = -1*$b
    $x1 = ($p + $sqrt_radikant) / 2*$a
    $x2 = ($p - $sqrt_radikant) / 2*$a
    MsgBox(0, '', '$x1 = ' & $x1 & @LF & '$x2 = ' & $x2)

    [/autoit]
  • Glühbirne ausgewechselt!!!

    • BugFix
    • 16. Mai 2008 um 20:55

    Bernd: 100% Zustimmung :thumbup:

  • Var Call

    • BugFix
    • 16. Mai 2008 um 15:15

    Ich versteh nicht, was das für einen Sinn haben soll.
    Wenn sich der Wert einer Variablen ändert, so passiert das ja nicht von allein, sondern weil du es so programmiert hast. Was hindert dich, an der Stelle, wo die Wertzuweisung erfolgt, eine Aktion auszulösen, die diesen Vorgang protokolliert?
    Denkbar wäre z.B. ein gepushtes Array, das auf diese Art immer die letzten 5 od. 10 od. ... Änderungen führt.
    Aber ohne zu wisen, was du vorhast, ist es schwer Hilfe zu leisten.

  • Dynamische Funktionen ? Heisst das so :)

    • BugFix
    • 16. Mai 2008 um 15:04

    Der Funktionsaufruf stimmt schon so, wie von dir beschrieben.
    progandy hat zum Aufruf den Hilfsbefehl Call benutzt. (Bei der Verwendung dieses Befehls sträuben sich mir immer die Nackenhaare, grrr, - hier macht er aber Sinn).
    Wenn du dir mal die Beschreibung des Befehls Call ansiehst, merkst du, dass dort der Funktionsname als String aufgerufen wird. ;)

  • Berechnung der zeitlichen Dauer - Einbinden in eine GUI

    • BugFix
    • 16. Mai 2008 um 14:56
    Zitat von ade2k1

    Nur find ich keine Möglichkeit, wie ich es schaffe, dass sich der Inhalt des Input-Feldes ändert,


    Die Funktion zum Aktualisieren des Inputfeldes in festen Intervallen aufrufen:

    [autoit]

    AdlibEnable('SetInput', $Zeitintervall_in_ms)
    Func SetInput()
    GUICtrlSetData($InputCtrl, $Data) ; $Data muß Globale Variable sein, wenn in anderer Funktion Wertezuweisung
    EndFunc

    [/autoit]
  • STRG+c für Ping Script

    • BugFix
    • 16. Mai 2008 um 10:33
    Zitat von remax

    Wird schon mal einiges verständlicher, aber was sind Metazeichen? Und gibt es eine Liste wo man nachschauen kann?

    Die AutoIt-Hilfe bietet dir schon einiges dazu ( unter <Tutorials> <String Regular expression> ).
    Du findest im Web auch einiges dazu, z.B. hier

  • Berechnung der zeitlichen Dauer - Einbinden in eine GUI

    • BugFix
    • 16. Mai 2008 um 10:20

    Ich hatte mal eine Stoppuhr erstellt. Ist ja grundsätzlich dasselbe Prinzip.
    Schau es dir mal an, vielleicht bringt es dich weiter ;)

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    Global $start, $UsedTime, $diff_Alt = 0
    Global $SetTime = False, $Break = False, $Pause = False, $Run = True

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

    $GUI = GUICreate('Stoppuhr', 400, 100, -1, -1)
    $Time = GUICtrlCreateInput('00:00:00,000', 100, 20, 200, 20, BitOR($ES_CENTER,$ES_READONLY))
    $bStart = GUICtrlCreateButton('Start', 40, 60, 80, 20)
    $bBreak = GUICtrlCreateButton('Unterbrechen', 160, 60, 80, 20)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $bPause = GUICtrlCreateButton('Pause', 280, 60, 80, 20)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUISetState()

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

    While True
    $msg = GUIGetMsg()
    If $SetTime Then $UsedTime = SetTime()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    ExitLoop
    Case $bStart ; Start/Stop Messung absolut
    $Run = Not $Run
    If $Run Then
    $SetTime = False
    SetTime()
    GUICtrlSetData($bStart, 'Start')
    GUICtrlSetState($bBreak, $GUI_DISABLE)
    GUICtrlSetState($bPause, $GUI_DISABLE)
    Else
    $SetTime = True
    $start = TimerInit()
    GUICtrlSetData($bStart, 'Stop')
    GUICtrlSetState($bBreak, $GUI_ENABLE)
    GUICtrlSetState($bPause, $GUI_ENABLE)
    EndIf
    Case $bBreak ; nur Anzeige wird angehalten (z.B. Rundenmessung)
    $Break = Not $Break
    If $Break Then
    $SetTime = False
    GUICtrlSetData($bBreak, 'Fortsetzen')
    GUICtrlSetState($bPause, $GUI_DISABLE)
    Else
    $SetTime = True
    GUICtrlSetData($bBreak, 'Unterbrechen')
    GUICtrlSetState($bPause, $GUI_ENABLE)
    EndIf
    Case $bPause ; Messung wird angehalten (Additionsmessung)
    $Pause = Not $Pause
    If $Pause Then
    $diff_Alt = $UsedTime ; abgelaufene Zeit aufaddieren
    $SetTime = False
    GUICtrlSetData($bPause, 'Weiter')
    GUICtrlSetState($bBreak, $GUI_DISABLE)
    Else
    $SetTime = True
    $start = TimerInit() ; Zeitmessung neu initialisieren
    GUICtrlSetData($bPause, 'Pause')
    GUICtrlSetState($bBreak, $GUI_ENABLE)
    EndIf
    EndSwitch
    WEnd

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

    Func SetTime()
    Local $diff = TimerDiff($start)/1000 + $diff_Alt
    Local $hour = 0
    Local $min = 0
    Local $sec = Floor($diff)
    Local $rest = ($diff-$sec)*1000
    Local $secShow, $minShow, $hourShow
    If $sec > 59 Then
    $min = Floor($sec/60)
    $secShow = Mod($sec, 60)
    ElseIf $sec > 3599 Then
    $hourShow = Mod(Mod($sec,3600),60)
    $minShow = Floor(Mod($sec,3600)/60)
    $secShow = Floor($sec/3600)
    Else
    $secShow = $sec
    $minShow = $min
    $hourShow = $hour
    EndIf
    GUICtrlSetData($Time, StringFormat('%02u', $hourShow) & ':' & StringFormat('%02u', $minShow) & ':' & StringFormat('%02u', $secShow) & ',' & StringFormat('%03u', $rest))
    Return $diff ; gibt abgelaufene Zeit als absolute Differenz zurück
    EndFunc

    [/autoit]
  • GUICtrlCreatePic Problem

    • BugFix
    • 16. Mai 2008 um 09:58
    Zitat von starkalex

    letzte frage gibs ne möcklichkeit per Button ein pic wegmachen?


    Ja, dazu mußt du aber die ID der erzeugten Pictures speichern ( $ID = GUICtrlCreatePic() ). Dann kannst du mit GUICtrlDelete() das Control auch wieder löschen.

  • GUICreate mit Checkbox und Button

    • BugFix
    • 16. Mai 2008 um 09:45

    Grundsätzlich geht auch die Variante If GuiCtrlRead($ctrl) = $GUI_CHECKED ($GUI_UNCHECKED).
    Wir hatten aber schon Programmbeispiele, wo diese Abfrage nicht sicher funktionierte. Aber mit der BitAnd-Lösung funktionierte es. Deshalb verwende ich diese Variante.

  • GUICreate mit Checkbox und Button

    • BugFix
    • 15. Mai 2008 um 23:48

    Hi,
    ich habs dir mal korrigiert. Du mußt ein Control auslesen, wenn du den Status wissen willst:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    Opt("GUIOnEventMode",1)

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

    GUICreate("Meine erste GUI",300,200)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Close");schliessen
    $checkCN1 = GUICtrlCreateCheckbox ("CHECKBOX 1", 10, 10, 120, 20)
    GUICtrlSetOnEvent(-1, '_CN1clicked')
    $checkCN2 = GUICtrlCreateCheckbox ("CHECKBOX 2", 10, 30, 120, 20)
    GUICtrlSetOnEvent(-1, '_CN2clicked')
    ;~ $checkCN3 = GUICtrlCreateCheckbox ("CHECKBOX 3", 10, 50, 120, 20)

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

    $okbutton = GUICtrlCreateButton ("OK",50,130,70,20)
    GUICtrlSetState(-1,$GUI_FOCUS)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUICtrlSetOnEvent(-1,"_Checkbox")
    $cancelbutton = GUICtrlCreateButton ("Cancel",180,130,70,20)
    GUICtrlSetOnEvent(-1,"_Close");abbrechen

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

    GUISetState ()
    While 1
    Sleep(100)
    WEnd

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

    Func _Close()
    GUIDelete()
    Exit
    EndFunc

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

    Func _CN1clicked()
    If BitAND(GUICtrlRead($checkCN1), $GUI_CHECKED) Then
    GUICtrlSetState($checkCN2, $GUI_DISABLE)
    GUICtrlSetState($okbutton, $GUI_ENABLE)
    Else
    GUICtrlSetState($checkCN2, $GUI_ENABLE)
    If BitAND(GUICtrlRead($checkCN2), $GUI_UNCHECKED) Then GUICtrlSetState($okbutton, $GUI_DISABLE)
    EndIf
    EndFunc

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

    Func _CN2clicked()
    If BitAND(GUICtrlRead($checkCN2), $GUI_CHECKED) Then
    GUICtrlSetState($checkCN1, $GUI_DISABLE)
    GUICtrlSetState($okbutton, $GUI_ENABLE)
    Else
    GUICtrlSetState($checkCN1, $GUI_ENABLE)
    If BitAND(GUICtrlRead($checkCN1), $GUI_UNCHECKED) Then GUICtrlSetState($okbutton, $GUI_DISABLE)
    EndIf
    EndFunc

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

    Func _Checkbox();
    Select
    Case BitAND(GUICtrlRead($checkCN1), $GUI_CHECKED)
    MsgBox(0, "Checkbox 1", "ausgewählt")
    Case BitAND(GUICtrlRead($checkCN2), $GUI_CHECKED)
    MsgBox(0, "Checkbox 2", "ausgewählt")
    EndSelect
    EndFunc

    [/autoit]

    Greenhorn: In der While-Schleife ständig abzuprüfen ist unsinnig im OnEvent-Mode. Dazu gibts ja die Events ;)

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™