ich denke, jetzt macht es nur noch Sinn, wenn Du uns den ganzen Code postest.
Beiträge von Schnuffel
-
-
nun mal langsam mit den wilden Pferden...

zu Deinem Problem:
Du versuchst mit der style $BS_ICON ein Bitmap zu zuweisen. Das wird nicht funken.
siehe Hilfe:ZitatA Button control can display an icon or image by using the $BS_ICON or $BS_BITMAP style.
Use GUICtrlSetImage to specify the picture to use.versuch's mal mit $BS_BITMAP
so long...
(jetzt wollt ich mal schneller sein...
) -
@ Doc,
vielleicht hab ich mich etwas ungeschickt ausgedrückt.
Ich möchte nur, das die Funktion hinter dem Button schon beim anklicken ausgeführt wird, damit der Effekt des
(ich ziehe die Maus vom Button, bevor ich loslasse und dann passiert nichts...) nicht eintreten kann,so wie eben auch der Button selbst schon (beim drücken der Maustaste
) den Focus erhält. -
Hallo zusammen,
wenn ich in dem Beispiel-Script den Button mit der linken Maustaste drücke und gedrückt den Button verlasse, wird die Funktion "hinter" dem Button nicht ausgeführt.
Kann man das ändern , das die Funktion mit "onClick" ausgeführt wird?
Ich kann mir vorstellen, das das an der grundsätzlichen Programmierung der GuiCtrlCreateButton-Funktion liegt und die Funktion erst mit "OnRelease" ausgeführt wird.
Gibt es dafür einen einfachen workaround?Spoiler anzeigen
[autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]GUICreate("My GUI Button") ; will create a dialog box that when displayed is centered
[/autoit] [autoit][/autoit] [autoit]Opt("GUICoordMode",2)
[/autoit] [autoit][/autoit] [autoit]
$Button_1 = GUICtrlCreateButton ("Run Notepad", 10, 30, 100)
$Button_2 = GUICtrlCreateButton ( "Button Test", 0, -1)GUISetState () ; will display an dialog box with 2 button
[/autoit] [autoit][/autoit] [autoit]; Run the GUI until the dialog is closed
[/autoit]
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
Case $msg = $Button_1
Run('Notepad.exe') ; Will Run/Open Notepad
Case $msg = $Button_2
MsgBox(0, 'Testing', 'Button 2 was pressed') ; Will demonstrate Button 2 being pressed
EndSelect
Wend -
Hallo Oscar,
hab noch einen Verbesserungsvorschlag.
Du kannst die .gif-Dateien doch includieren ohne FileInstall und Ablage auf der HDD:
Hab ich aus einem Post von progandy:http://www.autoitscript.com/forum/index.php?showtopic=51103
hab ich hier gefunden:
[ offen ] GUI - frage zum editfeld!vielleicht kannst Du das ja brauchen

-
ihr seid wirklich gut
,da bastel ich mir die Finger wund, dabei gibt es das alles schon.

Eine Frage hab ich aber doch noch.
Gibt es eine Möglichkeit mit dem GuiCtrlSendMsg Hexcode die Pull-up/-down Pfeile noch zu "eliminieren"?
siehe Script:Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstants.au3>
GUICreate ( "My GUI get date", 200,200,800,200)
$date = GUICtrlCreateDate ("00:00", 10,10,60,20, $DTS_TIMEFORMAT )
$date1 = GUICtrlCreateDate ("00:00", 10,40,60,20, $DTS_TIMEFORMAT )
$date2 = GUICtrlCreateDate ("00:00", 10,70,60,20, $DTS_TIMEFORMAT )
$style = "HH:mm"GuiCtrlSendMsg($date, 0x1032, 0, $style)
[/autoit] [autoit][/autoit] [autoit]
GuiCtrlSendMsg($date1, 0x1032, 0, $style)
GuiCtrlSendMsg($date2, 0x1032, 0, $style)
GuiSetState()While GuiGetMsg() <> $GUI_EVENT_CLOSE
[/autoit] [autoit][/autoit] [autoit]
WEndMsgBox(0,"Time", GUICtrlRead($date)&@CR&GUICtrlRead($date1)&@CR&GUICtrlRead($date2))
[/autoit] -
danke für die zahlreichen Tipps,
die On-the-Fly Prüfung wäre schon ein gewisses "Feature" für mich.
Vielleicht kann ich mein "Problem" verdeutlichen...
Ich bastle an einer Zeiterfassungs-Software.
In dieser sollen die User Ihre Zeiten eintragen.
Damit es "schön" aussieht und zur Sicherheit der Eingaben (dann brauche ich nicht hinterher alle Daten prüfen) möchte ich diese Prüfung.
Ich speichere die Zeitdaten in einer SQLite-DB pro User. Dafür hab ich eine kleine Funktion geschrieben, die mir die Zeiten in Minuten umrechnet und gleichzeitig auch mit Vorzeichen umgehen kann. Damit kann ich dann auch die Überstunden berechnen etc...hier ein Screenshot von der Sache.
Ich denk mir halt bei der Vielzahl von Input's
[Blockierte Grafik: http://www.pc-wizards.de/Bild.jpg]Ach ja, wer es brauchen kann:
Ich hänge die Funktion mal mit an...@Mega: Du hast Recht, ich hatte in einer ersten Version noch einePrüfung drin, hatte ich wohl beim umstrukturieren "verloren".
Hab ich jetzt wieder eingebaut. Ich denke jetzt ist die Eingabe fast Idiotensicher. Wenn noch einer einen Bug findet würde ich mich freuen.Spoiler anzeigen
[autoit]#include <GuiConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <Array.au3>;Global $changed = False
[/autoit] [autoit][/autoit] [autoit]GUICreate("My GUI Zeiteingabe",200,100) ; will create a dialog box that when displayed is centered
[/autoit] [autoit][/autoit] [autoit]$edit = GUICtrlCreateInput(" :", 10, 30, 52, 20,$ES_NUMBER) ; Eingabebox
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetFont(-1,10,600,0,"Courier New") ; nichtproportionale Schrift gewählt, für die Optik des gleichbleibenden Abstandes vor dem ":" mit Leerzeichen
GUICtrlSetLimit(-1,5)
$edit1 = GUICtrlCreateInput(" :", 75, 30, 52, 20,$ES_NUMBER) ; Eingabebox
GUICtrlSetFont(-1,10,600,0,"Courier New") ; nichtproportionale Schrift gewählt, für die Optik des gleichbleibenden Abstandes vor dem ":" mit Leerzeichen
GUICtrlSetLimit(-1,5)
$edit2 = GUICtrlCreateInput(" :", 140, 30, 52, 20,$ES_NUMBER) ; Eingabebox
GUICtrlSetFont(-1,10,600,0,"Courier New") ; nichtproportionale Schrift gewählt, für die Optik des gleichbleibenden Abstandes vor dem ":" mit Leerzeichen
GUICtrlSetLimit(-1,5)
$btn = GUICtrlCreateButton("Ohne Funktion", 50, 70, 100, 20)
GUISetState()
GUIRegisterMsg($WM_COMMAND, "MY_WM_COMMAND")
Send("{LEFT 3}")
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
EndSelect
WEndFunc MY_WM_COMMAND($hWnd, $msg, $wParam, $lParam)
[/autoit] [autoit][/autoit] [autoit]
Local $backspc = 0
Local $nNotifyCode = _HiWord($wParam)
Local $nID = _LoWord($wParam)
Local $hCtrl = $lParam
Switch $nID ; aktuelle Inputbox
Case $edit Or $edit1 Or $edit2
Switch $nNotifyCode
Case $EN_CHANGE
$temp = StringSplit(GUICtrlRead($nID),":")
If @error Then
_ArrayAdd($temp,"")
EndIf
$temp[1] = StringReplace($temp[1]," ","")
If $temp[0] = 1 Then
$temp[1] = StringLeft($temp[1],1)&" "
GUICtrlSetData($nID,$temp[1]&":")
Send("{LEFT 2}")
EndIf
Switch StringLen($temp[2])
Case 2
Send("{TAB}")
Case 1
If NOT StringIsDigit($temp[1]) Then
GuiCtrlSetData($nID," :")
Send ("{LEFT 3}")
EndIf
If $temp[2] > 5 Then
$temp[2]=""
GuiCtrlSetData($nID,$temp[1]&":"&$temp[2])
EndIf
Case 0
Switch StringLen($temp[1])
Case 2
Switch StringLeft($temp[1],1)
Case 2
If $temp[1] > 23 Then
$temp[1] = "2 "
GuiCtrlSetData($nID,$temp[1]&":")
send ("{LEFT 2}")
Else
GuiCtrlSetData($nID,$temp[1]&":")
EndIf
Case 1
GuiCtrlSetData($nID,$temp[1]&":")
Case 0
GuiCtrlSetData($nID,$temp[1]&":")
EndSwitch
Case 1
Switch $temp[1]
Case 3 to 9
$temp[1] = "0"&$temp[1]
GuiCtrlSetData($nID,$temp[1]&":")
Case 0 to 2
GuiCtrlSetData($nID,$temp[1]&" :")
send ("{LEFT 2}")
EndSwitch
Case 0
GuiCtrlSetData($nID," :")
send ("{LEFT 3}")
EndSwitch
EndSwitch
Case $EN_SETFOCUS
GuiCtrlSetData($nID," :")
Send("{LEFT 3}")
Case $EN_KILLFOCUS
$temp = StringSplit(GUICtrlRead($nID),":")
$temp[1] = StringReplace($temp[1]," ","")
If $temp[0] = 1 Then _ArrayAdd($temp,"")
If StringLen($temp[2]) = 2 Then
If StringLen($temp[1]) = 2 Then
Return
Else
GUICtrlSetData($nID," :")
Return
EndIf
EndIf
Switch StringisDigit($temp[1])
Case True
Switch StringLen($temp[1])
Case 1
If $temp[1] > 2 Then $temp[1] = "0"&$temp[1]
If $temp[1] <= 2 Then $temp[1] = " "
Case 2
If $temp[2] > "" Then
$temp[2] = $temp[2]&"0"
GUICtrlSetData($nID,$temp[1]&":"&$temp[2])
EndIf
EndSwitch
If $temp[2] = "" Or $temp[2] = 0 Then
$temp[2] = "00"
GUICtrlSetData($nID,$temp[1]&":"&$temp[2])
EndIf
Case False
GUICtrlSetData($nID," :")
EndSwitch
EndSwitch
EndSwitch
EndFunc ;==>MY_WM_COMMANDFunc _HiWord($x)
[/autoit] [autoit][/autoit] [autoit]
Return BitShift($x, 16)
EndFunc ;==>_HiWordFunc _LoWord($x)
[/autoit]
Return BitAND($x, 0xFFFF)
EndFunc ;==>_LoWordSpoiler anzeigen
[autoit]#include-once
[/autoit] [autoit][/autoit] [autoit]
; #INDEX# =======================================================================================================================
; Title .........: TimeMin
; AutoIt Version: 3.2.3++
; Language: English
; Description: Functions that assist with Time calculation.
; ===============================================================================================================================
; ------------------------------------------------------------------------------
; AutoIt Version: 3.0
; Language: English
; Description: Functions that assist with Time management.
; ------------------------------------------------------------------------------; #FUNCTION# ====================================================================================================================
[/autoit]
; Name...........: _TimetoMin()
; Description ...: Change the format from Time to Minutes like: 08:45 --> 525
; Syntax.........: _TimetoMin($msg)
; Parameters ....: $msg - Time to convert in format "(+/-)05:04" Returns(+/-) only if it comes with $msg!
; Return values .: Success - Time in minutes with "+/-mmmmm"
; Failure: @error - 1 = Function called with wrong Parameter (not in format (+/-)hhhh:mm)
; Failure: @error - 2 = Function called with wrong Parameter (hhhh/mm are no Digits)
; Failure: @error - 3 = Function called with wrong Parameter (mm > 59)
; Author ........: Oliver Zimmermann <o_z at gmx dot net> (Schnuffel)
; Modified.......:
; Remarks .......:
; Related .......: _MintoTime()
; Link ..........;
; Example .......; No
; ===============================================================================================================================
Func _TimetoMin($msg)
Local $vz="", $Mins1, $Mins2, $sumtoMin
If StringLeft($msg,1)="+" Then
$vz="+"
$msg=StringTrimLeft($msg,1)
ElseIf StringLeft($msg,1)="-" Then
$vz="-"
$msg=StringTrimLeft($msg,1)
EndIf
$msg=StringSplit($msg,":")
If @error=1 Then
setError(1)
Return 0
EndIf
If StringIsDigit($msg[1])=0 Or StringIsDigit($msg[2])=0 Then
setError(2)
Return 0
EndIf
If $msg[2]>59 Then
setError(3)
Return 0
EndIf
$msg[1]=$msg[1]*60
$sumtoMin=$msg[1]+$msg[2]
$msg=0
setError(0)
Return($vz&$sumtoMin)
EndFunc
; #FUNCTION# ====================================================================================================================
; Name...........: _MintoTime()
; Description ...: Change the format from minutes to Time format like: 08:45 --> +525
; Syntax.........: _MintoTime($msg)
; Parameters ....: $msg - Minutes to convert in format "+/-mmmmmm" Returns(+/-) only if it comes with $msg!
; Return values .: Success - Time in format "+/-hh:mm"
; Failure: @error - 1 = Function called with wrong Parameter (not in format (+/-)mmmmm; 'mmmm' are no Digits)
; Author ........: Oliver Zimmermann <o_z at gmx dot net> (Schnuffel)
; Modified.......:
; Remarks .......:
; Related .......: _TimetoMin()
; Link ..........;
; Example .......; No
; ===============================================================================================================================
Func _MintoTime($msg)
Local $Hours, $Mins, $vz=""
If StringLeft($msg,1)="+" Then
$msg=StringTrimLeft($msg,1)
$vz="+"
ElseIf StringLeft($msg,1)="-" Then
$vz="-"
$msg=StringTrimLeft($msg,1)
EndIf
If StringIsDigit($msg)=0 Then
SetError(1)
Return(0)
EndIf
$Hours=StringSplit($msg/60,".")
$Mins=$msg-($Hours[1]*60)
If $Mins<10 Then $Mins="0"&$Mins
If $Hours[1]<10 Then $Hours[1]="0"&$Hours[1]
$msg=0
setError(0)
Return ($vz&$Hours[1]&":"&$Mins)
EndFunc -
Hallo zusammen,
hab jetzt mal eine Funktion auf Grundlage der bisherigen Tipps erstellt.
Vielleicht hat ja jemand Lust und/oder Zeit da mal drüber zu schauen.
Mir wäre sehr an einer Optimierung gelegen. Verstanden wie es geht hab ich ja jetzt.
Spoiler anzeigen
#include <GuiConstants.au3>
#include <Array.au3>;Global $changed = False
GUICreate("My GUI Zeiteingabe",200,100) ; will create a dialog box that when displayed is centered
$edit = GUICtrlCreateInput(" :", 10, 30, 52, 20,$ES_NUMBER) ; Eingabebox
GUICtrlSetFont(-1,10,600,0,"Courier New") ; nichtproportionale Schrift gewählt, für die Optik des gleichbleibenden Abstandes vor dem ":" mit Leerzeichen
GUICtrlSetLimit(-1,5)
$edit1 = GUICtrlCreateInput(" :", 75, 30, 52, 20,$ES_NUMBER) ; Eingabebox
GUICtrlSetFont(-1,10,600,0,"Courier New") ; nichtproportionale Schrift gewählt, für die Optik des gleichbleibenden Abstandes vor dem ":" mit Leerzeichen
GUICtrlSetLimit(-1,5)
$edit2 = GUICtrlCreateInput(" :", 140, 30, 52, 20,$ES_NUMBER) ; Eingabebox
GUICtrlSetFont(-1,10,600,0,"Courier New") ; nichtproportionale Schrift gewählt, für die Optik des gleichbleibenden Abstandes vor dem ":" mit Leerzeichen
GUICtrlSetLimit(-1,5)
$btn = GUICtrlCreateButton("Ohne Funktion", 50, 70, 100, 20)
GUISetState()
GUIRegisterMsg($WM_COMMAND, "MY_WM_COMMAND")
Send("{LEFT 3}")
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
EndSelect
WEndFunc MY_WM_COMMAND($hWnd, $msg, $wParam, $lParam)
Local $backspc = 0
Local $nNotifyCode = _HiWord($wParam)
Local $nID = _LoWord($wParam)
Local $hCtrl = $lParam
Switch $nID ; aktuelle Inputbox
Case $edit Or $edit1 Or $edit2
Switch $nNotifyCode
Case $EN_CHANGE
$temp = StringSplit(GUICtrlRead($nID),":")
$temp[1] = StringReplace($temp[1]," ","")
If $temp[0] = 1 Then
$temp[1] = StringLeft($temp[1],1)&" "
GUICtrlSetData($nID,$temp[1]&":")
Send("{LEFT 2}")
EndIf
Switch StringLen($temp[2])
Case 2
Send("{TAB}")
Case 1
If NOT StringIsDigit($temp[1]) Then
GuiCtrlSetData($nID," :")
Send ("{LEFT 3}")
EndIf
If $temp[2] > 5 Then
$temp[2]=""
GuiCtrlSetData($nID,$temp[1]&":"&$temp[2])
EndIf
Case 0
Switch StringLen($temp[1])
Case 2
Switch StringLeft($temp[1],1)
Case 2
If $temp[1] > 23 Then
$temp[1] = "2 "
GuiCtrlSetData($nID,$temp[1]&":")
send ("{LEFT 2}")
Else
GuiCtrlSetData($nID,$temp[1]&":")
EndIf
Case 1
GuiCtrlSetData($nID,$temp[1]&":")
Case 0
GuiCtrlSetData($nID,$temp[1]&":")
EndSwitch
Case 1
Switch $temp[1]
Case 3 to 9
$temp[1] = "0"&$temp[1]
GuiCtrlSetData($nID,$temp[1]&":")
Case 0 to 2
GuiCtrlSetData($nID,$temp[1]&" :")
send ("{LEFT 2}")
EndSwitch
Case 0
GuiCtrlSetData($nID," :")
send ("{LEFT 3}")
EndSwitch
EndSwitch
Case $EN_SETFOCUS
GuiCtrlSetData($nID," :")
Send("{LEFT 3}")
Case $EN_KILLFOCUS
$temp = StringSplit(GUICtrlRead($nID),":")
$temp[1] = StringReplace($temp[1]," ","")
If $temp[0] = 1 Then _ArrayAdd($temp,"")
If StringLen($temp[2]) = 2 Then
If StringLen($temp[1]) = 2 Then
Return
Else
GUICtrlSetData($nID," :")
Return
EndIf
EndIf
Switch StringisDigit($temp[1])
Case True
Switch StringLen($temp[1])
Case 1
If $temp[1] > 2 Then $temp[1] = "0"&$temp[1]
If $temp[1] <= 2 Then $temp[1] = " "
Case 2
If $temp[2] > "" Then
$temp[2] = $temp[2]&"0"
GUICtrlSetData($nID,$temp[1]&":"&$temp[2])
EndIf
EndSwitch
If $temp[2] = "" Or $temp[2] = 0 Then
$temp[2] = "00"
GUICtrlSetData($nID,$temp[1]&":"&$temp[2])
EndIf
Case False
GUICtrlSetData($nID," :")
EndSwitch
EndSwitch
EndSwitch
EndFunc ;==>MY_WM_COMMANDFunc _HiWord($x)
Return BitShift($x, 16)
EndFunc ;==>_HiWordFunc _LoWord($x)
Return BitAND($x, 0xFFFF)
EndFunc ;==>_LoWord
vielleicht kannn das ja der Ein oder Andere auch gebrauchen.Wäre für jeden Tip dankbar...
-
@ Bernd
Danke für den Tip, bin schon ganz verzweifelt gewesen.
Schau ich mir gleich mal an.@ prizma
Danke auch für deinen Tip, aber das war nicht mein Problem.
Arbeite an einer Zeiterfassungssoftware auf Basis von AutoIt incl. SQLite und so ...Auf jeden Fall finde ich das Forum echt gut.
Da bekommt man innerhalb von Minuten gute Tipps
-
Hallo zusammen,
ich möchte gern über ein GUICtrlCreateInput eine Uhrzeit eintragen.
Meine Vorstellung: ein Input Control mit vorgegebenem ":".
Während der Eingabe soll dann bei jedem Tastendruck eine Funktion aufgerufen werden,
damit die Eingabe auf Korrektheit überprüft und der Cursor automatisch gesetzt werden kann.
(Stundenzeiten vor dem ":", nach Eingabe von zwei Zahlen Sprung auf die rechte Seite des ":" für die Minuteneingabe)Hab sowas in unserem Spesenabrechnungsprogramm gesehen und weiß jetzt nicht, wie ich am Besten Focus und Tasteneingabe "abfangen" kann.
Ich hoffe, ich hab mich verständlich ausgedrückt.
Ansonsten bastle ich zur Veranschaulichung ein kleines Script...Danke schon mal im voraus
-
BugFix ,
[autoit]Opt("GUIOnEventMode", 1) ; mit dieser Option kannst Du Funktionen aufrufen
[/autoit]
[autoit]
hast natürlich Recht, hab das unbedacht nur so schnell dahinter geschrieben...
wollte nur eine Erklärung liefern, warum ich den Befehl verwendet habe.
Wie du sagst werde auch ich die Hilfe nächstesmal etwas genauer lesen...Send("#r")
[/autoit]
WinWaitActive("Ausführen")
Send("notepad.exe{Enter}")
den Code hab ich aus der Original engl. Hilfe kopiert (Send) und nur die Befehle für Notepad (deutsch) angepasst,
um den Send-Befehl zu verdeutlichen.
-
Hallo td1000,
ich hab das mal schnell hingebastelt. Denke das hilft dir weiter.
[autoit]Opt("GUIOnEventMode", 1) ; mit dieser Option kannst Du Funktionen aufrufen
[/autoit][autoit][/autoit][autoit]Send("#r")
[/autoit][autoit][/autoit][autoit]
WinWaitActive("Ausführen")
Send("notepad.exe{Enter}")
WinWaitActive("Unbenannt -")
Send("Today's time/date is {F5}")HotKeySet ("^1","meine_funktion" ) ; mit strg + 1 soll der text 99000 da stehen
[/autoit]
While 1 ; Schleife die wartet, damit Programm nicht beendet wird
Sleep(1)
WEnd
Func meine_funktion()
;~ Send("{down}") ;taste drücken ????? unnötig
;~ Send("{up}") ; taste loslassen ????? unnötig
;~ Sleep(1) ; text wird in 1 milsec eingegeben ????? unnötig
send ("{ENTER}99000") ; text bzw zahlen die geschreiben werden sollen
EndFuncWie McPoldy schon sagt, kräftig die Hilfe lesen....
-
Hallo Oscar,
du hast Recht.
bringt wirklich nichts. Hab ich ausprobiert.Gibt es eigentlich eine Möglichkeit, die gif-Dateien beim Start in den Speicher zu laden und von dort auszutauschen?
Ich denke die 3% CPU-Last auf meiner Maschine gehen zu Lasten des ständigen Bilder neu ladens von HDD.PS: Das Script ist echt gut.
Hab gar nicht gewusst, das man so "fensterlose" Sachen machen kann
-
Hallo Oscar,
macht es vielleicht Sinn, wenn Du die Zeitdifferenz-Abfrage nicht über If-Abfragen ausführst, sondern einfach einmal/Sek.
z.B. mit:AdlibEnable("_SetClock", 1000) einsetzt?
Vielleicht kann ich ja ein wenig zum Optimieren des Codes beitragen

( oder was lernen
) -
hab auch einen Ansatz.....
[autoit]$datei_splitten= FileOpenDialog("Datei zum Splitten auswählen", "", "MP3-Dateien (*.mp3)", 1 )
[/autoit]
$datei_splitten_array = StringSplit($datei_splitten,"\")
msgbox(0,"",StringRegExpReplace($datei_splitten,$datei_splitten_array[$datei_splitten_array[0]]," ",0))
msgbox(0,"",$datei_splitten_array[$datei_splitten_array[0]]) -
hab mir mal den Spass gemacht und die Ergebnisse verglichen
[autoit]
#include <Array.au3>
[/autoit][autoit][/autoit][autoit]
$N = 1000$Zeit = TimerInit()
[/autoit][autoit][/autoit][autoit]
for $r = 1 To $N
Dim $str1[3] = ['4:32', '10:01', '1:01']
For $i = 0 To UBound($str1) - 1
$str1[$i] = StringRegExpReplace($str1[$i], '\b\d:\d\d', 0 & '\0')
Next
Next$EinsTime = TimerDiff($Zeit) / $N
[/autoit][autoit][/autoit][autoit]
;_ArrayDisplay($str, "RegExp")$Zeit = TimerInit()
[/autoit][autoit][/autoit][autoit]
for $r = 1 To $N
Dim $str2[3] = ['4:32', '10:01', '1:01']
For $i = 0 To UBound($str2) - 1
$str2[$i] = StringFormat("%02u", $str2[$i]) & StringRight($str2[$i], 3)
Next
Next
$ZweiTime = TimerDiff($Zeit) / $N
;_ArrayDisplay($str, "StringFormat")$Zeit = TimerInit()
[/autoit][autoit][/autoit][autoit]
for $r = 1 To $N
Dim $str3[3] = ['4:32', '10:01', '1:01']
For $i = 0 To UBound($str3) - 1
$time = StringSplit($str3[$i], ":")
If $time[0] <= 9 AND StringLen($time[0]) = 1 Then $time[0]="0"&$time[0]
If $time[1] <= 9 AND StringLen($time[1]) = 1 Then $time[1]="0"&$time[1]
$str3[$i] = $time[0]&":"&$time[1]
Next
Next
$DreiTime = TimerDiff($Zeit) / $N
;_ArrayDisplay($str, "Leviathan")$Zeit = TimerInit()
[/autoit][autoit][/autoit][autoit]
for $r = 1 To $N
Dim $str4[3] = ['4:32', '10:01', '1:01']
For $i = 0 To UBound($str4) - 1
If StringLen($str4[$i]) < 5 Then $str4[$i] = '0' & $str4[$i]
Next
Next
$VierTime = TimerDiff($Zeit) / $N
;_ArrayDisplay($str, "StringLen")$Zeit = TimerInit()
[/autoit][autoit][/autoit][autoit]
for $r = 1 To $N
Dim $str5[3] = ['4:32', '10:01', '1:01']
For $i = 0 To UBound($str5) - 1
If StringInStr($str5[$i], ':') = 2 Then $str5[$i] = '0' & $str5[$i]
Next
Next
$FuenfTime = TimerDiff($Zeit) / $N
;_ArrayDisplay($str, "BugFix")$Zeit = TimerInit()
[/autoit][autoit][/autoit][autoit][/autoit][autoit]
for $r = 1 To $N
Dim $str6[3] = ['4:32', '10:01', '1:01']
For $i = 0 To UBound($str6) - 1
If $str6[$i] < 10 Then $str6[$i] = '0' & $str6[$i]
Next
Next
$SechsTime = TimerDiff($Zeit) / $N
;_ArrayDisplay($str, "kleiner 10-Methode")$Zeit = TimerInit()
[/autoit][autoit][/autoit][autoit]
for $r = 1 To $N
Dim $str7[3] = ['4:32', '10:01', '1:01']
For $i = 0 To UBound($str7) - 1
$str7[$i] = StringRight('0' & $str7[$i],5)
Next
Next
$SiebenTime = TimerDiff($Zeit) / $N;_ArrayDisplay($str, "Bernd")
[/autoit][autoit][/autoit][autoit]MsgBox(0,"", "RegExp:" &@TAB&@TAB& Round($EinsTime, 3) & ' ms ' &@TAB&@TAB& $str1[0]&" "&$str1[1]&" "&$str1[2]& @CRLF & "StringFormat:" &@TAB& Round($ZweiTime, 3) & ' ms' &@TAB&@TAB&$str2[0]&" "&$str2[1]&" "&$str2[2]& @CRLF & "Leviathan:" &@TAB& Round($DreiTime, 3) & ' ms' &@TAB&@TAB&$str3[0]&" "&$str3[1]&" "&$str3[2]& @CRLF & "StringLen:" &@TAB& Round($VierTime, 3) & ' ms' &@TAB&@TAB&$str4[0]&" "&$str4[1]&" "&$str4[2]&@CRLF & "BugFix:" &@TAB&@TAB& Round($FuenfTime, 3) & ' ms' &@TAB&@TAB&$str5[0]&" "&$str5[1]&" "&$str5[2]& @CRLF & "<10-Methode:" &@TAB& Round($SechsTime, 3) & ' ms' &@TAB&@TAB&$str6[0]&" "&$str6[1]&" "&$str6[2]&@CRLF & "Bernd:" &@TAB&@TAB& Round($SiebenTime, 3) & ' ms'&@TAB&@TAB&$str7[0]&" "&$str7[1]&" "&$str7[2])
[/autoit] -
@ peethebee
hey, super schnelle Antwort.
Ich glaube, ich hab den Wald vor lauter Bäumen nicht gesehen.
Werd das mal ausprobieren.thnx
-
Hallo zusammen,
ich möchte mit Autoit so eine Art Stempeluhr bastel.
Ich bin auch schon recht weit gekommen mit sqlite und so.
Ich schlage mich nur immer noch mit der sehr lästigen Rechnerei der Uhrzeiten herum.
Gibt es nicht irgend eine Funktion, der ich einfach zwei Uhrzeiten übergebe, und die errechnet dann die Differenz? (vielleicht inkl. + und - Zeiten!)
Bin weder auf der amerik. AutoIt Forum-Seite noch im Help-File auf grundlegende Erkenntnisse gestossen.
Daher rechne ich alles in getrennten Stunden und Minuten. Wäre ja alles nicht so dramatisch, wenn es das "-" Zeichen nicht gäbe.
Ich möchte das Ding halt richtig programmieren, und da sind dann so Sachen wie Zeitkonten, Minusstunden, Arbeitszeiten/Tag und so weiter.Vielleicht weiss einer von Euch Rat.
PS: AutoIt Version 3.2.2.0