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

  • BugFix

    • BugFix
    • 28. November 2008 um 16:47

    Hallo ihr Alle-man /* Wortwitz */ :D

    Vielen, vielen Dank für eure zahlreichen "Beileidsbekundungen" :rofl:
    Keine Bange - ich bleibe euch erhalten. Eher tritt der Papst zum Islam über (Yussuf Ratzel klingt gar nicht übel), als dass ich euch verlasse. :D

    Und bald könnt ihr mir auch zum 3.000 Post gratulieren ;) - Was für ein Wochenende.. :thumbup:

  • Brauche Hilfe mit einem ERROR

    • BugFix
    • 28. November 2008 um 13:11

    Hängt sicher mit deinem Main-Window ==> Hilfe-Window (oder ähnlich zusammen). Du erstellst sicher immer wieder GUI bei jedem Aufruf und das in einer Schleife, so dass eine Rekursion entsteht, statt sie ein-/auszublenden. Somit läuft dir irgendwann der Speicher über - und aus die Maus.

    Edit: Ah, wegen dem Main-Hilfe-Window hatte ich dich glatt mit karroffel verwechselt.

  • Brauche Hilfe bei meinem Help fenster (GUI)

    • BugFix
    • 28. November 2008 um 13:06

    Es ist ratsam, alle GUI am Skriptbeginn zu erstellen und dann bei Bedarf zu zeigen oder auszublenden. Dazu brauchst du im Msg-Mode die erweiterte GUIGetMsg-Funktion, um neben dem Control auch das Fenster abzufragen.
    Hier ein Bsp.:

    [autoit]

    #include <GUIConstants.au3>

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

    $gui1 = GUICreate('Main')
    $btn1 = GUICtrlCreateButton('Zeige Hilfe', 10, 20, 100, 20)

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

    $gui2 = GUICreate('Hilfe')
    $btn2 = GUICtrlCreateButton('Zurück', 10, 20, 100, 20)

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

    GUISetState(@SW_SHOW, $gui1)

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

    While 1
    $msg = GUIGetMsg(1)
    Switch $msg[1] ; Window Handle
    Case $gui1
    Switch $msg[0] ; Event
    Case $GUI_EVENT_CLOSE
    Exit
    Case $btn1
    GUISetState(@SW_HIDE, $gui1)
    GUISetState(@SW_SHOW, $gui2)
    EndSwitch
    Case $gui2
    Select
    Case $msg[0]= $GUI_EVENT_CLOSE Or $msg[0] = $btn2
    GUISetState(@SW_SHOW, $gui1)
    GUISetState(@SW_HIDE, $gui2)
    EndSelect
    EndSwitch
    WEnd

    [/autoit]
  • weiß jemand zufällig wie filewritefromarray an ein StringRegExp skript...

    • BugFix
    • 27. November 2008 um 12:51
    Zitat von Micha_he

    Nur gibt 'StringRegExp' (verwendest Du im Beispiel) gar kein Array zurück, Oder ?


    Doch schon - falls mit diesem Pattern ein Treffer erzielt werden kann. Mit Flag 3 im RegEx wird ein Array mit allen Matches zurückgegeben.

  • Startzeit Prozess

    • BugFix
    • 27. November 2008 um 09:20
    Zitat von TOMTOM25m

    anders umzuwandeln ??


    Und wie hättest du es gerne? Welches Format?

    Zitat

    Was ich brauch ist das Startdatum mit der Startzeit.


    Das liefert doch $objItem.CreationDate, steht doch ausführlich erklärt.
    Hier:

    Zitat

    String CreationDate des Objekts extrahiert. )
    Dieses ist folgendermaßen aufgebaut: YYYYMMDDhhmmss.??????+???

    Kannst doch mit Stringoperationen dein gewünschtes Format erstellen.

  • Mal wieder lachen...

    • BugFix
    • 27. November 2008 um 09:08

    Und noch ein schöner: In der Schlange im Supermarkt :D

    Und hier noch Klasse SourceCode :rofl:

  • Mit AutoIt Wert aus HTML Tabelle auslesen und verarbeiten

    • BugFix
    • 27. November 2008 um 08:29

    Dein Skript ist vom logischen Ablauf falsch.
    Du hast zwei Endlosschleifen, verwendest Sleep - da läuft nichts richtig zusammen. Auch deine Statements mußt du dringend auf Syntax prüfen (z.B.: $traffic >= $grenze3 < $schwellenwert).
    Du willst die Uhrzeit in eine Nachricht einfügen - die Zeit liest du aber einmalig am Skriptanfang in eine Variable.
    Dein Ablauf sollte in etwas folgendermaßen sein (Tray erst al ganz rauslassen, bring das Grundkonzept zum Laufen, dann kannst du erweitern):
    - Hauptprogramm ist Überwachung und läuft in Endlosschleife
    - Aber NICHT innerhalb einer Funktion!
    - Verwende kein Sleep (in der Zeit rührt sich das Programm nicht!), sondern TimerInit / TimerDiff (den Sinn der Sleeps kann ich auch nicht erkennen - oder soll damit der nächste Prüfzeitpunkt festgelegt werden?)
    - Überprüfe intervallmäßig den Traffic (UDF aufrufen, aber besser mit Return $traffic in der UDF)
    - wenn du Tray einfügen willst, dann auch NICHT in einer Funktion, sondern in der existierenden Schleife - es kann in einem Skript NUR eine Endlosschleife laufen

  • CountDown

    • BugFix
    • 26. November 2008 um 21:31

    In Anlehnung an einen bekannten Ausspruch:
    "Ein kleiner Schritt für Observer - ein großer Schritt für die Menschheit" :D

    Freut mich, wenn es dir Klarheit gebracht hat.

  • Stringregexp Frage

    • BugFix
    • 26. November 2008 um 19:03

    Was du machen willst, hatte ich schon verstanden - aber ich verstehe nicht den Sinn dahinter. Unabhängig davon, dass du $ret so nicht abfragen kannst, weil es ein Array ist (falls im String Zahlen sind).

    Beschreib doch mal gnauer, warum was getan werden soll.

  • Stringregexp Frage

    • BugFix
    • 26. November 2008 um 18:21
    Zitat von Pecadis

    hm naja wenn es der string nicht stimmt dann soll e z.b. mir per while..wend die zahlen 10 bis 1 runterzählen und nochmal also 10,9,8,7,6,5,4,3,2,1,0,10,9,8,7,6,5,4,3,2,1 .... also nur mal so als beispiel.


    Gar nix mehr versteh... ;( :wacko: ?(

    Sag doch mal genau, was du genau machen willst. Also nicht nur: vielleicht, könnte, z.B. ...

  • Stringregexp Frage

    • BugFix
    • 26. November 2008 um 17:44

    Ohne Array macht es keinen Sinn. RegEx gibt nunmal ein Array zurück, also muß man es auswerten.

    Wozu willst du eine While-Schleife ausführen, nachdem feststeht, dass der geprüfte String nicht genutzt wird?

  • CountDown

    • BugFix
    • 26. November 2008 um 12:47

    Ich werde heute abend mal ein Bsp. stricken. ;)

    Edit:
    Habs mal schnell zusammengebaut - 2 unabhängig voneinander laufende Counter.
    Da AdlinEnable nur einmal gestartet werden kann, mußt du darauf achten, dass für jeden Counter eine Variable existiert, die anzeigt dass er läuft (hier $Count1 und $Count2), dann läßt sich nach Ablauf beider Counter auch AdlibEnable einfach zurücksetzen.
    Die Funktion SetCounter() errechnet bei jedem Aufruf durch AdlibEnable die Restlaufzeit des Counters in Sekunden (Globle Variablen $s1 und $s2) und ruft mit $s1/$s2 die Funktion _FormatSec() auf, deren Rückgabe dann in das entsprechende Control geschrieben wird.
    Dort kannst du $s1/$s2 in eine INI schreiben, wenn das Programm beendet wird. Analog kannst du statt Auslesen der Eingabefelder, die Restzeit aus der INI lesen und mit diesem Wert fortsetzen.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <EditConstants.au3>
    #include <Date.au3>

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

    Local $sec, $min, $hr, $day, $sec2, $min2, $hr2, $day2
    Global $end, $start, $Sekunden, $end2, $start2, $Sekunden2, $s1 = 0, $s2 = 0
    Global $Adlib = False, $EndAdlib = 0, $Count1 = False, $Count2 = False
    ;~ Global $INIPath = 'Pfad.INI'

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

    $gui = GUICreate('CountDown')

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

    GUICtrlCreateLabel('Tage', 15, 18, 60, 17)
    $iD = GUICtrlCreateInput('', 80, 15, 20, 20, $ES_NUMBER)
    GUICtrlCreateLabel('Stunden', 15, 48, 60, 17)
    $iH = GUICtrlCreateInput('', 80, 45, 20, 20, $ES_NUMBER)
    GUICtrlCreateLabel('Minuten', 15, 78, 60, 17)
    $iM = GUICtrlCreateInput('', 80, 75, 20, 20, $ES_NUMBER)
    GUICtrlCreateLabel('Sekunden', 15, 108, 60, 17)
    $iS = GUICtrlCreateInput('', 80, 105, 20, 20, $ES_NUMBER)
    $bt = GUICtrlCreateButton('Start', 140, 15, 50, 20)
    $iDown = GUICtrlCreateInput('', 200, 15, 80, 20, $ES_READONLY)

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

    GUICtrlCreateLabel('Tage', 15, 153, 60, 17)
    $iD2 = GUICtrlCreateInput('', 80, 150, 20, 20, $ES_NUMBER)
    GUICtrlCreateLabel('Stunden', 15, 183, 60, 17)
    $iH2 = GUICtrlCreateInput('', 80, 180, 20, 20, $ES_NUMBER)
    GUICtrlCreateLabel('Minuten', 15, 213, 60, 17)
    $iM2 = GUICtrlCreateInput('', 80, 210, 20, 20, $ES_NUMBER)
    GUICtrlCreateLabel('Sekunden', 15, 243, 60, 17)
    $iS2 = GUICtrlCreateInput('', 80, 240, 20, 20, $ES_NUMBER)
    $bt2 = GUICtrlCreateButton('Start', 140, 150, 50, 20)
    $iDown2 = GUICtrlCreateInput('', 200, 150, 80, 20, $ES_READONLY)

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

    GUISetState()

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

    While True
    $msg = GUIGetMsg()
    If $msg = $bt Then
    If GUICtrlRead($iD) = '' Then
    $day = 0
    Else
    $day = GUICtrlRead($iD)
    EndIf
    If GUICtrlRead($iH) = '' Then
    $hr = 0
    Else
    $hr = GUICtrlRead($iH)
    EndIf
    If GUICtrlRead($iM) = '' Then
    $min = 0
    Else
    $min = GUICtrlRead($iM)
    EndIf
    If GUICtrlRead($iS) = '' Then
    $sec = 0
    Else
    $sec = GUICtrlRead($iS)
    EndIf
    $Sekunden = $sec + $min*60 + $hr*3600 + $day*86400
    ; oder Restsekunden aus INI einlesen:
    ; $Sekunden = IniRead($INIPath, 'Restzeit', 'Count1', 0)
    $end = _DateAdd('s', $Sekunden, _NowCalc())
    GUICtrlSetState($bt, $GUI_DISABLE)
    $Count1 = True
    If Not $Adlib Then
    $EndAdlib = 0
    AdlibEnable('SetCounter', 1000)
    $Adlib = True
    EndIf
    If $Count2 Then $EndAdlib = 0 ; wenn anderer Counter läuft, muß Zähler für Ende Null sein
    ElseIf $msg = $bt2 Then
    If GUICtrlRead($iD2) = '' Then
    $day2 = 0
    Else
    $day2 = GUICtrlRead($iD2)
    EndIf
    If GUICtrlRead($iH2) = '' Then
    $hr2 = 0
    Else
    $hr2 = GUICtrlRead($iH2)
    EndIf
    If GUICtrlRead($iM2) = '' Then
    $min2 = 0
    Else
    $min2 = GUICtrlRead($iM2)
    EndIf
    If GUICtrlRead($iS2) = '' Then
    $sec2 = 0
    Else
    $sec2 = GUICtrlRead($iS2)
    EndIf
    $Sekunden2 = $sec2 + $min2*60 + $hr2*3600 + $day2*86400
    ; oder Restsekunden aus INI einlesen:
    ; $Sekunden2 = IniRead($INIPath, 'Restzeit', 'Count2', 0)
    $end2 = _DateAdd('s', $Sekunden2, _NowCalc())
    GUICtrlSetState($bt2, $GUI_DISABLE)
    $Count2 = True
    If Not $Adlib Then
    $EndAdlib = 0
    AdlibEnable('SetCounter', 1000)
    $Adlib = True
    EndIf
    If $Count1 Then $EndAdlib = 0 ; wenn anderer Counter läuft, muß Zähler für Ende Null sein
    ElseIf $msg = $GUI_EVENT_CLOSE Then
    ;~ IniWrite($INIPath, 'Restzeit', 'Count1', $s1)
    ;~ IniWrite($INIPath, 'Restzeit', 'Count2', $s2)
    Exit
    EndIf
    WEnd

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

    Func SetCounter()
    If $Count1 Then
    $s1 = _DateDiff('s', _NowCalc(), $end)
    GUICtrlSetData($iDown, _FormatSec($s1))
    If $s1 = 0 Then
    $EndAdlib += 1
    GUICtrlSetState($bt, $GUI_ENABLE)
    $Count1 = False
    EndIf
    EndIf
    If $Count2 Then
    $s2 = _DateDiff('s', _NowCalc(), $end2)
    GUICtrlSetData($iDown2, _FormatSec($s2))
    If $s2 = 0 Then
    $EndAdlib += 1
    GUICtrlSetState($bt2, $GUI_ENABLE)
    $Count2 = False
    EndIf
    EndIf
    If $EndAdlib = 2 Then
    AdlibDisable() ; beide Counter abgelaufen
    $Adlib = False
    EndIf
    EndFunc

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

    Func _FormatSec($secShow)
    Select
    Case $secShow < 60
    Return StringFormat('%02u', $secShow) & ' s'
    Case $secShow < 60*60
    Return StringFormat('%02u', Floor($secShow/60)) & ':' & _
    StringFormat('%02u', Mod($secShow,60)) & ' min'
    Case $secShow < 60*60*24
    Return StringFormat('%02u', Floor($secShow/3600)) & ':' & _
    StringFormat('%02u', Floor(Mod($secShow,3600)/60)) & ':' & _
    StringFormat('%02u', Mod(Mod($secShow,3600),60)) & ' h'
    Case Else
    Return Floor($secShow/86400) & ' d / ' & _
    StringFormat('%02u', Floor(Mod($secShow,86400)/3600)) & ':' & _
    StringFormat('%02u', Floor(Mod(Mod($secShow,86400),3600)/60)) & ':' & _
    StringFormat('%02u', Mod(Mod(Mod($secShow,86400),3600),60)) & ' h'
    EndSelect
    EndFunc

    [/autoit]
  • CountDown

    • BugFix
    • 26. November 2008 um 09:29

    Beispiel:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <EditConstants.au3>

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

    Local $sec, $min, $hr, $day
    $gui = GUICreate('CountDown')
    GUICtrlCreateLabel('Tage', 15, 18, 60, 17)
    $iD = GUICtrlCreateInput('', 80, 15, 20, 20, $ES_NUMBER)
    GUICtrlCreateLabel('Stunden', 15, 48, 60, 17)
    $iH = GUICtrlCreateInput('', 80, 45, 20, 20, $ES_NUMBER)
    GUICtrlCreateLabel('Minuten', 15, 78, 60, 17)
    $iM = GUICtrlCreateInput('', 80, 75, 20, 20, $ES_NUMBER)
    GUICtrlCreateLabel('Sekunden', 15, 108, 60, 17)
    $iS = GUICtrlCreateInput('', 80, 105, 20, 20, $ES_NUMBER)
    $bt = GUICtrlCreateButton('Start', 140, 15, 50, 20)
    $iDown = GUICtrlCreateInput('', 200, 15, 80, 20, $ES_READONLY)
    GUISetState()

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

    While True
    $msg = GUIGetMsg()
    If $msg = $bt Then
    If GUICtrlRead($iD) = '' Then
    $day = 0
    Else
    $day = GUICtrlRead($iD)
    EndIf
    If GUICtrlRead($iH) = '' Then
    $hr = 0
    Else
    $hr = GUICtrlRead($iH)
    EndIf
    If GUICtrlRead($iM) = '' Then
    $min = 0
    Else
    $min = GUICtrlRead($iM)
    EndIf
    If GUICtrlRead($iS) = '' Then
    $sec = 0
    Else
    $sec = GUICtrlRead($iS)
    EndIf
    _CountDown($sec, $min, $hr, $day, True, $iDown)
    ElseIf $msg = $GUI_EVENT_CLOSE Then
    Exit
    EndIf
    WEnd

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

    ;----------------------------------------------------------------------------------------------------------------------
    ; Funktion _CountDown($SEC [, $MIN=0 [, $HOUR=0 [, $DAY=0 [, $VISIBLEDOWN=True [, $ALTERNATECTRL='TT']]]]])
    ;
    ; Beschreibung zählt vorgegebene Zeitspanne (Tage, Stunden, Minuten, Sekunden) herunter mit Anzeige Tooltip (Standard)
    ; oder Ausgabe in GUI-Ctrl; wahlweise Anzeige von Restzeit (Standard) oder abgelaufener Zeit
    ;
    ; Parameter $SEC: Sekunden
    ; optional $MIN: Minuten
    ; optional $HOUR: Stunden
    ; optional $DAY: Tage
    ; optional $VISIBLEDOWN: Ansicht (herunterzählen/heraufzählen)
    ; optional $ALTERNATECTRL: GUI-Ctrl in das die Ausgabe mittels GUICtrlSetData() ausgegeben wird
    ;
    ; Erfordernisse #include <Date.au3>
    ;
    ; Autor BugFix ([email='bugfix@autoit.de'][/email])
    ;----------------------------------------------------------------------------------------------------------------------
    #include <Date.au3>
    Func _CountDown($SEC, $MIN=0, $HOUR=0, $DAY=0, $VISIBLEDOWN=True, $ALTERNATECTRL='TT')
    $Sekunden = $SEC + $MIN*60 + $HOUR*3600 + $DAY*86400
    $end = _DateAdd('s', $Sekunden, _NowCalc())
    Local $message
    Do
    Sleep(100)
    $sec = _DateDiff('s', _NowCalc(), $end)
    If Not $VISIBLEDOWN Then
    $secShow = $Sekunden - $sec
    Else
    $secShow = $sec
    EndIf
    Select
    Case $secShow < 60
    If $ALTERNATECTRL = 'TT' Then
    ToolTip(StringFormat('%02u', $secShow) & ' s')
    Else
    GUICtrlSetData($ALTERNATECTRL, StringFormat('%02u', $secShow) & ' s')
    EndIf
    Case $secShow < 60*60
    $message = StringFormat('%02u', Floor($secShow/60)) & ':' & _
    StringFormat('%02u', Mod($secShow,60)) & ' min'
    If $ALTERNATECTRL = 'TT' Then
    ToolTip($message)
    Else
    GUICtrlSetData($ALTERNATECTRL, $message)
    EndIf
    Case $secShow < 60*60*24
    $message = StringFormat('%02u', Floor($secShow/3600)) & ':' & _
    StringFormat('%02u', Floor(Mod($secShow,3600)/60)) & ':' & _
    StringFormat('%02u', Mod(Mod($secShow,3600),60)) & ' h'
    If $ALTERNATECTRL = 'TT' Then
    ToolTip($message)
    Else
    GUICtrlSetData($ALTERNATECTRL, $message)
    EndIf
    Case Else
    $message = Floor($secShow/86400) & ' d / ' & _
    StringFormat('%02u', Floor(Mod($secShow,86400)/3600)) & ':' & _
    StringFormat('%02u', Floor(Mod(Mod($secShow,86400),3600)/60)) & ':' & _
    StringFormat('%02u', Mod(Mod(Mod($secShow,86400),3600),60)) & ' h'
    If $ALTERNATECTRL = 'TT' Then
    ToolTip($message)
    Else
    GUICtrlSetData($ALTERNATECTRL, $message)
    EndIf
    EndSelect
    Until $sec = 0
    EndFunc ;==>_CountDown

    [/autoit]
  • Mal wieder lachen...

    • BugFix
    • 26. November 2008 um 08:54

    Lest es laut, dann wirkt es noch viel besser. Ich habe es meiner Tochter vorgelesen und wir mußten uns beide kringeln. :rofl:
    Brief eines Tirolers an die NASA

  • Wie erstelle ich eine GUI ?

    • BugFix
    • 26. November 2008 um 08:19
    Zitat von deutsch-autoit
    [autoit]

    if wingetstate("blabla")==23 then guisetstate(@sw_minimize)

    [/autoit]

    23 steht fürs minimieren
    cya


    Das ist nur bedingt richtig. Ein Fenster kann als Statuswert eine Kombination von mehreren Werten annehmen. Und 23 ist nicht minimiert, sondern: Win ist minimiert UND Win existiert UND Win ist sichtbar UND Win ist enabled.

    Statusabfragen immer mit BitAnd auf den gewünschten Status:

    [autoit]

    If BitAND(WinGetState("Fenster-Titel oder GUI-ID"), 16) Then ; Fenster wurde minimiert
    WinSetState("Fenster 2", '', @SW_MINIMIZE)
    ElseIf Not BitAND("Fenster-Titel oder GUI-ID", 16) Then ; Fenster wurde wiederhergestellt
    WinSetState("Fenster 2", '', @SW_RESTORE)
    EndIf

    [/autoit]
  • Problem mit einfacher Rechnung mit Variablen

    • BugFix
    • 25. November 2008 um 22:24

    Kein Problem:

    [autoit]

    $a = 5
    $b = 2
    $c = $a/$b
    If StringInStr($c, '.') Then $c = StringReplace($c, '.', ',')
    MsgBox(0, '', $c)

    [/autoit]

    Edit: Oops - du wolltest Komma zu Punkt - naja, das Ganze halt umgedreht. ;)

  • Problem mit einfacher Rechnung mit Variablen

    • BugFix
    • 25. November 2008 um 22:12

    Ergebnis ist korrekt. Komma muß als Punkt eingegeben werden.

    [autoit]

    ConsoleWrite(30 - 25.4/2 & @CRLF)

    [/autoit]
  • autoit schreibt für mich

    • BugFix
    • 25. November 2008 um 21:36

    Es wäre interessant zu wissen, wohin der Text geschrieben werden soll (Was für eine Anwendung). Eventuell kann man dieses Programm direkt ansprechen.
    Ansonsten schau dir an: GUICtrlRead, ControlSend

  • Wie erstelle ich eine GUI ?

    • BugFix
    • 25. November 2008 um 21:29
    [autoit]

    Send("{BS 12}Klaus " & @MDAY & '.' & @MON & '.' & @YEAR)

    [/autoit]
  • autoit schreibt für mich

    • BugFix
    • 25. November 2008 um 20:25

    Welches ist jetzt deine Frage? :wacko:

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™