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

  • Interaktiver Bildschirm kranke Mutter Demenz

    • alpines
    • 13. Januar 2017 um 17:23

    Das ist sicherlich machbar und auch eine gute Idee.

    Wie das bei Google Kalender läuft weiß ich allerdings nicht, wenn sie keine API anbieten ist das schon etwas schwieriger die Termine auszulesen.
    Tatsächlich bietet Google Calendar eine API: https://developers.google.com/google-apps/calendar/create-events
    E-Mail / SMS schicken ist absolut kein Problem. Da kannst du _InetSmtpMailCom verwenden um eine E-Mail zu schicken, und wenn dein Netzanbieter ein SMS-E-Mail-Gateway bietet, eine SMS per E-Mail verschicken.

  • PHP Öffnen

    • alpines
    • 13. Januar 2017 um 17:16
    Zitat von Bitnugger

    Wenn du die Seite mit AutoIt öffnen willst, ginge das z. B. so:

    Dafür brauchst du dennoch einen Webserver mit einem PHP-Interpreter.

  • Excel-oder Worddatei mit Shellexecute öffnen und neuen Speicherpfad übergeben

    • alpines
    • 13. Januar 2017 um 16:01

    Vielleicht willst du dafür die Excel UDF verwenden, damit kannst du auch in anderen Pfaden abspeichern ohne überhaupt Excel visuell zu öffnen.
    Wenn du allerdings das mit ShellExecute machen willst, dann kannst du in Excel F12 drücken (öffnet den Save As Dialog) und einen anderen Pfad eintragen und anschließend speichern.
    Solltest du das mit dem Pfad eintragen nicht kriegen kannst du es auch so lösen:
    Du backupst die Originaldatei, änderst die Datei, speicherst sie ab. FileMovest sie mit AutoIt zum neuen Pfad und den Backup benennst du wieder in die Originaldatei um.

    Aber die Variante mit der Excel UDF ist um einiges besser.

  • au3-Script kompilieren

    • alpines
    • 13. Januar 2017 um 15:52
    Zitat von chip

    Poste den Code einfach hier, dann kann dir das sicher jemand schnell machen und hochladen.

    Absolut nicht notwendig. Hier gibts nen Online-Compiler: https://www.script-example.com/themen/AutoIT-Online-Compiler.php

  • PHP Öffnen

    • alpines
    • 13. Januar 2017 um 15:17

    Ich bezweifle sehr stark das es eine PHP-Interpreter UDF gibt da PHP nicht für clientseitige Aufgaben geeignet ist.
    PHP wird genutzt um Webseiten dynamisch zu machen und Daten auf dem Webserver anzusprechen und nicht um Aufgaben zu automatisieren wie z.B. in AutoIt.

    Ohne Server wirst du die PHP nicht zum laufen bekommen wenn du keinen PHP-Interpreter hast. Du kannst versuchen den Code in AutoIt neuzuschreiben wenn er nicht allzu lang ist.

  • PHP Öffnen

    • alpines
    • 13. Januar 2017 um 14:31

    Vielleicht willst du uns ein paar Informationen mehr geben? Was willst du mit der Seite machen? Editieren? Ausführen?

    Wenn du es editieren willst dann kannst du SciTE oder Notepad++ verwenden.
    Wenn du sie ausführen willst, brauchst du einen Webserver z.B. XAMPP um PHP auszuführen, oder du lädst ihn auf einen free Webspace mit php Unterstützung hoch.

  • Window ID auslesen und überprüfen wenn beendet

    • alpines
    • 13. Januar 2017 um 12:14

    Schreib dir einfach eine Funktion die als Parameter die Datei annimmt.

    In der Funktion selber klickst du dich durch die Importier / Speicher Menus durch und beendest die Funktion erst wenn du damit auch fertig bist, so sparst du dir im Hauptcode ein paar Zeilen und es sieht schöner aus. Z.B. _ImportExcelFile($sDatei) oder _SaveExcelFile($sPath).
    Mit AutoIt Window Info (wie du sicherlich schon selber gemerkt hast) kannst du die Controls suchen und klicken. Die jeweiligen ControlClick / ControlSend / ControlCommand-Funktionen helfen dir zu schauen ob die Controls überhaupt exisitieren und kannst sie anschließent mit ControlClick klicken.

    Du solltest aber aufpassen mit ControlCommand wenn du bei Listen Einträge auswählst, es kann sein das der zwar einen anderen Eintrag auswählt aber das Programm immer noch den alten abruft, weil er die ListBox nicht aktualisiert hat, da musst du ggf. mit der Maus die ListBox doppelklicken damit das aktualisiert wird.

    Wenn dein Problem gelöst ist, dann setz doch bitte den grünen Haken für [gelöst] in dem du dem 1. Thread bearbeitest, solltest du weitere Fragen haben kannst du sie hier im Thread stellen oder einen neuen aufmachen!

  • Custom GUI, Image Buttons, Overlapping

    • alpines
    • 13. Januar 2017 um 12:00
    Zitat von Stoani

    Brauch ich die "GUICtrlOnHover.au3" als Include?

    Alles was keine Miete zahlt oder einen Zweck erfüllt: raus!

    Freut mich das wir dir helfen konnten, wenn du - zumindest zu dem Thema - keine Fragen mehr hast kannst du ja den grünen Haken für [gelöst] setzen (1. Beitrag bearbeiten).
    Nichtsdestotrotz würde es uns freuen wenn du uns über dein Projekt am Laufen hältst und hier weiter postest.

  • Kollegen zum Geburtstag gratulieren

    • alpines
    • 13. Januar 2017 um 11:48

    @Kanashius fast richtig. _IEFormElementGetObjByName returnt aber keine Collection an Objekten sondern nur ein Objekt. Das sieht man schon daran, das man den Index spezifizieren kann.

    @Kloppstock nimm _IEGetObjByName($oIE, "op", $iIndex) und versuch für $iIndex mal ein paar Werte einzusetzen, fang mit 1 an und klick drauf.
    Wenn es nicht passt nimm eine 2 und probiers nochmal, bis du den gewünschten Index hast.

    Alternativ kannst du auch die TagNameCollection holen und die iterieren und schauen ob der innerHTML = "Speichern und veröffentlichen" ist.

  • if FileExist("http........ Ist Autoit in der lage?

    • alpines
    • 13. Januar 2017 um 01:15

    STRG+T in SciTE drücken und schwups hast du den Script getidyed. Er erstellt sogar vor dem tidyen einen Backup-Ordner damit nichts verloren geht.
    Schön das du übrigens den grünen Haken gesetzt hast, weiter so!

  • if FileExist("http........ Ist Autoit in der lage?

    • alpines
    • 12. Januar 2017 um 23:49

    Der Gebrauch, ob es Privat oder bei anderen ist, spielt hier leider keine Rolle. Da hilft es auch nicht wenn man sein Wort gibt. Keylogger werden nicht unterstützt - Ende.
    Ich helfe in diesem Thread auch nur weiter weil es hauptsächlich nicht darum geht - ginge es darum, hätte ich den schon längst deaktiviert.

    Ich kann dir nur Tipps zu dem Code geben den du uns zeigst, wenn du mir nur das zeigst dann ist der Sleep für die While-Schleife einfach viel zu klein.
    Übrigens sleept AutoIt nicht weniger als 10ms. Wenn du also irgendeinen Wert unter 10 angibst wird er min. 10 sleepen.

    Wenn du von anderen Usern schnell Hilfe möchtest dann kann es nicht schaden den Code einmal durch Tidy zu schicken oder selber nochmal sorgfältig zu formatieren.
    Man findet sich schneller zurecht und erkennt Fehler viel früher.

  • if FileExist("http........ Ist Autoit in der lage?

    • alpines
    • 12. Januar 2017 um 23:19
    Zitat von Candyland

    _Inetgetsource benutze ich um herauszufinden ob die verbindung zu dem server vorhanden ist oder nicht. so kann ich den Code halt kürzen in dem mancher code erst garnicht ausgeführt wird.

    Na dafür gibts doch Ping.

    Zitat von Candyland

    Ich habe mich an einem Keylogger in autoit versucht

    Ich will doch schwer hoffen das der jetzige Thread nicht dafür gedacht ist. Denn wie du es den Forenregeln entnehmen kannst, kriegst du dafür hier keinen Support!
    Es gibt bessere Mittel und Wege auf legalen Wegen sich gutes Wissen anzueignen.
    Wenn du es für dich selber zum Üben machen willst ist das kein Problem, aber wie eben gesagt: durch die Forenregeln wirst du keinen Support bekommen.

    Zitat von Candyland

    das hat mir zwar nicht wirklich geholfen

    Das hört man doch gerne.

    Zitat von Candyland

    war garnicht mal so schwer. also meine Lösung ist diese

    Da muss ich aber an einigen Ecken und Kanten rummeckern.

    Wenn du in AutoIt Werte miteinander vergleichen willst solltest du darauf achten das sie den selben Typ haben.
    AutoIt ist da relativ kulant und versteht wenn man eine 5 mit einem "5"-String vergleichen will aber in größeren Projekten verlierst du da sehr schnell die Übersicht und indexierst vielleicht ein Array falsch?

    Du weißt am Anfang den String "0" der Zählervariable zu, obwohl du die Variable später inkrementieren möchtest, also speicher lieber eine 0 rein.

    Bitte bitte formatier deinen Code besser! Deine Einrückungen sind schrecklich, du schreibst einige If-Abfragen mit einem kleinen if, du deklarierst mal globale und lokale Variablen obwohl du im selben Scope bist und scheinbar keinen weiteren Code hast und benenne deine Variablen besser. $icount sollte $iCount sein. $text sollte lieber $bText und = True statt = "1" sein.

    Ich würde dir dennoch raten nicht alle 30ms nach dem Server zu checken, weil das CPU und Netzwerk intensiv ist. Reicht es denn nicht jede Minute oder alle 15 Sekunden danach zu schauen?

  • Custom GUI, Image Buttons, Overlapping

    • alpines
    • 12. Januar 2017 um 21:33

    Ich glaubs nicht, endlich hab ich es gefunden obwohl ich die Hoffnung schon fast aufgegeben hatte. Nimm mal die transparente PNG und trag sie bei $sBilddatei ein und probiers mal aus, das setzt die Region direkt um das Bild herum und mit dem SetParent-Beispiel von vorhin kannst du so deine Buttons erstellen! :)

    AutoIt
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <GDIPlus.au3>
    #include <WinAPI.au3>
    
    
    Global Const $SC_DRAGMOVE = 0xF012
    Global $sBilddatei = @ScriptDir & "\1.png"
    
    
    ; Transparentes GUI erzeugen
    $hGUI = _GUICreate_Transparent($sBilddatei)
    
    
    GUISetState(@SW_SHOW, $hGUI)
    
    
    ; Wenn man das GUI bewegen will
    GUIRegisterMsg($WM_LBUTTONDOWN, "_WM_LBUTTONDOWN")
    
    
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    Exit
    
    
    Func _WM_LBUTTONDOWN($hWnd, $iMsg, $wParam, $lParam)
    	_SendMessage($hGUI, $WM_SYSCOMMAND, $SC_DRAGMOVE, 0)
    EndFunc   ;==>_WM_LBUTTONDOWN
    
    
    ; #INDEX# =======================================================================================================================
    ; Title .........: GUICreateTransparent
    ; AutoIt Version : 3.3.6.1
    ; Description ...: Transparente BildGUIs erstellen.
    ; Author(s) .....: UEZ und ein bisschen Großvater (www.autoit.de)
    ; Dll ...........:
    ; ===============================================================================================================================
    
    
    ; #CURRENT# =====================================================================================================================
    ; _GUICreate_Transparent
    ; ===============================================================================================================================
    
    
    
    
    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _GUICreate_Transparent
    ; Description ...: Transparente Popup-GUIs aus Bildern (z.B. PNG) erstellen
    ; Syntax.........: _GUICreate_Transparent($sImage, $iLeft = -1, $iTop = -1, $iOpacity = 255)
    ; Parameters ....: $sImage   - Pfad zur Bilddatei
    ;                  $iLeft    - Bidschirmposition der linken Seite des GUI in Pixeln
    ;                  |Default  - -1 (zentriert)
    ;                  $iTop     - Bidschirmposition der oberen Seite des GUI in Pixeln
    ;                  |Default  - -1 (zentriert)
    ;                  $iOpacity - Transparenz für das gesamte GUI (siehe WinSetTrans())
    ;                  |Default  - 255 (nicht transparent)
    ; Return values .: Im Erfolgsfall: HWND des GUI aus GUICreate()
    ;                  Im Fehlerfall: False, @error wird gesetzt:
    ;                  |1 = GDIPlus konnte nicht gestartet werden
    ;                  |2 = Die Bilddatei konnte nicht geladen werden
    ; Author ........: UEZ (www.autoit.de/index.php?page=Thread&postID=199839#post199839)
    ; Modified.......: Großvater (www.autoit.de)
    ; Remarks .......: Das GUI wird immer in der Originalgröße des Bildes mit dem Style $WS_POPUP und dem
    ;                  Exstyle $WS_EX_LAYERED erstellt. Der Exstyle $WS_EX_LAYERED verträgt sich offenbar
    ;                  nicht mit normalen Child-GUIs. Controls müssen deshalb in (einer) eigenen GUI(s)
    ;                  mit den Exstyles $WS_EX_MDICHILD und $WS_EX_LAYERED und der HWND des Bild-GUI
    ;                  als Parent erstellt werden. Dafür liefert UEZ im o.a. Thread ein Beispiel.
    ; Related .......:
    ; Link ..........:
    ; Example .......:
    ; ===============================================================================================================================
    Func _GUICreate_Transparent($sImage, $iLeft = -1, $iTop = -1, $iOpacity = 255)
    	; GDIPlus starten
    	If Not _GDIPlus_Startup() Then Return SetError(1, 0, 0)
    	; Bild laden
    	Local $hImage = _GDIPlus_ImageLoadFromFile($sImage)
    	If @error Then
    		_GDIPlus_Shutdown()
    		Return SetError(2, 0, 0)
    	EndIf
    	Local $iWidth = _GDIPlus_ImageGetWidth($hImage)
    	Local $iHeight = _GDIPlus_ImageGetHeight($hImage)
    	; GUI erstellen
    	Local $hGUI = GUICreate("", $iWidth, $iHeight, $iLeft, $iTop, $WS_POPUP, $WS_EX_LAYERED)
    	Local $hDCDst = _WinAPI_GetDC($hGUI)
    	Local $hDCSrc = _WinAPI_CreateCompatibleDC($hDCDst)
    	Local $hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
    	_WinAPI_SelectObject($hDCSrc, $hBitmap)
    	Local $tSize = DllStructCreate($tagSIZE)
    	Local $pSize = DllStructGetPtr($tSize)
    	DllStructSetData($tSize, "X", $iWidth)
    	DllStructSetData($tSize, "Y", $iHeight)
    	Local $tSource = DllStructCreate($tagPOINT)
    	Local $pSource = DllStructGetPtr($tSource)
    	Local $tBlend = DllStructCreate($tagBLENDFUNCTION)
    	Local $pBlend = DllStructGetPtr($tBlend)
    	DllStructSetData($tBlend, "Alpha", $iOpacity)
    	DllStructSetData($tBlend, "Format", 1)
    	_WinAPI_UpdateLayeredWindow($hGUI, $hDCDst, 0, $pSize, $hDCSrc, $pSource, 0, $pBlend, $ULW_ALPHA)
    	; Ressourcen freigeben
    	_GDIPlus_ImageDispose($hImage)
    	_WinAPI_DeleteObject($hBitmap)
    	_WinAPI_DeleteDC($hDCSrc)
    	_WinAPI_ReleaseDC($hGUI, $hDCDst)
    	_GDIPlus_Shutdown()
    	; HWND des GUI zurückgeben
    	Return $hGUI
    EndFunc   ;==>_GUICreate_Transparent
    Alles anzeigen
  • Custom GUI, Image Buttons, Overlapping

    • alpines
    • 12. Januar 2017 um 20:41

    Gefunden! Zwar nicht ganz das was ich meinte (hier mit Polygonen statt Bildern aber ist sicherlich analog).
    Du kannst die Blätter hin- und herschieben und durch sie durchklicken wenn sie an der Stelle nicht rot sind.

    Ich hab gerade eine dreiviertel Stunde versucht das ganze schon für PNGs zu finden (ich weiß das es das gibt, gabs hier auch schon mal im Forum!!) aber ich finde leider nichts.

    AutoIt
    #Include <GUIConstantsEx.au3>
    #Include <WinAPI.au3>
    #Include <WindowsConstants.au3>
    
    
    Global $aPoint[25][2] = [[196, 31], [220, 92], [258, 77], [248, 158], [295, 125], [307, 157], [357, 149], [326, 206], [357, 214], [271, 273], [282, 296], [202, 282], [200, 361], [188, 360], [188, 280], [109, 295], [122, 276], [34, 214], [62, 204], [37, 152], [84, 156], [97, 122], [143, 156], [132, 75], [170, 89]]
    $hForm = GUICreate('MyGUI', 500, 475, -1, -1)
    GUIRegisterMsg($WM_NCHITTEST, 'WM_NCHITTEST')
    GUISetBkColor(0xAA0000)
    
    
    $hRgn = _WinAPI_CreatePolygonRgn($aPoint)
    _WinAPI_SetWindowRgn($hForm, $hRgn)
    
    
    GUISetState(@SW_SHOW, $hForm)
    
    
    $hForm2 = GUICreate('MyGUI', 500, 475, -1, -1)
    GUIRegisterMsg($WM_NCHITTEST, 'WM_NCHITTEST')
    GUISetBkColor(0xAA0000)
    
    
    $hRgn = _WinAPI_CreatePolygonRgn($aPoint)
    _WinAPI_SetWindowRgn($hForm2, $hRgn)
    
    
    GUISetState(@SW_SHOW, $hForm2)
    
    
    $hGUI = GUICreate("", 1000, 800)
    
    
    GUISetState(@SW_SHOW, $hGUI)
    
    
    _WinAPI_SetParent($hForm, $hGUI)
    _WinAPI_SetParent($hForm2, $hGUI)
    
    
    While Sleep(100)
    WEnd
    
    
    Func _WinAPI_CreatePolygonRgn($aPoint, $iStart = 0, $iEnd = -1, $iMode = 1)
    
    
        If UBound($aPoint, 2) < 2  Then
            Return SetError(1, 0, 0)
        EndIf
    
    
        Local $Count, $tData, $Struct = ''
    
    
        If ($iEnd < 0) Or ($iEnd > UBound($aPoint) - 1) Then
            $iEnd = UBound($aPoint) - 1
        EndIf
        For $i = $iStart To $iEnd
            $Struct &= 'int[2];'
        Next
        $tData = DllStructCreate(StringTrimRight($Struct, 1))
        If @error Then
            Return SetError(1, 0, 0)
        EndIf
        $Count = 1
        For $i = $iStart To $iEnd
            For $j = 0 To 1
                DllStructSetData($tData, $Count, $aPoint[$i][$j], $j + 1)
            Next
            $Count += 1
        Next
    
    
        Local $Ret = DllCall('gdi32.dll', 'ptr', 'CreatePolygonRgn', 'ptr', DllStructGetPtr($tData), 'int', $Count - 1, 'int', $iMode)
    
    
        If (@error) Or ($Ret[0] = 0) Then
            Return SetError(1, 0, 0)
        EndIf
        Return $Ret[0]
    EndFunc   ;==>_WinAPI_CreatePolygonRgn
    
    
    Func WM_NCHITTEST($hWnd, $Msg, $wParam, $lParam)
        If _WinAPI_DefWindowProc($hWnd, $Msg, $wParam, $lParam) = $HTCLIENT Then
            Return $HTCAPTION
        EndIf
        Return $GUI_RUNDEFMSG
    EndFunc   ;==>WM_NCHITTEST
    Alles anzeigen
  • Custom GUI, Image Buttons, Overlapping

    • alpines
    • 12. Januar 2017 um 20:35

    Ich weiß jetzt nicht ob dir das was sagt (und ich finds auf die schnelle nicht) aber man kann GUIs erstellen wo ein Bild das Fenster bildet.
    Das Fenster kann man verschieben wenn man auf das Bild klickt und es wird auch nur verschoben wenn man auf eine farbige Stelle klickt, bei transparenten Stellen klickt man stattdessen durch die GUI durch.

    Warum nicht 4 Fenster davon erstellen und mit WinApi SetParent versuchen die in die GUI einzubinden?

  • Custom GUI, Image Buttons, Overlapping

    • alpines
    • 12. Januar 2017 um 20:04

    Wenn du die Buttons über die anderen legen willst ja, ich dachte eher an sowas (ist im Prinzip eigentlich das gleiche).
    Deine Variante geht halt nicht allzukrass über die Ecken hinaus, aber wie gesagt: ist im Prinzip das gleiche.
    [Blockierte Grafik: http://i.imgur.com/MrUCzt0.png]

    //EDIT: Du solltest aber beachten das bei deiner Variante die Buttons eventuell in den Hintergrund rutschen, weil der davorgelegte Button fokussiert wird!

  • Custom GUI, Image Buttons, Overlapping

    • alpines
    • 12. Januar 2017 um 18:40

    Kannst du die Buttons nicht rechteckig lassen?
    An den Ecken wo sich die Buttons treffen kannst du ja einen kleinen Button draus machen und beim Klick darauf prüfen wo auf dem Button geklickt wurde. (Statt 4 machst du 4+4)
    Du rechnest aus ob er oberhalb oder unterhalb des Striches geklickt hat und demnach führst du die Funktion des Buttons aus.

  • if FileExist("http........ Ist Autoit in der lage?

    • alpines
    • 12. Januar 2017 um 17:47

    Alles Gute zum Geburtstag :part:

    Du kannst doch nicht nur 2ms sleepen und immer die Seite neu pollen, das belastet doch die CPU extrem!
    Ich hab das ganze mal verschönert und ein paar Verbesserungen hinzugefügt. Wofür der Timer genau ist, weiß ich allerdings nicht.
    Ich weiß auch nicht warum du das ganze mit _InetGetSource machst, weil du doch direkt die Datei laden kannst?

    Außerdem startet er das Script jedes Mal neu wenn er die Datei laden kann, also musst du serverseitig die Datei nach dem Download löschen oder verändern bzw. kennzeichnen.

    AutoIt
    #include <INet.au3>
    
    
    FileDelete(@ScriptDir & "\1.txt") ;Downloaddatei löschen, sonst startet das Script immer und immer wieder
    Global $7zurl = "http://127.0.0.1"
    
    
    While Sleep(30 * 6000) ;Alle 30 Sekunden
    	$tmr =	TimerInit()
    
    
    	If _INetGetSource($7zurl) <> "" Then
    		InetGet($7zurl & "/strings/lappen/1.txt", @ScriptDir & "\1.txt", 1) ;1 = FORCE_RELOAD
    	EndIf
    
    
    	If FileExists(@ScriptDir & "\1.txt") Then
    		ShellExecute(@ScriptFullPath)
    		Exit
    	EndIf
    
    
    	$fTimeEnd = Round(TimerDiff($tmr) / 1000, 3)
    	;MsgBox(0, 'Finished ', 'Time: ' & $TimeEnd & ' seconds and Internet Connection is ' & $internet)
    WEnd
    Alles anzeigen
  • Autoit Random Funktion?

    • alpines
    • 12. Januar 2017 um 09:36

    @Sonderbaar den wahren Grund wird uns der TE nicht verraten aber für unterschiedliche Wahrscheinlichkeiten Websiten zu öffnen macht eh keinen Sinn.
    Die Random-Funktion mit unterschiedlichen Wahrscheinlichkeiten hingegen kann man für viele andere Sachen verwenden.

    Beispielsweise Dropchancen in Spielen. Wenn du zwischen 0-2 liegst kriegst du ein wertvolles Item, 3-15 gutes, 16-40 okay und 41-100 Schrott.

  • Auswertung txt

    • alpines
    • 11. Januar 2017 um 23:38

    So in etwa habe ich das gemeint:

    AutoIt
    #include <Array.au3>
    
    
    $sFile = FileRead("datei.txt")
    $aRegEx = StringRegExp($sFile, "(\d+\.\d+\.\d+ \d+:\d+ (?:.+?)+)", 3)
    
    
    Local $aDates[0][4]
    
    
    For $i = 0 To UBound($aRegEx) - 1
    	$aCurrentData = StringSplit($aRegEx[$i], " ", 3)
    	$aCurrentTime = StringSplit($aCurrentData[1], ":", 3)
    	$sLabel = _ArrayMerge($aCurrentData, " ", 2, -1)
    
    
    	$bFound = False
    
    
    	For $j = 0 To UBound($aDates) - 1
    		If $aDates[$j][0] = $aCurrentData[0] and $aDates[$j][1] = $aCurrentTime[0] and $aDates[$j][2] = $sLabel Then
    			$aDates[$j][3] += 1
    			$bFound = True
    			ExitLoop
    		EndIf
    	Next
    
    
    	If Not $bFound Then
    		ReDim $aDates[UBound($aDates) + 1][4]
    		$aDates[UBound($aDates) - 1][0] = $aCurrentData[0]
    		$aDates[UBound($aDates) - 1][1] = $aCurrentTime[0]
    		$aDates[UBound($aDates) - 1][2] = $sLabel
    		$aDates[UBound($aDates) - 1][3] = 1
    	EndIf
    Next
    
    
    _ArraySort($aDates)
    
    
    $sFile = ""
    
    
    For $i = 0 To UBound($aDates) - 1
    	$sFile &= $aDates[$i][0] & " " & $aDates[$i][1] & " --- " & $aDates[$i][3] & "x " & $aDates[$i][2] & @CRLF
    Next
    
    
    FileDelete("auswertung.csv")
    FileWrite("auswertung.csv", $sFile)
    
    
    Func _ArrayMerge($aArray, $sDelimeter = " ", $iStart = 0, $iEnd = -1)
    	If $iEnd = -1 Then $iEnd = UBound($aArray) - 1
    
    
    	Local $sMerge = ""
    
    
    	For $i = $iStart To $iEnd
    		$sMerge &= $aArray[$i] & ($i <> $iEnd ? $sDelimeter : "")
    	Next
    
    
    	Return $sMerge
    EndFunc
    Alles anzeigen


    datei.txt

    Code
    02.01.2017 00:02 Wecker 29
    02.01.2017 00:49 Wecker 29
    02.01.2017 00:59 Wecker 50
    02.01.2017 02:45 Wecker 29
    02.01.2017 02:33 Stuhl
    01.01.2017 00:02 Haus
    01.01.2017 00:49 NULL
    01.01.2017 00:59 NULL
    01.01.2017 02:45 NULL
    01.01.2017 02:33 NULL


    Heraus kommt (die Intervalleanzeige (00:00 - 00:59 statt 00) kannst du ja selber anpassen):

    Code
    01.01.2017 00 --- 1x Haus
    01.01.2017 00 --- 2x NULL
    01.01.2017 02 --- 2x NULL
    02.01.2017 02 --- 1x Stuhl
    02.01.2017 00 --- 2x Wecker 29
    02.01.2017 00 --- 1x Wecker 50
    02.01.2017 02 --- 1x Wecker 29

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™