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

Beiträge von BugFix

  • Rekursive Datei/Ordner Auflistung per Objekt

    • BugFix
    • 25. Juni 2008 um 10:53

    Das geht ganz einfach, da es als String erstellt wird.
    Kommentiere wie gezeigt aus und du bekommst einen String zurück.

    Spoiler anzeigen
    [autoit]

    ;==================================================================================================
    Func _GetFilesFolder_Rekursiv($sPath, $sExt='*', $iDir=-1)
    Global $oFSO = ObjCreate('Scripting.FileSystemObject')
    Global $strFF_Ret = '', $strFiles = ''
    Local $aOut
    If $sExt = -1 Then $sExt = '*'
    If ($iDir < -1) Or ($iDir > 1) Then $iDir = -1
    _ShowSubFolders($oFSO.GetFolder($sPath),$sExt,$iDir)
    ; $aOut = StringSplit(StringTrimRight($strFF_Ret,1), @LF)
    ; If $aOut[1] = '' Then
    ; ReDim $aOut[1]
    ; $aOut[0] = 0
    EndIf
    ; Return $aOut
    ; statt dessen:
    Return $strFF_Ret
    EndFunc

    [/autoit]
  • MouseUp funzt nicht

    • BugFix
    • 24. Juni 2008 um 22:11

    Es ist zwar syntaktisch falsch, aber da passenderweise die Sektionsnamen identisch mit den Werten von $i sind, klappt es auch. ;)

  • MouseUp funzt nicht

    • BugFix
    • 24. Juni 2008 um 22:01

    Du liest zwar die Sektionsnamen aus - aber du verwendest sie nicht!
    Statt $var[$i2] verwendest du nur $i2

  • Rekursive Datei/Ordner Auflistung per Objekt

    • BugFix
    • 24. Juni 2008 um 21:51
    Zitat von milko

    Es kann auch an der Funktion _ArrayDisplay liegen...


    Goldrichtig :D
    Dafür ist in der Array.au3 die Konstante: $iLVIAddUDFThreshold = 4000 zuständig.

  • Arrrrgh, Medion-Laptop kaputt!?

    • BugFix
    • 23. Juni 2008 um 22:23

    Ja, versuche mal das Motherboard zu reseten. Boardbatterie raus für 20 min. Vielleicht hilft es.

  • Rekursive Datei/Ordner Auflistung per Objekt

    • BugFix
    • 22. Juni 2008 um 22:56

    Hi,
    ich hab mal die Rekursive Datei und/oder Ordner Auflistung per Objekt umgesetzt. (Ist viel kürzer als die ..FirstFile/..NextFile Variante :D )
    Vielleicht habt ihr mal Bedarf.
    Ihr übergebt Pfad (für aktuellen Pfad kann '.' und für übergeordneten Pfad kann '..' verwendet werden), Dateierweiterung ('*' oder -1 für alle[Standard]) und ein OrdnerFlag (-1 Datei+Ordner[Standard], 0 nur Dateien, 1 nur Ordner).
    Rückgabewert ist ein Array mit der Anzahl gefundener Pfade in Array[0].
    (SciTE warnt beim Ausführen, da 2 Variablen erst innerhalb der Funktion erstellt werden)

    Edit: Auf mehrfachen Wunsch einer einzelnen Dame :rofl: habe ich jetzt noch die Option zur Wahl des Rückgabetyps eingebaut. Entweder als Array (Standard), Flag 0, oder als @LF-getrennten String mit Flag 1.

    Edit 03.07.08: Eine Ergänzung eingefügt.
    Bei Stringrückgabe kann das Trennzeichen selbst gewählt werden. Vordefiniert: 0=@CRLF (Standard); 1=@CR; 2=@LF

    Die Warnung wegen noch nicht deklarierter Variable habe ich jetzt auch verbannt. ;)

    Edit 16.09.08: Kleine Korrekturen
    Wahl der Trennzeichen jetzt festgelegt auf: 0=@CRLF (Standard) / 1=@CR/ 2=@LF / 3=; / 4=|
    Dank Oscars Hinweisen Probleme bei Trennzeichen unterschiedlicher Länge (@CR=1, @CRLF=2) beseitigt.

    _GetFilesFolder_Rekursiv()
    [autoit]

    #include<Array.au3>
    $ret = _GetFilesFolder_Rekursiv('.', 'au3',0,1)
    If IsArray($ret) Then
    _ArrayDisplay($ret, 'Rekursiv alle au3-Dateien')
    Else
    ConsoleWrite($ret & @CRLF)
    EndIf

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

    ;==================================================================================================
    ; Function Name: _GetFilesFolder_Rekursiv($sPath [, $sExt='*' [, $iDir=-1 [, $iRetType=0 ,[$sDelim='0']]]])
    ; Description: Rekursive Auflistung von Dateien und/oder Ordnern
    ; Parameter(s): $sPath der Basispfad für die Auflistung ('.' -aktueller Pfad, '..' -Parentpfad)
    ; $sExt Erweiterung für Dateiauswahl '*' oder -1 für alle (Standard)
    ; $iDir -1 Dateien+Ordner(Standard), 0 nur Dateien, 1 nur Ordner
    ; optional: $iRetType 0 gibt Array, 1 gibt String zurück
    ; optional: $sDelim legt Trennzeichen für Stringrückgabe fest
    ; 0 -@CRLF (Standard) 1 -@CR 2 -@LF 3 -';' 4 -'|'
    ; Return Value(s): Array (Standard) od. String mit den gefundenen Pfaden der Dateien und/oder Ordner
    ; Array[0] enthält die Anzahl der gefundenen Dateien/Ordner
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ;==================================================================================================
    Func _GetFilesFolder_Rekursiv($sPath, $sExt='*', $iDir=-1, $iRetType=0, $sDelim='0')
    Global $oFSO = ObjCreate('Scripting.FileSystemObject')
    Global $strFiles = ''
    Switch $sDelim
    Case '1'
    $sDelim = @CR
    Case '2'
    $sDelim = @LF
    Case '3'
    $sDelim = ';'
    Case '4'
    $sDelim = '|'
    Case Else
    $sDelim = @CRLF
    EndSwitch
    If ($iRetType < 0) Or ($iRetType > 1) Then $iRetType = 0
    If $sExt = -1 Then $sExt = '*'
    If ($iDir < -1) Or ($iDir > 1) Then $iDir = -1
    _ShowSubFolders($oFSO.GetFolder($sPath),$sExt,$iDir,$sDelim)
    If $iRetType = 0 Then
    Local $aOut
    $aOut = StringSplit(StringTrimRight($strFiles, StringLen($sDelim)), $sDelim, 1)
    If $aOut[1] = '' Then
    ReDim $aOut[1]
    $aOut[0] = 0
    EndIf
    Return $aOut
    Else
    Return StringTrimRight($strFiles, StringLen($sDelim))
    EndIf
    EndFunc

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

    Func _ShowSubFolders($Folder, $Ext='*', $Dir=-1, $Delim=@CRLF)
    If Not IsDeclared("strFiles") Then Global $strFiles = ''
    If ($Dir = -1) Or ($Dir = 0) Then
    For $file In $Folder.Files
    If $Ext <> '*' Then
    If StringRight($file.Name, StringLen($Ext)) = $Ext Then _
    $strFiles &= $file.Path & $Delim
    Else
    $strFiles &= $file.Path & $Delim
    EndIf
    Next
    EndIf
    For $Subfolder In $Folder.SubFolders
    If ($Dir = -1) Or ($Dir = 1) Then $strFiles &= $Subfolder.Path & '\' & $Delim
    _ShowSubFolders($Subfolder, $Ext, $Dir, $Delim)
    Next
    EndFunc

    [/autoit]
  • _GUICtrlListView_SimpleSort oO

    • BugFix
    • 22. Juni 2008 um 20:34

    Die Sortierung wechselt immer von Ascending nach Descending.
    Hier mal ein Bsp., per Kontext-Menü kannst du wählen nach welcher Spalte sortiert werden soll. Die Sortierung betrachtet Zahlen aber als String.

    Spoiler anzeigen
    [autoit]

    #include <GuiConstantsEx.au3>
    #include <GuiListView.au3>
    #include <WindowsConstants.au3>

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

    Opt('MustDeclareVars', 1)

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

    Global $hListView, $B_DESCENDING, $mnu, $mnuSort0, $mnuSort1, $mnuSort2, $msg

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

    _Main()

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

    Func _Main()
    GUICreate("ListView SimpleSort", 400, 300)
    $hListView = GUICtrlCreateListView("col1|col2|col3", 2, 2, 394, 268)
    $mnu = GUICtrlCreateContextMenu($hListView)
    $mnuSort0 = GUICtrlCreateMenuItem('Sort Spalte1', $mnu)
    $mnuSort1 = GUICtrlCreateMenuItem('Sort Spalte2', $mnu)
    $mnuSort2 = GUICtrlCreateMenuItem('Sort Spalte3', $mnu)
    GUICtrlSendMsg($hListView, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)
    GUICtrlSendMsg($hListView, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_FULLROWSELECT, $LVS_EX_FULLROWSELECT)
    GUICtrlCreateListViewItem("line4|5|more_a", $hListView)
    GUICtrlCreateListViewItem("line5|4.50 |more_c", $hListView)
    GUICtrlCreateListViewItem("line5|4.0 |more_c", $hListView)
    GUICtrlCreateListViewItem("line3|23|more_e", $hListView)
    GUICtrlCreateListViewItem("line2|0.34560 |more_d", $hListView)
    GUICtrlCreateListViewItem("line1|1.0 |more_b", $hListView)
    GUICtrlCreateListViewItem("line1|0.1 |more_b", $hListView)
    GUICtrlCreateListViewItem("line1|10|more_b", $hListView)
    _GUICtrlListView_SetColumnWidth($hListView, 0, 75)
    _GUICtrlListView_SetColumnWidth($hListView, 1, 75)
    _GUICtrlListView_SetColumnWidth($hListView, 2, 75)

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

    GUISetState()

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

    Global $B_DESCENDING[_GUICtrlListView_GetColumnCount($hListView)]
    ; Loop until user exits
    Do
    $msg = GUIGetMsg()
    Switch $msg
    Case $mnuSort0
    _GUICtrlListView_SimpleSort($hListView, $B_DESCENDING,0)
    Case $mnuSort1
    _GUICtrlListView_SimpleSort($hListView, $B_DESCENDING,1)
    Case $mnuSort2
    _GUICtrlListView_SimpleSort($hListView, $B_DESCENDING,2)
    EndSwitch
    Until $msg = $GUI_EVENT_CLOSE
    GUIDelete()
    EndFunc ;==>_Main

    [/autoit]
  • IP Aus Funktion PING ?

    • BugFix
    • 22. Juni 2008 um 16:08
    Zitat von Der_Doc

    Deine erste Lösung hat mir besser gefallen.


    Mir auch :rofl:

  • IP Aus Funktion PING ?

    • BugFix
    • 22. Juni 2008 um 15:55

    Es ist durchaus möglich über den (System-) Ping-Befehl die IP zu erfragen, aber es geht ja einfacher ;)
    Aber ich zeige trotzdem mal die Möglichkeit:

    Spoiler anzeigen
    [autoit]

    #include<Constants.au3>
    $IPadress = _GetIP_fromURL('autoit.de')
    If $IPadress = -1 Then
    MsgBox(0, 'Fehler', 'Antwortzeit überschritten oder Adresse nicht auflösbar.')
    Else
    MsgBox(0, 'IP-Adresse', $IPadress)
    EndIf

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

    Func _GetIP_fromURL($URL, $TIMEOUT=10000)
    Local $start = TimerInit()
    Local $foo = Run(@ComSpec & " /c " & 'ping ' & $URL, "", @SW_HIDE, $STDOUT_CHILD)
    Local $line, $IP[1] = [-1]
    While True
    If TimerDiff($start) > $TIMEOUT Then ExitLoop
    $line = StdoutRead($foo)
    If StringInStr($line, '[') Then
    $IP = StringRegExp($line, '(?<=\[).*(?=\])', 1)
    ExitLoop
    EndIf
    Wend
    Return $IP[0]
    EndFunc

    [/autoit]
  • Combo Gui Hilfe

    • BugFix
    • 22. Juni 2008 um 11:51

    Also der markante Unterschied zwischen den Varianten ist folgender:
    In der einfachen Version setzt du die Daten der Liste immer alle gemeinsam (GUICtrlSetData($Combo, 'Eintrag1|Eintrag2|Eintrag3') ).
    Das bedeutet, wenn du Änderungen ausführen willst, mußt du den Inhalt der Liste in einer eigenen Variablen (z.B. Array) führen um entsprechend Löschungen oder Ergänzungen durchzuführen. Also um einen Eintrag zu löschen mußt du die Liste komplett zurücksetzen (GUICtrlSetData($Combo, '') ), dann den zu löschenden Wert aus der Variablen, die den Inhalt führt, löschen und anschließend mit den restlichen Daten die Liste neu setzen.

    In der erweiterten Version brauchst du diese Variable nicht führen, da dir der Listeninhalt direkt per Index (bzw. Text des Eintrags) zur Verfügung steht. Willst du z.B. den Eintrag "Rechner5" entfernen, erfragst du den Index für Text=Rechner5 und löscht dann diesen Index aus der Liste.

  • Combo Gui Hilfe

    • BugFix
    • 22. Juni 2008 um 10:16

    Klar geht auch das, aber wenn z.B. Eintrag 3 von 10 angezeigt ist und dieser gelöscht werden soll, kannst du das i.A. auf diesem Weg nicht gerade komfortabel lösen. Unterschiede in der Listenerstellung (Reihenfolge) und Darstellung (sortiert/ nicht sortiert) erschweren es unnütz.
    Deshalb empfehle ich lieber gleich die Funktionen der UDF um per Indexanwahl auf die Einträge zugreifen zu können.

  • Animiertes Bild in Gui - mit welchem Befehl nochmal ?

    • BugFix
    • 22. Juni 2008 um 09:31
    Zitat von Dankeschön

    Na ja,danke, nur wenn ich guictrcreateicon mache,kommt da überhaupt nix,nichtmals ein Standbild !


    Ist ja klar, ich hatte ja auch geschrieben: "Animierte Icon lassen sich normal mit GUICtrlCreateIcon einbinden."
    Du willst aber ein animiertes GIF einbinden, somit ist diese Funktion dafür nicht geeignet.

    Hier mal ein Bsp.:

    [autoit]

    #include <GUIConstantsEx.au3>
    GUICreate(" My GUI Icons", 250, 250)
    $n1 = GUICtrlCreateIcon(@WindowsDir & "\cursors\horse.ani", -1, 20, 40, 32, 32)
    GUISetState()

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

    While 1
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then ExitLoop
    WEnd
    GUIDelete()

    [/autoit]
  • Combo Gui Hilfe

    • BugFix
    • 22. Juni 2008 um 08:22

    Ja, wenn du nur eine beim Programmstart festgelegte, sich nicht verändernde Auswahl möchtest, reicht auch das. :)
    Falls du aber einzelne Einträge entfernen/hinzufügen möchtest etc., kommst du mit der Variante nicht weiter.

  • Animiertes Bild in Gui - mit welchem Befehl nochmal ?

    • BugFix
    • 22. Juni 2008 um 00:48

    Animierte Icon lassen sich normal mit GUICtrlCreateIcon einbinden.

  • Motivation geht so langsam flöten ...

    • BugFix
    • 22. Juni 2008 um 00:43

    Tweaky, ich hab volles Verständnis für Motivationsverlust. Meine Einsätze beim Übersetzen/Reviewen sind zugegebenermaßen auch eher sporadisch. Hängt durchaus auch damit zusammen, dass ich persönlich eine englische der deutschen Hilfe vorziehe. Es geht mir dabei, wie mit vielen Dokumentationen (z.B. auf MSDN), auch bei völlig korrekter Übersetzung gelingt es nicht immer den Inhalt in vollem Umfang rüberzubringen.
    Aber natürlich ist es für Anfänger sicher leichter, mit einer deutschen Hilfe zu arbeiten. Vielleicht sollten deshalb gerade jene, die die deutsche Version benötigen, aktiver werden? Denn beim Übersetzen kann man Funktionen kennenlernen, die einem sonst wohl 'ewig' verborgen bleiben.

  • Neuausrichtung des Forums

    • BugFix
    • 22. Juni 2008 um 00:07

    Sourcecode betreffend:
    Wie soll das laufen, wenn das Originalskript nicht eingestellt wird? - Bei Skripten hat das dann nichts zu suchen, sonst könnte ja jeder ein Programm das mit einer anderen Sprache erstellt wurde hier einstellen.
    Die Frage ist doch: Wozu stelle ich Skripte ein? - Ich gehe davon aus, das der Grundgedanke unseres Forums OpenSource ist. Wer damit nicht konform geht, braucht doch seine Programme nicht einstellen.
    Wenn ein Forenbeitrag Archive als Dateien enthält, lade ich das schon nicht. Ich öffne ausschließlich au3-Dateien.
    Es bleibt jedem selbst überlassen, ob er Code zeigt oder nicht. Aber ich werde niemals ein Programm bewerten wollen, dass ich hier nicht im Sourcecode sehe!

  • Combo Gui Hilfe

    • BugFix
    • 21. Juni 2008 um 23:47

    Soweit ich bis jetzt gesehen habe, sind in der ..Ex einige Funktionen mehr. Aber warum deshalb alle anderen ebenfalls enthalten sind, danach hab ich noch nicht gesucht. ;)
    Gibt sicher eine einleuchtende Erklärung - wir werden schon noch drauf stoßen.

    Edit: Hab mal bischen reingeschaut. Der Unterschied ist schon bei ..Create, es sind völlig unterschiedliche Styles vorhanden. Demzufolge müssen Funktionen, die bei den Standards sind, in der ..Ex nochmal neu definiert werden.
    Hoffe, ich habe das jetzt richtig interpretiert. ;)

  • Combo Gui Hilfe

    • BugFix
    • 21. Juni 2008 um 23:39

    Im Allgemeinen kommst du mit den Funktionen der <GuiComboBox.au3> aus. Also _GUICtrlComboBox_Create etc.

  • ProgrammSammlung von FirePanther (mir)

    • BugFix
    • 21. Juni 2008 um 19:37
    Zitat von FirePanther

    höchstens nur spaßviren die nix machen können


    Ich bedaure deine Einstellung zum Skripten. Klar kommt jeder irgendwann mal in die Versuchung irgendeinen Gag zu programmieren. Haben wir auch schon hier gemacht, jedoch ging es dabei im Allgemeinen um das Erzeugen bestimmter Effekte (flackernder Monitor etc.).
    Aber bei der ständig wachsenden Zahl von Viren sollte man sich solche Scherze dann lieber doch verkneifen. Sonst kannst du irgendwann kein AutoIt-Skript mehr verwenden, da ständig die Anti-Virenprogramme Alarm geben. Und das hat AutoIt nicht verdient!

  • Frage zu RegRead und RegWrite

    • BugFix
    • 21. Juni 2008 um 19:30

    Guckst du: https://autoit.de/index.php?page…36642#post36642 ;)

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™