WOW. Nice. Noch eine Sache dann bin ich endlich wunschlos glücklich.
Kann man das auch so einstellen das nur 3 und 4 stellige Zahlen berücksichtigt werden? Es sind nämlich teilweise 2 zahlen mit in dem String die nicht berücksichtig werden sollen. (Und werden bei dieser Variante auch negative Werte berücksichtigt? Ich blick da nämlich nicht ganz durch -.-)
Beiträge von akira2012
-
-
Ja so funktioniert das AAABER ich habe eine kleine Wichtigkeit vergessen zu erzählen. Der Array enthält nicht nur Zahlen sondern diese sind von Text umgeben -.-
Also
blablablablabla xyz 2000 blablablablabla xyz
blablablablabla xyz 2311 blablablablabla xyz usw... -
Du setzt ein Vergleichswert:
$Klein = 0
dann werden die Zahl mit der gesuchten verglichen
Ist die Bedingung erfüllt wird geprüft ob die gefundene großer als der Vergleichswert ist.
Wenn ja haste einen neuen Vergleichswert ……Das ganze auch für die großen Zahlen
Du setzt ein Vergleichswert:
$Klein = 0
dann werden die Zahl mit der gesuchten verglichen
Ist die Bedingung erfüllt wird geprüft ob die gefundene großer als der Vergleichswert ist.
Wenn ja haste einen neuen Vergleichswert ……Das ganze auch für die großen Zahlen
Ich glaub ich kann dir nicht ganz folgen... Wenn ich nach einem Wert suche der NUR ÄHNLICH ist dann kann ich doch nicht einfach sagen such nach irgendeiner Zahl. Kannst du das bitte was näher erläutern. Danke schonmal für die schnelle Antwort
-
Hallo,
ich wollte fragen ob jemand eine Idee hat wie ich in einer Datei in der Viele Zahlen untereinander stehen, die Suchen kann die der gesuchten am nähsten ist (negative und positive Zahlen).
Also z.B. Ich suche die Zahl 2333
Die Datei sieht z.B. so aus2100
2234
2310
2500
2700
...Wie bekomme ich es hin das er mit da jetzt die 2310 raussucht als am nächsten liegende Zahl? Ich komm einfach nicht drauf wie man das hinbekommt. Also einfach die gleiche Zahl zu suchen ist ja simpel aber ein ähnliche? o_O
-
Ok ich weiß jetzt wodran es liegt (denke du hattest nicht ganz unrecht)
[autoit]
Ich habe um den letzten Fehler zu beheben die timerfunktion einmal ausgeführt unzwar so:If $runonce = 1 Then
[/autoit]
_Timer_SetTimer($kontrollGui, 1, "_Timer")
$runonce = 0
EndIf
Danach kam erst der eigentliche Timer. Der wurde aber irgendwie nicht mehr benutzt. Keine Ahnung wieso. Was múss ich denn da machen das das klappt? oO -
Ja aber es macht doch keinen Sinn eine Sekundengenaue Anzeige alle 3 Sekunden zu aktualisieren oO
-
Also ich wüsste nicht wieso. Es wird jede Sekunde einmal aktualisiert. Das sollte doch ok sein odeR? oO
-
Hallo,
ich mal wieder. Die Schrift in den Labelistem das aktualisiert wird "flattert" ein wenig im Zeitpunk-Modus. Im Minutenmodus flackert die Schrift nur ein wenig. Wodran liegt das? Ich meine es wird doch bei beiden gleichoft aktualisiert oO
-
Doooooooooh -.-
Lol - jetzt wo du es sagst ist es logisch aber da wäre ichin 10 Jahren nicht drauf gekommen. DANKE! ^_^*
-
Also es ist bestimmt lächerlich - ganz bestimmt! Aber ich frag trotzdem....
Kann es sein das es eine Zeitliche Differenz zwischen drücken des Startbuttons und dem beginnen der Gui gibt weil die verbleibenden milisekunden berechnet werden? Ne oder? Sowas sollte ein Rechner doch in 1 Millisekunde erledigt haben oder? O_O
-
Lol. *DOING*
Sorry das war das berühmte Brett vorm KoppSpoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#cs ----------------------------------------------------------------------------AutoIt Version: 3.3.0.0
[/autoit] [autoit][/autoit] [autoit]
Author: myNameScript Function:
[/autoit] [autoit][/autoit] [autoit]
Template AutoIt script.#ce ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]; Script Start - Add your code below here
[/autoit] [autoit][/autoit] [autoit]
#include <Date.au3>
#include <GUIConstantsEx.au3>
#include <GuiConstants.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
#include <ButtonConstants.au3>
#include <Timers.au3>
#include <GDIPlus.au3>
#include <WinAPI.au3>
#Include <Constants.au3>Global $timer, $Secs, $Mins, $Hour, $Time, $verbleibendemillisekunden, $verbleibendeSekunden, $iTimer
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Global Const $AC_SRC_ALPHA = 1Dim $size[5], $width = 85, $high = 25, $test3, $Minuten, $Sekunden, $Stunden
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]
$pngSrc = @ScriptDir & "\ST.png"
$hImage = _GDIPlus_ImageLoadFromFile($pngSrc)
$width2 = _GDIPlus_ImageGetWidth($hImage)
$height2 = _GDIPlus_ImageGetHeight($hImage)$ST = GUICreate("Shutdowntimer", $width2, $height2, -1, -1, $WS_POPUP, $WS_EX_LAYERED)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
SetBitmap($ST, $hImage, 0)
;GUISetBkColor(0x000000)
GUIRegisterMsg($WM_NCHITTEST, "WM_NCHITTEST")
GUISetState()
WinSetOnTop($ST, "", 1)
;fade in png background
For $i = 0 To 255 Step 5
SetBitmap($ST, $hImage, $i)
Next$kontrollGui = GUICreate("ShutDownTimer", 350, 250, -1, -1,$WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $ST)
[/autoit] [autoit][/autoit] [autoit]
GUISetBkColor(0x000000, $kontrollGui)GUICtrlCreateLabel("Shutdown-Timer", 90, 50, 200)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetBkColor(-1, 0x000000)
GUICtrlSetFont(-1, 16, 500, 2)$Startbutton = GUICtrlCreateButton("Start", 70, 125, $width, $high)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetTip($Startbutton, "Startet den Countdown zur ausgewählten Aktion.")$minimieren = GUICtrlCreatePic(@ScriptDir & "\Minimize.bmp", 30, 20, 40, 40)
[/autoit] [autoit][/autoit] [autoit]$Minuteneingabe = GUICtrlCreateInput("", 70, 90, $width, $high)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetTip($Minuteneingabe, "Zeit in Minuten in der der Rechner die ausgewählte Aktion durchführen soll")$ZeitStunden = GUICtrlCreateCombo(@HOUR, 70, 90, $width / (2.3), $high)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData($ZeitStunden, "00|01|02|03|04|05|06|07|08|09|10|11|12|13|14|15|16|17|18|19|20|21|22|23")
GUICtrlSetBkColor($ZeitStunden, 0xFFFFFF)
GUICtrlSetTip($ZeitStunden, "Uhrzeit eingeben: Stunden (0-24)")
GUICtrlSetState($ZeitStunden, $GUI_HIDE)$Doppelpunkt = GUICtrlCreateLabel(":", 111, 95, 5)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetColor($Doppelpunkt, 0xFFFFFF)
GUICtrlSetBkColor($Doppelpunkt, 0x000000)
GUICtrlSetState($Doppelpunkt, $GUI_HIDE)
GUICtrlCreateLabel("00:00:00", 10, 10)
GUICtrlSetColor($Doppelpunkt, 0xFFFFFF)$ZeitMinuten = GUICtrlCreateCombo(@MIN, 118, 90, $width / (2.3), $high)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData($ZeitMinuten, "00|01|02|03|04|05|06|07|08|09|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59|60")
GUICtrlSetBkColor($ZeitMinuten, 0xFFFFFF)
GUICtrlSetTip($ZeitMinuten, "Uhrzeit eingeben: Minuten (0-60)")
GUICtrlSetState($ZeitMinuten, $GUI_HIDE)$Umschaltkaestchen = GUICtrlCreateCheckbox("", 45, 95, 20, 20)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetBkColor($Umschaltkaestchen, 0x000000)
GUICtrlSetTip($Umschaltkaestchen, "Schaltet von Minuten in Uhrzeit Modus")$Abbrechen = GUICtrlCreateButton("Abbrechen", 185, 125, $width, $high)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetTip($Abbrechen, "Hier klicken um den Countdown zu stoppen und das Programm zu beenden.")$Auswahl = GUICtrlCreateCombo("Auswählen...", 185, 90, $width, $high)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetTip($Auswahl, "Bitte wähle aus welche Aktion durchgeführt werden soll")
GUICtrlSetData($Auswahl, "Runterfahren|Neustarten|Abmelden|StandBy")$Informationsfeld = GUICtrlCreateLabel("", 70, 190, 200, 60, 0x1001)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetColor($Informationsfeld, 0xFFFFFF)GUISetState()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
$msg = GUIGetMsg()
Switch $msg
Case $Umschaltkaestchen
$Test = GUICtrlRead($Umschaltkaestchen)
If $Test = $GUI_CHECKED Then
GUICtrlSetState($Minuteneingabe, $GUI_HIDE)
GUICtrlSetState($ZeitMinuten, $GUI_SHOW)
GUICtrlSetState($ZeitStunden, $GUI_SHOW)
Else
GUICtrlSetState($Minuteneingabe, $GUI_SHOW)
GUICtrlSetState($ZeitMinuten, $GUI_HIDE)
GUICtrlSetState($ZeitStunden, $GUI_HIDE)
EndIfCase $Abbrechen
[/autoit] [autoit][/autoit] [autoit]
ExitLoopCase $Startbutton
[/autoit] [autoit][/autoit] [autoit]
$Test = GUICtrlRead($Umschaltkaestchen)
If $Test = $GUI_CHECKED Then
_Start()
Else
_Start2()
EndIfCase $GUI_EVENT_CLOSE
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
ExitLoop
EndSwitchWEnd
[/autoit] [autoit][/autoit] [autoit]Func _start()
[/autoit] [autoit][/autoit] [autoit]
Global $durchzufuehrendeAktion = GUICtrlRead($Auswahl)
Global $ReadStunden = GUICtrlRead($ZeitStunden)
Global $ReadMinuten = GUICtrlRead($ZeitMinuten)
$GesamtZeitinSekunden = ($ReadStunden * 3600) + ($ReadMinuten * 60)
$RealeZeitinSekunden = (@HOUR * 3600) + (@MIN * 60) + @SEC
Global $verbleibendeSekunden = $GesamtZeitinSekunden - $RealeZeitinSekunden
Global $verbleibendemillisekunden = $verbleibendeSekunden * 1000
Global $iTimer = TimerInit()
_Timer_SetTimer($kontrollGui, 999, "_Timer")
AdlibEnable("_aktion", $verbleibendemillisekunden)
EndFunc ;==>_startFunc _start2()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Global $durchzufuehrendeAktion = GUICtrlRead($Auswahl)
$Minuten = GUICtrlRead($Minuteneingabe)
Global $verbleibendemillisekunden = ($Minuten * 60) * 1000
Global $iTimer = TimerInit()
_Timer_SetTimer($kontrollGui, 999, "_Timer")
AdlibEnable("_aktion", $verbleibendemillisekunden)
EndFunc ;==>_start2Func _Timer($hWnd, $msg, $iIDTimer, $dwTime)
[/autoit] [autoit][/autoit] [autoit]
Local $Secs, $Mins, $Hour
_TicksToTime($verbleibendemillisekunden - Int(TimerDiff($iTimer)), $Hour, $Mins, $Secs)
StringFormat("%02i:%02i:%02i", $Hour, $Mins, $Secs)
If $hour <> 0 Then
GUICtrlSetData($Informationsfeld, "Folgende Aktion wird in " & @LF & $Hour & " Stunden, " & $Mins & " Minuten und " & $Secs & " Sekunden durchgeführt: " & @LF &$durchzufuehrendeAktion)
ElseIf $hour = 0 AND $Mins <> 0 Then
GUICtrlSetData($Informationsfeld, "Folgende Aktion wird in " & @LF & $Mins & " Minuten und " & $Secs & " Sekunden durchgeführt: " & @LF &$durchzufuehrendeAktion)
ElseIf $hour = 0 AND $Mins = 0 AND $Secs <> 0 Then
GUICtrlSetData($Informationsfeld, "Folgende Aktion wird in " & @LF & $Secs & " Sekunden durchgeführt: " & @LF &$durchzufuehrendeAktion)
ElseIf $hour = 0 AND $Mins = 0 AND $Secs = 0 Then
GUICtrlSetData($Informationsfeld, "Folgende Aktion wird jetzt durchgeführt: " & @LF &$durchzufuehrendeAktion)
EndIfEndFunc ;==>_Timer
[/autoit] [autoit][/autoit] [autoit]Func _aktion()
[/autoit] [autoit][/autoit] [autoit]
Switch $durchzufuehrendeAktion
Case "StandBy"
Shutdown(32)
ExitCase "Runterfahren"
[/autoit] [autoit][/autoit] [autoit]
Shutdown(17)Case "Neustarten"
[/autoit] [autoit][/autoit] [autoit]
Shutdown(18)Case "Abmelden"
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Shutdown(0)
Exit
EndSwitch
EndFunc ;==>_aktionFunc SetBitmap($hGUI, $hImage, $iOpacity)
[/autoit] [autoit][/autoit] [autoit]
Local $hScrDC, $hMemDC, $hBitmap, $hOld, $pSize, $tSize, $pSource, $tSource, $pBlend, $tBlend$hScrDC = _WinAPI_GetDC(0)
[/autoit] [autoit][/autoit] [autoit]
$hMemDC = _WinAPI_CreateCompatibleDC($hScrDC)
$hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
$hOld = _WinAPI_SelectObject($hMemDC, $hBitmap)
$tSize = DllStructCreate($tagSIZE)
$pSize = DllStructGetPtr($tSize)
DllStructSetData($tSize, "X", _GDIPlus_ImageGetWidth($hImage))
DllStructSetData($tSize, "Y", _GDIPlus_ImageGetHeight($hImage))
$tSource = DllStructCreate($tagPOINT)
$pSource = DllStructGetPtr($tSource)
$tBlend = DllStructCreate($tagBLENDFUNCTION)
$pBlend = DllStructGetPtr($tBlend)
DllStructSetData($tBlend, "Alpha", $iOpacity)
DllStructSetData($tBlend, "Format", $AC_SRC_ALPHA)
_WinAPI_UpdateLayeredWindow($hGUI, $hScrDC, 0, $pSize, $hMemDC, $pSource, 0, $pBlend, $ULW_ALPHA)
_WinAPI_ReleaseDC(0, $hScrDC)
_WinAPI_SelectObject($hMemDC, $hOld)
_WinAPI_DeleteObject($hBitmap)
_WinAPI_DeleteDC($hMemDC)
EndFunc ;==>SetBitmapFunc WM_NCHITTEST($hWnd, $iMsg, $iwParam, $ilParam)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit]
If ($hWnd = $ST) And ($iMsg = $WM_NCHITTEST) Then Return $HTCAPTION
EndFunc ;==>WM_NCHITTEST -
Hallo,
habe wieder ein neues Problem. Das heißt eigentlich ist es kein wirkliches Problem eher ein Performance-Problem. Wenn ich in meiner GUI auf den Start-Button drücke, dann passiert 2 sek nichts bevor die Function startet. Es ist in sofern merkwürdig weil ich KEIN einziges sleep benutze. Wodran kann das liegen?
Achja ich benutze den messageloop mode oder wie das heißt -
ES FUNKTIONIERT - dER TIMER FUNKTIONIERT xD
Vielen Dank! --> weitere Fragen folgen ;P
-
Ok.. ähm. Ja. Also. Hm. Ich versteh das mit den Ticks nicht. Was ist ein Tick? Wie lange dauert ein Tick? Ist ein Tick eine Sekunde? Kann ich Sekunden in Ticks umrechnen und dann in Zeit? Oder MUSS ich für diese Variante eine feste Uhrzeit haben zum umwandeln?`Sry aber versuche grad das nachzuvollziehen da mit copy&pate ja nichts bringt.
-
Halli Hallo,
ich habe versucht mit der Funktion _timer_settimer irgendwas brauchbares zu erstellen das mir die verbleibende Zeit wiedergibt aber irgendwie funktioniert das nicht. Hat mal wer ein EINFACHES Beispiel für diese Funktion?
Danke schonmal...
-
Ich habe schonmal eine Grundsätzliche Frage.. Die Berechnung der verbleibenden Zeit etc. ist bei mir ja "einigermaßen" chaotisch. Gibts dafür mittlerweile eine Funktion die mir das alles automatisch ausrechnet? Ich hab nicht wirklich was gefunden...
-
Hi,
ich werd deinen vorschlag beherzigen und alles neu aufrollen also mach dich schonmal auf ein paar blöde fragen gefasst, oscar -
Habt ihrs euch nochmal angeschaut? Kann man da was machen bezüglich des Fortlaufens?
-
Ok - Versuch macht kluch.
Spoiler anzeigen
[autoit][/autoit] [autoit][/autoit] [autoit]Func _Minutenzaehler()
[/autoit] [autoit][/autoit] [autoit][/autoit]
;GUICtrlSetData($Informationsfeld, "")
GUICtrlSetState($Eingabefeld, $GUI_DISABLE)
GUICtrlSetState($Umschaltkaestchen, $GUI_DISABLE)
GUICtrlSetState($Auswahl, $GUI_DISABLE)
GUICtrlSetState($Start, $GUI_DISABLE)
$Eingabefeld = GUICtrlRead($Eingabefeld)
$ZeitinSekunden = $Eingabefeld * 60
$Aktion = GUICtrlRead($Auswahl)
If $Aktion = "Auswählen..." Then
MsgBox(16, "Fehler!!", "Erst eine Aktion auswählen!!!")
ElseIf $Eingabefeld = "" Then
MsgBox(16, "Fehler!!", "Bitte die Zeit angeben!!!")
Else
For $i = 1 To $ZeitinSekunden
$StTime = TimerInit()
$test3 = 1
$EineSekunde = 1000
$AktuelleZeitinSekunden = $ZeitinSekunden - $i
$inMinutenumrechnung = ($ZeitinSekunden - $i) / 60
$Minuten = Int($inMinutenumrechnung)
$WoistderMauszeiger = GUIGetCursorInfo($controlGui)
$Maustaste1gedrueckt = _IsPressed("01")
Switch $Minuten
Case 1 To 9999999999
$Sekunden = $AktuelleZeitinSekunden - ($Minuten * 60)
Case 0
$Sekunden = $AktuelleZeitinSekunden
EndSwitch
GUICtrlSetData($Informationsfeld, "Folgende Aktion wird in " & @LF & $Minuten & " Minuten und " & $Sekunden & " Sekunden" & @LF & "durchgeführt: " & @LF & $Aktion)
Do
Sleep(100)
Abbrechen()
minimieren()
Until TimerDiff($StTime) > $EineSekunde
Next
If $test3 = 1 Then
Switch $Aktion
Case "Runterfahren"
Shutdown(5)
Case "Neustarten"
Shutdown(6)
Case "Abmelden"
Shutdown(0)
Case "StandBy"
Shutdown(32)
Exit
EndSwitch
EndIf
EndIf
GUICtrlSetState($Eingabefeld, $GUI_ENABLE)
GUICtrlSetState($Auswahl, $GUI_ENABLE)
GUICtrlSetState($Start, $GUI_ENABLE)
EndFunc ;==>_Minutenzaehler -
Danke für eure bemühungen.
Das Script von dir ist ganz gut aber leider habe ich nicht SO einen Timer sondern einen aus einer eigenen Bastelaktion. Leider kann ich aus deinem Script auch nicht entnehmen wodran es liegt das er bei dir weiterzählt (mir würde reichen wenn er das im Hintergrund tut). Werde mich wohl damit abfinden müssen das es nicht geht.