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. alpines

Beiträge von alpines

  • Auswertung txt

    • alpines
    • 11. Januar 2017 um 23:23

    Die Infos die du suchst müssten doch in $aCurrentData = StringSplit($aRegEx[$i], " ", 3) stehen.
    [0] wäre das Datum, [1] wäre die Uhrzeit und [2] bis [UBound($aCurrentData) - 1] wären die Wörter die nach der Uhrzeit kommen (Wecker, 29).

    Wenn du das Label dahinter abspeichern willst (getrennt fürs Intervall), dann rate ich dir das nicht so zu lösen wie ich das gemacht habe, weil es nur ein Label zulässt.
    Erstell viel lieber ein 2D-Array wo du Datum, Uhrzeit, Label und Häufigkeit speicherst, das iterierst du dann jedes Mal wenn du ein neues überprüfen möchtest.

    Das solltest nicht allzuschwierig sein zudem was ich gebastelt habe.

  • Auswertung txt

    • alpines
    • 11. Januar 2017 um 22:53
    Zitat von nwmbd

    Wie erkläre ich Ihm das er unten die Einträge einfügen soll?

    Was meinst du genau damit? Das z.B. alle "Wecker" in einem Intervall zusammengefasst werden aber "Tisch" z.B. im selben Intervall nicht bei Wecker reinfällt?

  • XML Game Files Parsen und Auswerten

    • alpines
    • 11. Januar 2017 um 22:05

    Auftrag erledigt!

  • Auswertung txt

    • alpines
    • 11. Januar 2017 um 21:55
    Zitat von nwmbd

    Ich wollte nun noch verstehen wie dies funktioniert, nicht mehr und nicht weniger.

    Es ist kein Hexenwerk, er schaut einfach wie oft der Eintrag zu finden ist für das Stundenintervall und fügt das dem Array hinzu.
    Wenn du nicht verstehst was die _Array*-Funktionen machen, dann schau am besten in die Dokumentation.

  • Auswertung txt

    • alpines
    • 11. Januar 2017 um 20:54
    Zitat von nwmbd

    ich wollte auf dem Weg verstehen wie dies funktioniert, wenn etwas noch dahinter stehen würde.

    Das hättest du aber auch von Anfang an schon sagen können!

  • Auswertung txt

    • alpines
    • 11. Januar 2017 um 20:28

    So jetzt aber! Hab auch die Uhrzeit korrigiert (solange hinter der Uhrzeit was auftaucht ist alles in Ordnung, darf aber nicht nichts auftauchen):

    AutoIt
    #include <Array.au3>
    
    
    $sFile = FileRead("datei.txt")
    $aRegEx = StringRegExp($sFile, "(\d+\.\d+\.\d+ \d+:\d+)", 3)
    
    
    Local $aDates[0][25]
    
    
    For $i = 0 To UBound($aRegEx) - 1
    	$aCurrentData = StringSplit($aRegEx[$i], " ", 3)
    	$aCurrentTime = StringSplit($aCurrentData[1], ":", 3)
    
    
    	$bFound = False
    
    
    	For $j = 0 To UBound($aDates) - 1
    		If $aDates[$j][0] = $aCurrentData[0] Then ;Wenn das Datum übereinstimmt
    			$aDates[$j][$aCurrentTime[0] + 1] += 1
    			$bFound = True
    			ExitLoop
    		EndIf
    	Next
    
    
    	If Not $bFound Then
    		ReDim $aDates[UBound($aDates) + 1][25]
    		$aDates[UBound($aDates) - 1][0] = $aCurrentData[0]
    		$aDates[UBound($aDates) - 1][$aCurrentTime[0] + 1] = 1
    	EndIf
    Next
    
    
    _ArraySort($aDates)
    
    
    $sFile = ""
    
    
    For $i = 0 To UBound($aDates) - 1
    	For $j = 1 To 24
    		;Wenn kein Eintrag vorhanden dann auslassen (kannst du auskommentieren)
    		If Not $aDates[$i][$j] Then ContinueLoop
    
    
    		$sFile &= $aDates[$i][0] & " " & ($j < 11 ? "0" : "") & ($j - 1) & ":00 - " & ($j < 11 ? "0" : "") & ($j - 1) & ":59 " & $aDates[$i][$j] & " Eintraege" & @CRLF
    	Next
    Next
    
    
    FileDelete("auswertung.csv")
    FileWrite("auswertung.csv", $sFile)
    Alles anzeigen
  • Funktion mit Parameter in GUICtrlSetOnEvent (und Strings)

    • alpines
    • 11. Januar 2017 um 20:08

    Haken setzen nicht vergessen ;)

  • Auswertung txt

    • alpines
    • 11. Januar 2017 um 20:01
    Zitat von nwmbd

    Nur mal für mich, was muss ich wo verändern wenn ich danach noch mehr Einträge in der Datei habe?!

    Was meinst du mit mehr Einträge?

  • Auswertung txt

    • alpines
    • 11. Januar 2017 um 19:55
    Zitat von nwmbd

    Leider funktioniert es nur bis 09:59, alle Einträge ab 10:00 Uhr werden leider nicht gezählt.

    Das lag daran das ich $i und $j vertauscht hab und weniger als 10 Einträge beim Test hatte. Hier die korrigierte Version.
    @autoiters Variante ist nicht wirklich anders, er nutzt halt die built-in Funktion wohingegen ich den Eliminations"algorithmus" selber implementiere, weil mir die Funktion nicht mehr einfiel.

    AutoIt
    #include <Array.au3>
    
    
    $sFile = FileRead("datei.txt")
    $aRegEx = StringRegExp($sFile, "(\d+\.\d+\.\d+ \d+:\d+)", 3)
    
    
    Local $aDates[0][25]
    
    
    For $i = 0 To UBound($aRegEx) - 1
    	$aCurrentData = StringSplit($aRegEx[$i], " ", 3)
    	$aCurrentTime = StringSplit($aCurrentData[1], ":", 3)
    
    
    	$bFound = False
    
    
    	For $j = 0 To UBound($aDates) - 1
    		If $aDates[$j][0] = $aCurrentData[0] Then ;Wenn das Datum übereinstimmt
    			$aDates[$j][$aCurrentTime[0] + 1] += 1
    			$bFound = True
    			ExitLoop
    		EndIf
    	Next
    
    
    	If Not $bFound Then
    		ReDim $aDates[UBound($aDates) + 1][25]
    		$aDates[UBound($aDates) - 1][0] = $aCurrentData[0]
    		$aDates[UBound($aDates) - 1][$aCurrentTime[0] + 1] = 1
    	EndIf
    Next
    
    
    _ArraySort($aDates)
    
    
    $sFile = ""
    
    
    For $i = 0 To UBound($aDates) - 1
    	For $j = 1 To 24
    		;Wenn kein Eintrag vorhanden dann auslassen (kannst du auskommentieren)
    		If Not $aDates[$i][$j] Then ContinueLoop
    
    
    		$sFile &= $aDates[$i][0] & " " & ($j < 10 ? "0" : "") & $j & ":00 - " & ($j < 10 ? "0" : "") & $j & ":59 " & $aDates[$i][$j] & " Eintraege" & @CRLF
    	Next
    Next
    
    
    FileDelete("auswertung.csv")
    FileWrite("auswertung.csv", $sFile)
    Alles anzeigen
  • Funktion mit Parameter in GUICtrlSetOnEvent (und Strings)

    • alpines
    • 11. Januar 2017 um 19:39
    Zitat von Jefta

    In der Hilfe von AutoIt steht dass man die Funktion in Strings packen muss.

    Du kannst die Funktions als "Pointer" übergeben wenn du nur den Funktionsnamen übergibst ohne die ().
    Das klappt mit den String-Literalen oder auch ohne.

    Zitat von Jefta

    Ich habe eine Funktion mit zwei Parametern. Ich möchte aber die Parameterangabe bei dem GUICtrlSetOnEvent einbauen

    Da hast du was falsch verstanden, die Event-Funktion wird getriggered wenn du auf den Button klickst und mehr soll sie auch nicht machen.
    In der Funktion selber kannst du den Klick auswerten und andere Funktionen mit den gewünschten Parametern callen.

    Mit bestimmten Makros @GUI_CtrId z.B. findest du das letztgeklickte Control heraus.

  • Tastenkombination WIN SHIFT RIGHT per script starten

    • alpines
    • 11. Januar 2017 um 17:10

    Nein, bin kein Bayer. Wohne in der Nähe von Hannover in Niedersachsen!
    Das schaut aber ziemlich schick aus, hast du das auch fürs Telefon oder nur für PC?

  • Tastenkombination WIN SHIFT RIGHT per script starten

    • alpines
    • 11. Januar 2017 um 16:49

    Joa gut :D So kann man es auch machen.

    Ich hab mal den grünen Haken für [gelöst] gesetzt damit andere User direkt die Lösung finden (1. Beitrag bearbeiten, Threadpräfix).

  • Auswertung txt

    • alpines
    • 11. Januar 2017 um 16:43

    Hier mal das ganze wie ich das gelöst hätte.

    AutoIt
    #include <Array.au3>
    
    
    $sFile = FileRead("datei.txt")
    $aRegEx = StringRegExp($sFile, "(\d+\.\d+\.\d+ \d+:\d+)", 3)
    
    
    Local $aDates[0][25]
    
    
    For $i = 0 To UBound($aRegEx) - 1
    	$aCurrentData = StringSplit($aRegEx[$i], " ", 3)
    	$aCurrentTime = StringSplit($aCurrentData[1], ":", 3)
    
    
    	$bFound = False
    
    
    	For $j = 0 To UBound($aDates) - 1
    		If $aDates[$j][0] = $aCurrentData[0] Then ;Wenn das Datum übereinstimmt
    			$aDates[$j][$aCurrentTime[0] + 1] += 1
    			$bFound = True
    			ExitLoop
    		EndIf
    	Next
    
    
    	If Not $bFound Then
    		ReDim $aDates[UBound($aDates) + 1][25]
    		$aDates[UBound($aDates) - 1][0] = $aCurrentData[0]
    		$aDates[UBound($aDates) - 1][$aCurrentTime[0] + 1] = 1
    	EndIf
    Next
    
    
    _ArraySort($aDates)
    
    
    $sFile = ""
    
    
    For $i = 0 To UBound($aDates) - 1
    	For $j = 1 To 24
    		;Wenn kein Eintrag vorhanden dann auslassen (kannst du auskommentieren)
    		If Not $aDates[$i][$j] Then ContinueLoop
    
    
    		$sFile &= $aDates[$i][0] & " " & ($i < 10 ? "0" : "") & $i & ":00 - " & ($i < 10 ? "0" : "") & $i & ":59 " & $aDates[$i][$j] & " Eintraege" & @CRLF
    	Next
    Next
    
    
    FileDelete("auswertung.csv")
    FileWrite("auswertung.csv", $sFile)
    Alles anzeigen


    datei.txt

    Code
    02.01.2017 00:02
    02.01.2017 00:49
    02.01.2017 00:59
    02.01.2017 02:45
    02.01.2017 02:33
    01.01.2017 00:02
    01.01.2017 00:49
    01.01.2017 00:59
    01.01.2017 02:45
    01.01.2017 02:33
  • Tastenkombination WIN SHIFT RIGHT per script starten

    • alpines
    • 11. Januar 2017 um 16:25

    Das liegt daran das ShellExecute das Working-Directory verändert. Schau dir mal in der Dokumentation die Funktion ShellExecute an und pass den Parameter fürs Working-Directory an.
    Da sollte der Pfad der Anwendung ohne Dateinahmen hin.

  • Umlaut Probleme mit _FFGetValue

    • alpines
    • 11. Januar 2017 um 00:24

    Schön das es klappt, ich hab deinen Thread auf [gelöst] gesetzt damit andere Nutzer sofort die Lösung finden (1. Beitrag bearbeiten).

  • Umlaut Probleme mit _FFGetValue

    • alpines
    • 11. Januar 2017 um 00:20

    Sind doch nicht viele Umlaute, probier alle aus und StringReplace sie in einer Funktion wenn die FF.au3 keinen anderen Zeichensatz anbietet.

  • Tastenkombination WIN SHIFT RIGHT per script starten

    • alpines
    • 11. Januar 2017 um 00:15

    Ganz platt kannst du das so machen:

    AutoIt
    ShellExecute("C:\Program Files (x86)\iSmartViewPro\iSmartViewPro.exe")
    
    
    Do
    	Sleep(250)
    Until WinExists("Fenstertitel hier einfügen")
    
    
    WinActivate("Fenstertitel hier einfügen")
    Send("{LWIN down}{LSHIFT down}{RIGHT down}")
    Sleep(100)
    Send("{LWIN up}{LSHIFT up}{RIGHT up}")
    Alles anzeigen


    Es ist aber 1000x besser wenn du statt den Sends lieber WinMove verwendest. Versuch mal ein paar Koordinaten bis es passt und dann hast du es viel zuverlässiger als mit Send.
    Deine Koordinaten können je nach Bildschirmanordnung abweichen!

    AutoIt
    ShellExecute("C:\Program Files (x86)\iSmartViewPro\iSmartViewPro.exe")
    
    
    Do
    	Sleep(250)
    Until WinExists("Fenstertitel hier einfügen")
    
    
    WinMove("Fenstertitel hier einfügen", "", -1920, 0)
  • XML Game Files Parsen und Auswerten

    • alpines
    • 10. Januar 2017 um 18:44

    Kannst mir gerne mal eine vollständige Beispiel-XML senden (per PN) wo du mir zeigst welche Sachen genau er rausparsen soll, dann kann ich dir dafür eventuell schnell was zusammenschreiben.

  • Problem mit _Excel_BookOpen und WinAPI

    • alpines
    • 10. Januar 2017 um 12:30

    Schön das es funktioniert, ich habe mal den grünen Haken für [gelöst] gesetzt. (1. Beitrag bearbeiten!)

  • .

    • alpines
    • 9. Januar 2017 um 15:20

    Ohne Zugriff auf die Seite können wir dir leider nicht weiterhelfen, ich kann auch nur raten woran es liegt.

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™