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

  • Ordner suchen und löschen

    • BugFix
    • 10. Juni 2008 um 15:22

    In der Funktion _ShowSubFolders($Folder) ist die Variable $str enthalten. Diese mußt du in deinem Skript deklarieren, damit sie auch außerhalb der Funktion zur Verfügung steht.
    Also

    [autoit]

    Global $str

    [/autoit]

    an den Anfang und schon paßt es.

  • Import CSV Datei

    • BugFix
    • 10. Juni 2008 um 14:16

    Outlook - Import - CSV ?
    Oder wo liegt das Problem? Und warum führst du immer wieder das AD an, sehe da keinen Zusammenhang.

  • Import CSV Datei

    • BugFix
    • 10. Juni 2008 um 13:30
    Zitat von jmewald

    ins Active Directory importieren.


    Verstehe ich nicht, was willst du im Verzeichnisdienst mit den Daten? ?(
    In welchem Programm willst du denn die Daten nutzen?

  • Inhalt eines ListViewItems ändern

    • BugFix
    • 10. Juni 2008 um 12:17

    Das kannst du mit den Funktionen der ListView-UDF erledigen. #Include <GuiListView.au3>
    Schau dir die Bsp. in der Hilfe an, ist eigentlich verständlich erklärt. Wenn noch Fragen sind melde dich wieder.
    (Beachte: Für die Funktion wird das Handle des Listview benötigt!)

  • Schreibschutz von kopierten Dateien automatisch entfernen

    • BugFix
    • 10. Juni 2008 um 11:04
    [autoit]

    FileSetAttrib($OrdnerPfad & '\*.*', '+A-R', 1)

    [/autoit]

    Archiv muß nicht unbedingt gesetzt werden, also '-R' reicht auch.

  • Ordner suchen und löschen

    • BugFix
    • 10. Juni 2008 um 09:59

    Warum das Programm abbricht, ist mir nicht ganz klar.
    Edit: Habs gefunden - die Auflistung enthält ja alle Pfadangaben einzeln, somit wird ein Parent-Folder bereits gelöscht und anschließend folgt der Verweis auf einen Subfolder (der jetzt nicht mehr existiert). Einfach eine FolderExists-Abfrage einbauen - dann läuft es.

    Spoiler anzeigen
    [autoit]

    Dim $oFSO = ObjCreate('Scripting.FileSystemObject')
    Dim $Path = 'D:\Profile\Dokumente und Einstellungen'
    Dim $str = ''
    _ShowSubFolders($oFSO.GetFolder($Path))

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

    Func _ShowSubFolders($Folder)
    For $Subfolder in $Folder.SubFolders
    $str &= $Subfolder.Path & @LF
    _ShowSubFolders($Subfolder)
    Next
    EndFunc
    $aAllFolder = StringSplit($str, @LF)
    For $i = 1 To UBound($aAllFolder) -1
    If StringInStr($aAllFolder[$i], 'gotomaxx') And $oFSO.FolderExists($aAllFolder[$i]) Then _
    $oFSO.DeleteFolder($aAllFolder[$i])
    Next

    [/autoit]

    FireFlyer
    Woher man das weiß? :D
    Ein Großteil von Skripten, die in VBS erstellt sind kann man 1:1 in AutoIt umsetzen. Auch VB-Code läßt sich als Grundlage verwenden. Also fleißig in VB-Archiven stöbern und vor allem sehr zu empfehlen: MSDN - Objektmodelle
    Hier mal der Link zum FSO

  • Einstellungen von Programm speichern?!

    • BugFix
    • 10. Juni 2008 um 09:43

    Der Speicherort der INI-Datei wird bei der Variablendeklaration festgelegt:

    [autoit]

    Global $INI = @ScriptDir & '\Meine.ini'

    [/autoit]

    In diesem Fall wird das Makro @ScriptDir verwendet, also das Verzeichnis, indem sich auch das Skript selbst befindet.

    Global legt in der Variablendeklaration den Gültigkeitsbereich der Variablen fest. Näheres findest du in der Hilfe unter Variablen.

    Das Bsp. mit der Case-Abfrage:
    Ja, jedem Font wird eine Ziffer zugeordnet und diese wird in der INI eingetragen. (Macht ja wenig Sinn, für jede Schriftart einen eigenen Schlüssel in der INI anzulegen)

    Oh man, du "Siezt" mich. Hast wohl in mein Profil geschaut und gesehen, wie alt ich bin ;( . Da fühle ich mich gleich noch älter :rofl:
    Also, wir duzen uns hier alle ;)

  • Visual IDE for AutoIt

    • BugFix
    • 9. Juni 2008 um 22:57

    Danke Tam0r für die hoffnungsvollen Aussichten.
    Wünsche dir viel Erfolg bei den Prüfungen. Toi, Toi, Toi. :thumbup:

  • Einstellungen von Programm speichern?!

    • BugFix
    • 9. Juni 2008 um 22:53

    Das geht so:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    Global $INI = @ScriptDir & '\Meine.ini'
    If Not FileExists($INI) Then IniWrite($INI, 'font', 'Arial', 1) ; wenn nicht vorhanden, wird INI erstellt
    Global $font = IniRead($INI, 'font', 'Arial', 1)

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

    GUICreate("Test", 150, 100)
    $menu2 = GUICtrlCreateMenu("Schriftart")
    $item4 = GUICtrlCreateMenuItem("Arial", $menu2)
    $item5 = GUICtrlCreateMenuItem("Arial Black", $menu2)

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

    If $font = 1 Then
    GUICtrlSetState($item4, $GUI_CHECKED)
    GUICtrlSetState($item5, $GUI_UNCHECKED)
    Else
    GUICtrlSetState($item4, $GUI_UNCHECKED)
    GUICtrlSetState($item5, $GUI_CHECKED)
    EndIf

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

    GUISetState()

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

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $item4
    $arial = "Arial"
    GUICtrlSetState($item4, $GUI_CHECKED)
    GUICtrlSetState($item5, $GUI_UNCHECKED)
    IniWrite($INI, 'font', 'Arial', 1)
    Case $item5
    $arialblack = "Arial Black"
    GUICtrlSetState($item5, $GUI_CHECKED)
    GUICtrlSetState($item4, $GUI_UNCHECKED)
    IniWrite($INI, 'font', 'Arial', 0)
    EndSwitch
    WEnd

    [/autoit]

    Edit:
    Falls du mehrere Schriftarten einbinden willst würde ich so vorgehen:
    Je Font eine Ziffer vergeben und die aktuelle Ziffer in der INI speichern.

    Spoiler anzeigen
    [autoit]

    ;~ beim Laden den zugehörigen Font markieren
    $font = IniRead($INI, 'font', 'type', 1)
    Switch $font
    Case 1 ; Arial
    ; Code zum Check des Eintrags
    Case 2 ; Arial Black
    ; Code zum Check des Eintrags
    Case 3 ; Arial Narrow
    ; Code zum Check des Eintrags
    Case 4 ; Comic Sans Serife
    ; Code zum Check des Eintrags
    Case 5 ; Courier New
    ; Code zum Check des Eintrags
    Case 6 ; TimesNewRoman
    ; Code zum Check des Eintrags
    EndSwitch

    [/autoit]
  • Ordner suchen und löschen

    • BugFix
    • 9. Juni 2008 um 20:30

    Vielleicht gefällt dir diese Lösung?

    [autoit]

    Dim $oFSO = ObjCreate('Scripting.FileSystemObject')
    Dim $Path = 'D:\Profile\Dokumente und Einstellungen'
    Dim $str = ''
    _ShowSubFolders($oFSO.GetFolder($Path))

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

    Func _ShowSubFolders($Folder)
    For $Subfolder in $Folder.SubFolders
    $str &= $Subfolder.Path & @LF
    _ShowSubFolders($Subfolder)
    Next
    EndFunc
    $aAllFolder = StringSplit($str, @LF)
    For $i = 1 To UBound($aAllFolder) -1
    If StringInStr($aAllFolder[$i], 'gotomaxx') Then $oFSO.DeleteFolder($aAllFolder[$i])
    Next

    [/autoit]

    Edit: Hatte die Rekursion vergessen, nun passt es.

  • Einstellungen von Programm speichern?!

    • BugFix
    • 9. Juni 2008 um 20:04

    Ja, INI ist am einfachsten, schau mal die Bsp. in der Hilfe zu INIWrite(), INIRead(), usw. an.
    Eine andere Variante ist die Verwendung von Registryeinträgen. Mag ich persönlich gar nicht, das müllt einen Rechner zu schnell zu.

  • daten aus einem 2-D-Array vergleichen

    • BugFix
    • 9. Juni 2008 um 16:51

    Mal als Anregung, versuche es dann umzusetzen:
    - Gehe durch das Ergebnis-Array
    - Schreibe Wert 1 in ein Temporäres Array (hat jetzt kleinstes X)
    - Solange Y gleich ist tue nichts
    - Wenn Y den nächsten Wert annnimmt wird auch dieser Wert in Tmp-Array geschrieben
    - der vorhergehende Wert ist dann der letzte und somit mit größtem X für das vorige Y (auch in Tmp-Array schreiben)
    - der letzte Eintrag im Array ist auch der mit größtem X für das letzte Y
    so weiter bis zum Ende
    Analog vorgehen nach dem Umsortieren (des Ergebnisarray, nicht des Tmp-Array) für X und zugehörige Y

    Am Ende sind nur die größten und kleinsten Werte im Tmp-Array.

    Edit: Ich habs mal auf die Schnelle gemacht, ungetestet. Befehlszeile für Sortieren mußt du noch einfügen.

    Spoiler anzeigen
    [autoit]

    $aErgebnisse[100][2] ; Ergebnisse sortiert nach Y fallend, X steigend ; [n][0] = X, [n][1] = Y
    $aTmp[1][2] ; leer, zum Aufnehmen der begrenzenden Koordinaten

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

    $aTmp[0][0] = $aErgebnisse[0][0] ; vorbelegen mit erstem Eintrag
    $aTmp[0][1] = $aErgebnisse[0][1]

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

    For $i = 1 To UBound($aErgebnisse) -1
    If $aTmp[UBound($aTmp)-1][1] <> $aErgebnisse[$i][1] Then ; Y hat neuen Wert
    ReDim $aTmp[UBound($aTmp)+2][2]
    $aTmp[UBound($aTmp)-2][0] = $aErgebnisse[$i-1][0] ; vorhergehenden Wert als größten Wert übernehmem
    $aTmp[UBound($aTmp)-2][1] = $aErgebnisse[$i-1][1] ; falls nur einer ist der doppelt (min u. max) wird später gelöscht
    $aTmp[UBound($aTmp)-1][0] = $aErgebnisse[$i][0] ; aktueller Wert als neuer kleinster Wert
    $aTmp[UBound($aTmp)-1][1] = $aErgebnisse[$i][1]
    EndIf
    Next
    ReDim $aTmp[UBound($aTmp)+1][2]
    $aTmp[UBound($aTmp)-1][0] = $aErgebnisse[UBound($aErgebnisse)-1][0] ; letzter Wert ist letzter größter Wert
    $aTmp[UBound($aTmp)-1][1] = $aErgebnisse[UBound($aErgebnisse)-1][1]

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

    ;=========================================
    ; HIER NOCH DAS $aErgebnisse UMSORTIEREN!!
    ;=========================================

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

    ; jetzt mit umsortiertem Array alles wie gehabt aber für X
    ReDim $aTmp[UBound($aTmp)+1][2]
    $aTmp[UBound($aTmp)-1][0] = $aErgebnisse[0][0] ; vorbelegen mit erstem Eintrag
    $aTmp[UBound($aTmp)-1][1] = $aErgebnisse[0][1]

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

    For $i = 1 To UBound($aErgebnisse) -1
    If $aTmp[UBound($aTmp)-1][0] <> $aErgebnisse[$i][0] Then ; X hat neuen Wert
    ReDim $aTmp[UBound($aTmp)+2][2]
    $aTmp[UBound($aTmp)-2][0] = $aErgebnisse[$i-1][0] ; vorhergehenden Wert als größten Wert übernehmem
    $aTmp[UBound($aTmp)-2][1] = $aErgebnisse[$i-1][1] ; falls nur einer ist der doppelt (min u. max) wird später gelöscht
    $aTmp[UBound($aTmp)-1][0] = $aErgebnisse[$i][0] ; aktueller Wert als neuer kleinster Wert
    $aTmp[UBound($aTmp)-1][1] = $aErgebnisse[$i][1]
    EndIf
    Next
    ReDim $aTmp[UBound($aTmp)+1][2]
    $aTmp[UBound($aTmp)-1][0] = $aErgebnisse[UBound($aErgebnisse)-1][0] ; letzter Wert ist letzter größter Wert
    $aTmp[UBound($aTmp)-1][1] = $aErgebnisse[UBound($aErgebnisse)-1][1]

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

    ; jetzt doppelte Einträge entfernen
    _Array2DDblDel($aTmp)

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

    Func _Array2DDblDel(ByRef $ARRAY, $CASESENS=0)
    Local $arTmp[1] = [''], $dbl = 0, $count = 0, $x, $l, $val, $valTmp, $i, $k
    If ( Not IsArray($ARRAY) ) Then
    SetError(1)
    Return 0
    EndIf
    Local $Ubound2nd = UBound($ARRAY,2)
    If @error = 2 Then
    For $i = 0 To UBound($ARRAY)-1
    $dbl = 0
    For $k = 0 To UBound($arTmp)-1
    Switch $CASESENS
    Case 0
    If $arTmp[$k] = $ARRAY[$i] Then
    $dbl = 1
    $count += 1
    EndIf
    Case 1
    If $arTmp[$k] == $ARRAY[$i] Then
    $dbl = 1
    $count += 1
    EndIf
    EndSwitch
    Next
    If $dbl = 0 Then
    If $arTmp[0] = "" Then
    $arTmp[0] = $ARRAY[$i]
    Else
    ReDim $arTmp[UBound($arTmp)+1]
    $arTmp[UBound($arTmp)-1] = $ARRAY[$i]
    EndIf
    Else
    $dbl = 0
    EndIf
    Next
    Else
    ReDim $arTmp[1][$Ubound2nd]
    $arTmp[0][0] = ''
    $x = 0
    For $i = 0 To UBound($ARRAY)-1
    $dbl = 0
    $val = ''
    $valTmp = ''
    For $l = 0 To $Ubound2nd-1
    $val &= $ARRAY[$i][$l]
    Next
    For $k = 0 To UBound($arTmp)-1
    For $l = 0 To $Ubound2nd-1
    $valTmp &= $arTmp[$k][$l]
    Next
    Switch $CASESENS
    Case 0
    If $valTmp = $val Then
    $dbl = 1
    $count += 1
    EndIf
    Case 1
    If $valTmp == $val Then
    $dbl = 1
    $count += 1
    EndIf
    EndSwitch
    $valTmp = ''
    Next
    If $dbl = 0 Then
    If $x = 1 Then ReDim $arTmp[UBound($arTmp)+1][$Ubound2nd]
    For $l = 0 To $Ubound2nd-1
    If $arTmp[0][0] = '' Or $x = 0 Then
    $arTmp[0][$l] = $ARRAY[0][$l]
    If $l = $Ubound2nd-1 Then $x = 1
    Else
    $arTmp[UBound($arTmp)-1][$l] = $ARRAY[$i][$l]
    $x = 2
    If $l = $Ubound2nd-1 Then $x = 1
    EndIf
    Next
    Else
    $dbl = 0
    EndIf
    Next
    EndIf
    $ARRAY = $arTmp
    Return $count
    EndFunc ; ==>_Array2DDblDel

    [/autoit]
  • Flash Videos einbinden?

    • BugFix
    • 9. Juni 2008 um 15:23

    Also ich weise dir gerne den Weg, aber ich bin kein Taxifahrer, der dich auch noch fährt, weil du nicht laufen möchtest. :P

  • Flash Videos einbinden?

    • BugFix
    • 9. Juni 2008 um 15:01
    [autoit]

    #Include <GuiComboBox.au3>
    $Text = ''
    $index = _GUICtrlComboBox_GetCurSel($hComboBox) ; Index der aktuellen Auswahl
    _GUICtrlComboBox_GetLBText($hComboBox, $index, $Text) ; Text der aktuellen Auswahl wird in $Text geschrieben

    [/autoit]
  • Flash Videos einbinden?

    • BugFix
    • 9. Juni 2008 um 14:52

    Na dann könnte dir das weiterhelfen: http://www.autoitscript.com/forum/index.php?showtopic=65027&hl=embedded++flash

    (Allerdings sind die von dir angegebenen SWF-Links wohl nicht verfügbar, ich kann mit keinem Player unter Angabe des Links darauf zugreifen)

  • Benutzer suchen

    • BugFix
    • 9. Juni 2008 um 14:37

    Machst du keinen Syntax-Check?
    Dann würdest du sofort die Fehlermeldung bekommen, dass "_FileWriteLog()" eine unbekannte Funktion ist.
    Weil: #include <file.au3> fehlt ;)

  • Flash Videos einbinden?

    • BugFix
    • 9. Juni 2008 um 14:32

    Ja, das Bsp. aus der Hilfe etwas abgewandelt:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <IE.au3>
    #include <WindowsConstants.au3>

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

    _IEErrorHandlerRegister ()

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

    $oIE = _IECreateEmbedded ()
    GUICreate("Embedded Web control Test", 640, 580, (@DesktopWidth - 640) / 2, _
    (@DesktopHeight - 580) / 2, $WS_OVERLAPPEDWINDOW + $WS_VISIBLE + $WS_CLIPSIBLINGS)
    $GUIActiveX = GUICtrlCreateObj($oIE, 10, 40, 600, 360)
    $GUI_Button_Start = GUICtrlCreateButton("Start", 10, 420, 100, 30)

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

    GUISetState()
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    Case $msg = $GUI_Button_Start
    _IENavigate ($oIE, "http://de.sevenload.com/videos/KzvjaXn-Book-1-04")
    EndSelect
    WEnd

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

    GUIDelete()
    Exit

    [/autoit]
  • Benutzer suchen

    • BugFix
    • 9. Juni 2008 um 14:20

    Ja klar. Da muß der Pfad für die Datei rein :)
    z.B.:

    [autoit]

    Global $LogFilePath = @ScriptDir & '\MeineUser.log'

    [/autoit]
  • Flash Videos einbinden?

    • BugFix
    • 9. Juni 2008 um 14:17

    Ah, Problem erkannt. Das wird wohl nicht gehen, da kein Link zum Video selber existiert, sondern nur zur Website mit eingebettetem Video. Die Website kpl. kannst du natürlich in eine Oberfläche einbetten, aber ich denke, das ist nicht was du willst.

  • Benutzer suchen

    • BugFix
    • 9. Juni 2008 um 14:02

    Was geht denn nicht?
    Im LogFile sollte in etwa erscheinen:

    DATUM ZEIT: AccountType: .......
    Caption: .....
    Description: .....
    Domain: .....
    FullName: .....

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™