Super das klappt!!
Danke dir
Nachtrag: hoffentlich merke ich mir das auch. So oft brauch ich RegEx nicht...
Super das klappt!!
Danke dir
Nachtrag: hoffentlich merke ich mir das auch. So oft brauch ich RegEx nicht...
Hallo
für einige von euch ist das sicher ein leichtes, aber ich beiss mir grad die Zähne aus.
Vor geraumer Zeit hab ich mir, mit eurer Hilfe, ein Pattern für StringRegExp() gebastelt, dass mir für _RecursiveFileListToArray() nur Dateien mit einer bstrimmten Endung auflistet.
Jetzt möchte ich das gerne erweitern, damit mehrere Endungen erkannt werden. Aber das bekomm ich einfach nicht hin.
; bisheriger Funktionsaufruf, der mir nur .txt-Files auflistet...
Local $sDaten = _RecursiveFileListToArray("E:\Daten", "txt")
; tatsächliches Pattern sieht so aus
; $sPattern = "txt" <--- für den einfachen Aufruf
; $sPattern = "(?i)[\w\.]+." & $sPattern & "$" <--- so steht dann das Pattern in der Funktion
Func _RecursiveFileListToArray($sPath, $sPattern, $iFlag = 1, $iFormat = 1, $sDelim = @CRLF)
;===========================================================================================
; Description:: gibt Verzeichnisse und/oder Dateien (rekursiv) zurück, die
; einem RegExp-Pattern entsprechen
; Parameter(s): $sPath = Startverzeichnis
; $sPattern = ein beliebiges RexExp-Pattern für die Auswahl
; $iFlag = Auswahl
; $iFlag = 0 = Dateien & Verzeichnisse
; $iFlag = 1 = nur Dateien
; $iFlag = 2 = nur Verzeichnisse
; $iFormat = Rückgabeformat
; $iFormat = 0 = String
; $iFormat = 1 = Array mit [0] = Anzahl
; $iFormat = 2 = Nullbasiertes Array
; $sDelim = Trennzeichen für die String-Rückgabe
; Requirement(s): AutoIt 3.3.0.0
; Return Value(s): Array/String mit den gefundenen Dateien/Verzeichnissen
; Author(s): Oscar (http://www.autoit.de)
; Anregungen von: bernd670 (http://www.autoit.de)
;===========================================================================================
$sPattern = "(?i)[\w\.]+." & $sPattern & "$" ; <--- von mir eingefügt für einfacheren Funktionsaufruf
Local $hSearch, $sFile, $sReturn = ''
If StringRight($sPath, 1) <> '\' Then $sPath &= '\'
$hSearch = FileFindFirstFile($sPath & '*.*')
If @error Or $hSearch = -1 Then Return SetError(0, 0, $sReturn)
While True
$sFile = FileFindNextFile($hSearch)
If @error Then ExitLoop
If StringInStr(FileGetAttrib($sPath & $sFile), 'D') Then
If StringRegExp($sPath & $sFile, $sPattern) And ($iFlag = 0 Or $iFlag = 2) Then $sReturn &= $sPath & $sFile & '\' & $sDelim
$sReturn &= _RecursiveFileListToArray($sPath & $sFile & '\', $sPattern, $iFlag, 0)
ContinueLoop
EndIf
If StringRegExp($sFile, $sPattern) And ($iFlag = 0 Or $iFlag = 1) Then $sReturn &= $sPath & $sFile & $sDelim
WEnd
FileClose($hSearch)
If $iFormat Then Return StringSplit(StringTrimRight($sReturn, StringLen($sDelim)), $sDelim, $iFormat)
Return $sReturn
EndFunc ;==>_RecursiveFileListToArray
Alles anzeigen
Kann das Pattern so abgeändert werden, dass nicht nur .txt-Files gefunden werden?
;Im idealfall würd ich gerne die Funktion so aufrufen können, wobei die Endungen variabel sein sollen
Local $sDaten = _RecursiveFileListToArray("E:\Daten, "txt,pdf,doc,html")
Habe bereits erfolglos versucht, in der Funktion selbst rumzupfuschen und work-arounds einzubauen, aber das ist doch Knete...
Könnt ihr mir helfen? Wie muss das Pattern aussehen, damit ich auch (optional) mehrere Dateiendungen finde?
hey alina
Meines Wissens ist das nicht möglich.
Zumal msgboxen ja auch "normale" zeitabläufe unterbrechen. Ich würd da ein eigenes GUI im msgbox Stil nachbauen. Da kannst du dann auch nen sichtbaren Countdown einbauen.
hi. Regex freaks kennen sicher bessere lösungen als ich, aber quick&dirty würde ich dein Ergebnis nochmal durch eine Schleife jagen. Ermittle die Anzahl der Leerzeichen und dann per step 3 besagtes Leerzeichen durch ein @lf ersetzen.
Ich habs mir nun "genauer angesehen" (diesen Thread). Da steht bisher nirgends, dass du "Dateien aus deinem Server ziehst"...
Auszug aus den Regeln
ZitatFolgende Inhalte sind absolut nicht erwünscht... Programme, die einem Spieler bei jeglicher Art von Computerspiel (auch Einzelspieler) einen Vorteil verschaffen ...Tools ...
Dir sind unsere Forumregeln schon vertraut, oder?
*vote4close*
Wenn ich das ganze (auch in der Shoutbox) richtig verfolgt habe, ging es doch eigentlich darum, dass jemand in jedem selbst erstellten Script die Option
MustDeclareVars 1 gesetzt haben wollte, ohne dass man es eintippen muss…
Ich hab was bereits vorgeschlagen, doch es wurde gekonnt ignoriert. Darum frag ich jetzt nochmal:
Warum ändert man nicht einfach das Template dahingehend ab? Was spricht denn dagegen?
Es ist ein Installationsimage gemeint.
:Offtopic ON:
so wie wir ihn kennen und lieben
:Offtopic OFF:
Mist! Es klappt nicht wie ich will... (wie so oft )
Ich hab mir vom Matrixcode ein Gif erstellt. Aber damit das reibungslos immer wieder von vorne beginnt, so, dass man die Wiederhohlung nicht wahrnimmt,
kriege ich nicht hin.
Vom erstellten Gif hab ich alle Frames (378) als Bild gespeichert und anschliessend jedes Bild binär eingelesen und mit den anderen verglichen um irgendein
Duplikat zu finden, damit ich dann eine passende Stelle hab , ab wann sich das Gif wiederholen soll. Aber es gibt keine Duplikate... Auch nicht nach dem 10. neuen Gif.
Oder vergleiche ich falsch?
#include <File.au3>
$counter = 0
$list = _FileListToArray(@DesktopDir & "\matrix_frames\", "*.gif", 1)
ConsoleWrite(@CRLF & "suche startet..." & @CRLF & @CRLF)
For $i = 1 To UBound($list) -1
$hFile = FileOpen(@ScriptDir & "\" & $list[$i], $FO_BINARY)
$suche_dies = FileRead($hFile)
FileClose($hFile)
ConsoleWrite("Datei eingelesen: " & $list[$i] & @CRLF)
For $k = 1 To UBound($list) -1
If $list[$i] = $list[$k] Then ContinueLoop ; skippen, wenn sich das bild mit sich selbst vergleichen soll
$hFile = FileOpen(@ScriptDir & "\" & $list[$k], $FO_BINARY)
$filetext = FileRead($hFile)
FileClose($hFile)
ConsoleWrite(" --> Vergleiche mit: " & $list[$k])
If $suche_dies = $filetext Then
$counter += 1
ConsoleWrite(" == " & $list[$i] & " --> erfolgreich")
Else
ConsoleWrite(" <> " & $list[$i] & " --> gescheitert")
EndIf
ConsoleWrite(@CRLF)
Next
ConsoleWrite(@CRLF)
Next
MsgBox(0,"",$counter) ;nur zum test soll die Duplikat-Anzahl gezeigt werden
Alles anzeigen
hey UEZ
gibt es eigentlich eine Möglichkeit, das als GUI Background zu verwenden?
Ich vermute, dass es nur über den Umweg eines 2. Prozesses geht mit nem transparenten GUI, das direkt über der Matrix liegt ?!
Das eigentliche Skript (mit dem transparenten GUI) muss dann den Matrixprozess starten und GUI-Höhe /-Breite mit übergeben, damit die Fenstergrösse stimmt.
und wenn das Fenster verschoben wird... muss der transparente GUI immer im Vordergrund sein, darf aber keine Titelleiste haben und sich mit der Fensterposition
immer an der Matrix halten... Sind die Gedanken soweit korrekt?
mfG Lo..
Danke Tweaky. Das ist die Lösung.
#include <GuiConstantsEx.au3>
#include <GuiListView.au3>
$h_GUI = GUICreate("Test Script", 322, 420)
$ListView1 = GUICtrlCreateListView("Spalte 1|Spalte 2", 10, 10, 200, 400, -1, $LVS_EX_GRIDLINES)
$ListView2 = GUICtrlCreateListView("neuer Name", 212, 10, 100, 400, $LVS_EDITLABELS, $LVS_EX_GRIDLINES)
$h_ListView1 = GUICtrlGetHandle($ListView1)
$h_ListView2 = GUICtrlGetHandle($ListView2)
_GUICtrlListView_SetColumnWidth($h_ListView1, 0, 130)
_GUICtrlListView_SetColumnWidth($h_ListView2, 0, 95)
For $i = 1 To 12
GUICtrlCreateListViewItem("Item " & $i, $ListView1)
GUICtrlCreateListViewItem("Next " & $i, $ListView2)
Next
GUISetState(@SW_SHOW, $h_GUI)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Alles anzeigen
Das 2. Listview soll editierbar sein, deshalb erstelle ich das mit dem Stil $LVS_EDITLABELS. Tatsächlich kann ich die Einträge bearbeiten.
ABER: sobald ich das übernehmen will, zB mit Enter oder ich wo anders hinklicke, steht wieder der ursprüngliche Text da.
Was ist hier falsch? Oder hat das noch niemand bemerkt?
Meine AutoIt-Version: 3.3.14.3
OS: Win10Pro x64
Richtig, kann geschlossen werden. Hab mittlerweile auch herausgefunden, wie ich die Buttons nutzbar machen kann. Sind ein wenig versteckt...
Allerdings ist das "Alarmhandling" nicht gut / ausreichend genug.
Aber Macrodroid ist dennoch richtig cool. Ich kenne wen, der hat das auf seinem 2.Handy installiert, dieses in seinen 2. Wagen verbaut und so eingerichtet,
dass er immer benachrichtigt wird, wenn "die Alte" nach hause kommt oder sie weg ist
Wie läuft das? ich tippe nur den aktuell kommenden Spieltag. Richtig?
Lottich wirft ein Hallo in die Runde
kennt von euch jemand die App "Macrodroid"? Wie der Name schon sagt ist es ein Tool für Android-Smartphones um Macros zu erstellen um Dinge zu automatisieren.
Ähnlich wie AutoIt für Windows
Das ganze funktioniert wie ein Baukastensystem: wähle aus, was das Makro auslösen soll -> was das Makro tun soll -> spezielle Bedingungen zum Auslösen
Bsp: für eine Medienkontrolle
... was soll das Makro auslösen ... | ... was soll das Makro tun ... | ... Bedingung zum Auslösen ... |
Ein-/Ausschalter-Toggle (3x drücken) | Medien abspielen/Pause (wobei auch die gewünschte App gewählt werden kann) | Kopfhörer angeschlossen ODER mit Bluetoothgerät verbunden |
das benutze ich zB ständig auf Arbeit, ist extrem hilfreich.
Nun zu meinem Vorhaben:
Es gibt dafür ein Widget dass 4 Buttons zur Verfügung stellt (4 andersfarbige Kreise). Diese Kreise möchte ich nutzen und mir eine Art "Schicht-Wecker" zu bauen.
Aber ich komm einfach nicht dahinter, wie ich diese Buttons ansprechen soll. Kann mir da irgendwer weiterhelfen?