Lies die Sektion mit IniReadSection() ein. Dann hast du alles in einem Array.
Beiträge von BugFix
-
-
Was ist daran falsch ?
Hast du $oIE auch als Global deklariert?
-
Mit _GUICtrlListView_AddSubItem kannst du immer nur EIN Subitem einfügen. Schau dir das Bsp. zu dem Befehl in der Hilfe an - ist eindeutig.
-
Hi Doc,
na dann auch von mir Alles erdenklich Gute. Allem voran natürlich der Sechser +Zusatzzahl.

Wir könnten ja glatt zusammen feiern, wenn wir schon am selben Tag Geburtstag haben. Du wohnst lumpige 45 Autominuten von mir entfernt.

Also genieße den Tag und den (Schmuse-) Kater am Morgen.

-
Hallo ihr Alle-man /* Wortwitz */

Vielen, vielen Dank für eure zahlreichen "Beileidsbekundungen"

Keine Bange - ich bleibe euch erhalten. Eher tritt der Papst zum Islam über (Yussuf Ratzel klingt gar nicht übel), als dass ich euch verlasse.
Und bald könnt ihr mir auch zum 3.000 Post gratulieren
- Was für ein Wochenende.. 
-
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.
-
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.
[autoit]
Hier ein Bsp.:#include <GUIConstants.au3>
[/autoit][autoit][/autoit][autoit]$gui1 = GUICreate('Main')
[/autoit][autoit][/autoit][autoit]
$btn1 = GUICtrlCreateButton('Zeige Hilfe', 10, 20, 100, 20)$gui2 = GUICreate('Hilfe')
[/autoit][autoit][/autoit][autoit]
$btn2 = GUICtrlCreateButton('Zurück', 10, 20, 100, 20)GUISetState(@SW_SHOW, $gui1)
[/autoit][autoit][/autoit][autoit]While 1
[/autoit]
$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 -
-
anders umzuwandeln ??
Und wie hättest du es gerne? Welches Format?ZitatWas ich brauch ist das Startdatum mit der Startzeit.
Das liefert doch $objItem.CreationDate, steht doch ausführlich erklärt.
Hier:ZitatString CreationDate des Objekts extrahiert. )
Dieses ist folgendermaßen aufgebaut: YYYYMMDDhhmmss.??????+???Kannst doch mit Stringoperationen dein gewünschtes Format erstellen.
-
Und noch ein schöner: In der Schlange im Supermarkt

Und hier noch Klasse SourceCode

-
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 -
In Anlehnung an einen bekannten Ausspruch:
"Ein kleiner Schritt für Observer - ein großer Schritt für die Menschheit"
Freut mich, wenn es dir Klarheit gebracht hat.
-
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.
-
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. ...
-
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?
-
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>
[/autoit] [autoit][/autoit] [autoit]
#include <EditConstants.au3>
#include <Date.au3>Local $sec, $min, $hr, $day, $sec2, $min2, $hr2, $day2
[/autoit] [autoit][/autoit] [autoit]
Global $end, $start, $Sekunden, $end2, $start2, $Sekunden2, $s1 = 0, $s2 = 0
Global $Adlib = False, $EndAdlib = 0, $Count1 = False, $Count2 = False
;~ Global $INIPath = 'Pfad.INI'$gui = GUICreate('CountDown')
[/autoit] [autoit][/autoit] [autoit]GUICtrlCreateLabel('Tage', 15, 18, 60, 17)
[/autoit] [autoit][/autoit] [autoit]
$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)GUICtrlCreateLabel('Tage', 15, 153, 60, 17)
[/autoit] [autoit][/autoit] [autoit]
$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)GUISetState()
[/autoit] [autoit][/autoit] [autoit]While True
[/autoit] [autoit][/autoit] [autoit]
$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
WEndFunc SetCounter()
[/autoit] [autoit][/autoit] [autoit]
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
EndFuncFunc _FormatSec($secShow)
[/autoit]
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 -
Beispiel:
Spoiler anzeigen
[autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <EditConstants.au3>Local $sec, $min, $hr, $day
[/autoit] [autoit][/autoit] [autoit]
$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()While True
[/autoit] [autoit][/autoit] [autoit]
$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]
; 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 -
Lest es laut, dann wirkt es noch viel besser. Ich habe es meiner Tochter vorgelesen und wir mußten uns beide kringeln.

Brief eines Tirolers an die NASA -
[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
[/autoit]
WinSetState("Fenster 2", '', @SW_MINIMIZE)
ElseIf Not BitAND("Fenster-Titel oder GUI-ID", 16) Then ; Fenster wurde wiederhergestellt
WinSetState("Fenster 2", '', @SW_RESTORE)
EndIf -
Kein Problem:
[autoit]$a = 5
[/autoit]
$b = 2
$c = $a/$b
If StringInStr($c, '.') Then $c = StringReplace($c, '.', ',')
MsgBox(0, '', $c)Edit: Oops - du wolltest Komma zu Punkt - naja, das Ganze halt umgedreht.
