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

Beiträge von Oscar

  • Informationen aus HTML lesen

    • Oscar
    • 26. Mai 2009 um 04:20

    Und hier das Ganze inkl. Uhrzeiten:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    #include <Inet.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $aOut = _Get_Playlist_swr3()

    [/autoit] [autoit][/autoit] [autoit]

    _ArrayDisplay($aOut)

    [/autoit] [autoit][/autoit] [autoit]

    Func _Get_Playlist_swr3()
    Local $sSource, $aOut, $sBuffer
    $sSource = _INetGetSource("http://www.swr3.de/musik/musikrecherche/-/id=47424/did=202234/1wuwzys/index.html")
    $sBuffer = StringToBinary($sSource, 1)
    $sSource = BinaryToString($sBuffer, 4)
    $aOut = StringRegExp($sSource, '(?s)<tr class="farben_hg.+?">.+?<td>(.+?)</td>.+?<td>(.+?)</td>.+?<td>(.+?)</td>', 3)
    If Not IsArray($aOut) Then Return SetError(1, 0, 0)
    For $i = 0 To UBound($aOut) -1
    $aOut[$i] = StringRegExpReplace($aOut[$i], '<.+?>|\h{2,}|\v', '')
    Next
    Return $aOut
    EndFunc

    [/autoit]
  • Theoriefrage : AntiVirus

    • Oscar
    • 25. Mai 2009 um 20:53

    Du liest die Datei binär ein und suchst nach der Signatur. Viel Spass beim warten. ;)

  • Theoriefrage : AntiVirus

    • Oscar
    • 25. Mai 2009 um 20:34

    Ich glaube nicht, dass irgendein AntiVirus-Hersteller einfach so seine Virensignatur-Datenbank freigibt.

  • Ordner in TV auflisten; nach Größe sortiert

    • Oscar
    • 25. Mai 2009 um 20:30

    Es sind nicht die Nachkommastellen, die die Sortierung "falsch" werden lassen. ;)

    Hier die StringFormat-Version (Änderung):

    [autoit]

    $dir[$id] = GUICtrlCreateTreeViewItem(StringFormat('%.3f', Round($s / 1024 / 1024, 3)) & " MB - " & $n, $dir[$i])

    [/autoit]
  • Theoriefrage : AntiVirus

    • Oscar
    • 25. Mai 2009 um 20:21

    Theoretisch schon, nur woher nimmst Du die Viren-Erkennungs-Datenbank?
    Du brauchst ja erstmal von "allen" Viren entsprechende Signaturen.

  • Ordner in TV auflisten; nach Größe sortiert

    • Oscar
    • 25. Mai 2009 um 20:01

    Die Idee ist theoretisch nicht schlecht, nur sortiert die Funktion "_GUICtrlTreeView_Sort" nicht richtig.
    Schau Dir das Ergebnis mal genauer an. Da ist z.B. der Ordner "SciTe" mit ~11 MB mitten drin. Das liegt daran, dass die Funktion nur nach String (nicht nach der Zahl) sortiert.

  • Ordner nach Anzahl löschen

    • Oscar
    • 25. Mai 2009 um 19:49

    So, jetzt mit Auswahl und spezieller Abfrage, sodass auch wirklich nur die Backup-Ordner gelöscht werden:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    #Include <File.au3>
    $aFolderFull = _FileListToArray(@ScriptDir, '*_Voll', 2)
    $aFolderAll = _FileListToArray(@ScriptDir, '*', 2)
    $iFullCount = 5 ; Anzahl der Voll-Backups, die nicht gelöscht werden sollen
    If $aFolderFull[0] > $iFullCount Then
    $tmp = StringLeft($aFolderFull[$aFolderFull[0]-$iFullCount+1], 16)
    For $i = 1 To $aFolderFull[0] - $iFullCount
    For $j = 1 To $aFolderAll[0]
    If StringRegExp($aFolderAll[$j], '\A\d{4}\.\d{2}\.\d{2}_\d{2}\.\d{2}_.*') And (StringLeft($aFolderAll[$j], 16) < $tmp) Then
    ;~ DirRemove(@ScriptDir & '\' & $aFolderAll[$j], 1)
    ConsoleWrite(@ScriptDir & '\' & $aFolderAll[$j] & @CRLF)
    EndIf
    Next
    Next
    Else
    MsgBox(0, 0, 'zu wenig Voll-Backups')
    EndIf

    [/autoit]
  • hab da ein problem

    • Oscar
    • 25. Mai 2009 um 19:14

    Bitte die Forenregeln lesen! Wir unterstützen hier keine Bots!
    [Thread closed]

  • Ordner nach Anzahl löschen

    • Oscar
    • 25. Mai 2009 um 19:06

    Da die Backup-Ordner alle mit einer Zahl anfangen wird es nur kritisch, wenn sich in dem Ordner auch Ordner befinden, die ebenfalls mit einer Zahl anfangen (die kleiner ist als die Zahl der Backup-Ordner).

    Im letzten Script wähle ich einfach den 5-letzten Voll-Backup-Ordner aus und lösche alle Ordner die "kleiner" sind (also ein älteres Datum haben).

  • Ordner in TV auflisten; nach Größe sortiert

    • Oscar
    • 25. Mai 2009 um 18:46

    Oh oh...sortieren von TreeViews ist doch nicht so einfach, wie ich mir das gedacht hatte.
    Hatte die UDFs im Hinterkopf, doch die Sort-Funktion bietet keine weiteren Optionen zum sortieren.
    Sie sortiert stur nach Strings:

    Spoiler anzeigen
    [autoit]


    #include <GuiTreeView.au3>
    #include <GUIConstantsEx.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $gui = GUICreate("Treeview")
    Global $id = 0, $dir[9999], $path = "c:\Programme\AutoIt3\"

    [/autoit] [autoit][/autoit] [autoit]

    $tree = GUICtrlCreateTreeView(0, 0, 481, 353)
    $dir[$id] = GUICtrlCreateTreeViewItem($path, $tree)
    GUISetState(@SW_SHOW)
    searchdir($path, $id)
    ReDim $dir[$id + 1]
    GUICtrlSetState($dir[0], $GUI_EXPAND)
    MsgBox(0, 0, 'Jetzt sortieren')
    _GUICtrlTreeView_Sort($tree)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $g = GUIGetMsg()
    If $g = -3 Then Exit
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func searchdir($d, $i)
    Local $f, $n, $s
    $f = FileFindFirstFile($d & "*")
    While 1
    $n = FileFindNextFile($f)
    If @error Then ExitLoop
    $s = DirGetSize($d & $n)
    If $s > -1 Then
    $id += 1
    $dir[$id] = GUICtrlCreateTreeViewItem(Round($s / 1024 / 1024, 3) & " MB - " & $n, $dir[$i])
    searchdir($d & $n & "\", $id)
    EndIf
    WEnd
    EndFunc ;==>searchdir

    [/autoit]

    Man müsste also die "1. Ebene" einlesen, sortieren, ins TreeView eintragen und dann erst die Child-Items erstellen.

  • Brauche hilfe über GUICtrlCreateRadio

    • Oscar
    • 25. Mai 2009 um 16:40

    @Harun27: Ich denke, Du suchst eher GUICtrlCreateCheckbox statt -Radio, denn der Sinn von Radio-Buttons ist ja gerade, dass man nur einen (pro Gruppe) auswählen kann.

  • _soundplay tötet meinen pc

    • Oscar
    • 25. Mai 2009 um 16:35

    Nur um eine fehlerhafte AutoIt-Installation auszuschliessen, installiere mal AutoIt neu.
    Vielleicht hast Du (oder ein Script) mal die Sound.au3 im Include-Ordner verändert.

  • Ordner nach Anzahl löschen

    • Oscar
    • 25. Mai 2009 um 16:23

    Befinden sich in dem Ordner nur die Backup-Ordner (Voll- und Inkrementell)?

    Dann könnte man einen Vergleich (Kleiner als) machen:

    [autoit]


    #include <Array.au3>
    #Include <File.au3>
    $aFolderFull = _FileListToArray(@ScriptDir, '*_Voll', 2)
    $aFolderAll = _FileListToArray(@ScriptDir, '*', 2)
    If $aFolderFull[0] > 5 Then
    $tmp = StringLeft($aFolderFull[$aFolderFull[0]-4], 16)
    For $i = 1 To $aFolderFull[0] - 5
    For $j = 1 To $aFolderAll[0]
    If StringLeft($aFolderAll[$j], 16) < $tmp Then
    ;~ DirRemove(@ScriptDir & '\' & $aFolderAll[$j], 1)
    ConsoleWrite(@ScriptDir & '\' & $aFolderAll[$j] & @CRLF)
    EndIf
    Next
    Next
    Else
    MsgBox(0, 0, 'zu wenig Voll-Backups')
    EndIf

    [/autoit]

    Zum testen wieder erstmal den DirRemove-Befehl auskommentiert.

  • Ordner in TV auflisten; nach Größe sortiert

    • Oscar
    • 25. Mai 2009 um 12:38

    Um mal zu erklären, was ich meine:

    Beispiel (vor der Sortierung):

    Code
    c:\
    |- Programme\ (500 MB)
        '- AutoIt3\ (43 MB)
    |- Windows\ (2100 MB)
    |- Weitere Daten\ (5000 MB)
        '- MP3s\ (2000 MB)

    Beispiel (nach der Sortierung):

    Code
    c:\
    |- Weitere Daten\ (5000 MB)
    |- Windows\ (2100 MB)
    '- MP3s\ (2000 MB)
    '- AutoIt3\ (43 MB)

    Verstehst Du, was ich meine?
    Die eingerückten Verzeichnisse im Treeview werden rausgerissen. Oder Du sortierst nur die Verzeichnisse im Hauptpfad.
    Deshalb mein Hinweis auf die von Dir gewünschte Sortier-Methode.

  • Ordner nach Anzahl löschen

    • Oscar
    • 24. Mai 2009 um 21:19

    Ja, genau! Ich habe den Befehl DirRemove nur auskommentiert, damit Du erstmal schauen kannst, ob das so passt (die Verzeichnisse, die in der Konsole ausgegeben werden, würden dann gelöscht werden).
    Wenn das so ok ist, dann brauchst Du nur den auskommentierten Befehl (DirRemove) wieder aktivieren.

  • _soundplay tötet meinen pc

    • Oscar
    • 24. Mai 2009 um 21:14

    Wenn das nur bei manchen MP3s der Fall ist, solltest Du mal die MP3s in Augenschein nehmen. Vielleicht sind diese ja "kaputt" (fehlerhaft kodiert)?!
    Für meinen AutoIt-MP3-Player benutze ich ebenfalls die _Sound-Funktionen und habe bisher keine Probleme damit entdecken können.

  • _soundplay tötet meinen pc

    • Oscar
    • 24. Mai 2009 um 18:13

    Deine Variable $oldfile ist nur eine lokale Variable und somit wird das Script nicht richtig funktionieren. Meine Erfahrung mit den _Sound-Funktionen ist aber auch die, dass man besser _SoundOpen benutzen sollte, statt bei _SoundPlay direkt die Datei anzugeben.
    Deshalb würde ich das so programmieren:

    [autoit]


    #include <Sound.au3>
    Global $sound
    HotKeySet("{f5}", "play")
    While 1
    Sleep(1000)
    WEnd

    [/autoit][autoit][/autoit][autoit]

    Func play()
    Local $file = FileOpenDialog("Öffnen", "", "(*.mp3)")
    If Not @error Then
    If $sound Then
    _SoundStop($sound)
    _SoundClose($sound)
    EndIf
    $sound = _SoundOpen($file, 'Play')
    _SoundPlay($sound)
    EndIf
    EndFunc ;==>play

    [/autoit]
  • _soundplay tötet meinen pc

    • Oscar
    • 24. Mai 2009 um 17:56

    Willkommen hier im Forum! :)

    Bei Problemen mit einem Script ist es immer ganz hilfreich, wenn Du das betreffende Script (oder ein nachvollziehbares Beispielscript) hier postest, damit man Dir schneller helfen kann und nicht herumraten muss.

  • Informationen aus HTML lesen

    • Oscar
    • 24. Mai 2009 um 17:18

    Hier hast Du eine Lösung, bei der Du ein Array mit den letzten 13 Interpreten und den Titeln zurückbekommst:

    [autoit]


    #include <Array.au3>
    #include <Inet.au3>

    [/autoit][autoit][/autoit][autoit]

    $aOut = _Get_Playlist_swr3()

    [/autoit][autoit][/autoit][autoit]

    _ArrayDisplay($aOut)

    [/autoit][autoit][/autoit][autoit]

    Func _Get_Playlist_swr3()
    Local $sSource, $aOut, $sBuffer
    $sSource = _INetGetSource("http://www.swr3.de/musik/musikrecherche/-/id=47424/did=202234/1wuwzys/index.html")
    $sBuffer = StringToBinary($sSource, 1)
    $sSource = BinaryToString($sBuffer, 4)
    $aOut = StringRegExp($sSource, '(?s)<tr class="farben_hg.+?">.+?<td>(.+?)</td>.+?<td>(.+?)</td>', 3)
    If Not IsArray($aOut) Then Return SetError(1, 0, 0)
    For $i = 0 To UBound($aOut) -1
    $aOut[$i] = StringRegExpReplace($aOut[$i], '<.+?>|\h{2,}|\v', '')
    Next
    Return $aOut
    EndFunc

    [/autoit]
  • Ordner nach Anzahl löschen

    • Oscar
    • 24. Mai 2009 um 11:46

    bernd670 : Mit "*" bei DirRemove hat das bei mir nicht funktioniert.

    Hier ist aber eine andere Lösung:

    [autoit]


    #include <Array.au3>
    #Include <File.au3>
    $aFolderFull = _FileListToArray(@ScriptDir, '*_Voll', 2)
    $aFolderAll = _FileListToArray(@ScriptDir, '*', 2)
    ;~ _ArrayDisplay($aFolderFull)
    If $aFolderFull[0] > 5 Then
    For $i = 1 To $aFolderFull[0] - 5
    $tmp = StringLeft($aFolderFull[$i], 10)
    For $j = 1 To $aFolderAll[0]
    If StringInStr($aFolderAll[$j], $tmp) = 1 Then
    ;~ DirRemove(@ScriptDir & '\' & $aFolderAll[$j], 1)
    ConsoleWrite(@ScriptDir & '\' & $aFolderAll[$j] & @CRLF)
    EndIf
    Next
    Next
    Else
    MsgBox(0, 0, 'zu wenig Voll-Backups')
    EndIf

    [/autoit]

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™