TimeDiff soll Dauer ausgeben

  • Hallo zusammen,

    dies ist meine TimeDiff-Funktion:

    [autoit]


    Do
    Local $hTimer = TimerInit()
    sleep(1000)
    $logastart=PixelSearch(245, 700, 266, 715, 0xDCEEFF)
    Until @error = 0
    Local $fDiff = Round(TimerDiff($hTimer)/100, 2)
    MsgBox($MB_SYSTEMMODAL, "Time Difference", $fDiff & " s")
    EndFunc

    [/autoit]

    Sie läuft nach einer Eingabemaske, die durch ein Button abgefeuert wird. Da danach Datenbankzugriffe erfolgen, dauert der Aufbau der nachfolgenden Seite einige Zeit. Aus dem Grund soll mein TimeDiff nach abfeuern des Buttons starten und so lang laufen bis der angegebene Pixel gefunden wurde. Die verstrichene Zeit soll er mir dann in der MsgBox ausgeben.

    Läuft auch tadellos aber da er mir fast immer die selbe Zeit anzeigt obwohl er manchmal länger braucht, glaube ich, das der Code Fehler hat.

  • Versuch es mal so:

    AutoIt
    Func Funktionsname()
    	Local $hTimer = TimerInit()
    	Do
    		sleep(1000)
    		$logastart=PixelSearch(245, 700, 266, 715, 0xDCEEFF)
    	Until @error = 0
    	Local $fDiff = Round(TimerDiff($hTimer)/1000, 2)
    	MsgBox($MB_SYSTEMMODAL, "Time Difference", $fDiff & " s")
    EndFunc

    Ich habe die TimerInit() Funktion aus der Do-Untilschleife raus genommen, solange er in der Schleife war hat er immer nur die Zeit angezeigt die für die Erfolgreiche suche gebraucht wurde plus eine Sekunde duch die Sleep() Funktion.

    Zudem habe ich in der Zeile 7 (in deinem Code oben 6) die 100 durch eine 1000 ersetzt, da Timerdiff den Wert in tausendstel Sekunden ausgibt.

    Edit: Zu langsam

  • Kann ich mir die Zeit, die ich mir momentan in der MsgBox ausgeben lasse auch als Variable speichern, sodass ich diese später in einer txt-datei ausgeben lassen kann?

    Im nächsten Schritt möchte ich nämlich die MsgBox ersetzen.

  • [autoit]

    FileWrite(@TempDir & "\time.txt", "Time Difference : " & $fDiff & " s")

    [/autoit]

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Meintest du sowas?

    Hier nütze ich eine Globale Variable zum Speichern der Zeit.

  • Super! Genau sowas meinte ich. Allerdings habe ich drei Funktionen mit verschiedenen MgsBoxen. Demnach benötige ich nur zwei weitere globale Variablen, oder?

  • Ja das wäre eine Möglichkeit.

    Man könnte jedoch auch ein Array benützen, je nach Anwendungsfall.
    https://www.autoitscript.com/autoit3/docs/i…g_variables.htm

    Ist aber, wenn du damit noch nicht gearbeitet hast, etwas umständlich am Anfang.
    Lohnt sich aber meistens, wenn man mehrere ähnliche Variablen hat.

    Edit: Hier nochmal ein Link zu einem Array Tutorial von Bugfix, welches ich grade im Forum gefunden habe:
    http://www.bug-fix.info/array_tut.htm

  • Die Funktion entspricht doch einem FrontEnd-Test, oder?
    Idealerweise hätte ich auch gerne noch einen BackEnd-Test. Ist das realisierbar mit AutoIT?

    EDIT: Die Funktion ergibt die Summe aus Front- und Backend! -> Entschuldigt die Frage...

    Einmal editiert, zuletzt von Mojo (5. Mai 2015 um 15:58)