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

  • Desktopplatz "reservieren"

    • BugFix
    • 20. Oktober 2011 um 19:12

    WM_MAXIMIZE - Message abfangen und dann die Fenster mit WinMove auf die reduzierte Größe anpassen. Bleibt die Abwägung von Aufwand (groß) und Nutzen (??).

  • Youtube Suchfunktion

    • BugFix
    • 18. Oktober 2011 um 23:21

    Guckst du hier: IntelliSenseBox

  • Verzeichnis bereinigen, letzte Version/Datei behalten

    • BugFix
    • 18. Oktober 2011 um 23:07

    Man kann es auch noch etwas kürzen, die Prüfung auf Dateityp und evtl. vorzeitiges Verlassen der Schleife bringt eigentlich keinen Vorteil:

    Spoiler anzeigen
    [autoit]

    Func _GetHighestVer(ByRef $a)
    Local $name, $ver
    Local $oFileVer = ObjCreate('Scripting.Dictionary')
    For $i = 1 To $a[0]
    $name = StringLeft($a[$i], StringInStr($a[$i], '.', 1, -1))
    $ver = StringTrimLeft($a[$i], StringInStr($a[$i], '.', 1, -1))
    If $oFileVer.Exists($name) Then
    If $ver > $oFileVer.Item($name) Then $oFileVer.Item($name) = $ver
    Else
    $oFileVer.Add($name, $ver)
    EndIf
    Next
    If $oFileVer.Count > 0 Then
    Local $aOut[$oFileVer.Count]
    Local $strKey, $colKeys = $oFileVer.Keys, $i = 0
    For $strKey In $colKeys
    $aOut[$i] = $strKey & $oFileVer.Item($strKey)
    $i += 1
    Next
    Return $aOut
    EndIf
    EndFunc

    [/autoit]
  • Verzeichnis bereinigen, letzte Version/Datei behalten

    • BugFix
    • 18. Oktober 2011 um 22:31

    Dann sollte das hier passen:

    Spoiler anzeigen
    [autoit]

    ; == das hier simuliert ein mit _FileReadToArray eingelesenes Verzeichnis
    Local $aRead[12] = [11, _
    '7777_0000.asm.1', _
    '7777_0000.asm.2', _
    '7777_0000.asm.3', _
    '7777_0016.prt.29', _
    '7777_0016.prt.30', _
    '7777_0016.prt.31', _
    '7777_0016.drw.55', _
    '7777_0016.drw.56', _
    '7777_0016.drw.57', _
    '7777_0017.drw.11', _
    '7777_0018.drw.12']

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

    $aRet = _GetHighestVer($aRead)
    For $i = 0 To UBound($aRet) -1
    ConsoleWrite($aRet[$i] & @CRLF)
    Next

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

    Func _GetHighestVer(ByRef $a)
    Local $aType[3] = ['asm','prt','drw'], $ver
    Local $oFileVer = ObjCreate('Scripting.Dictionary')
    For $i = 1 To $a[0]
    For $j = 0 To 2
    If StringInStr($a[$i], $aType[$j]) Then
    $name = StringLeft($a[$i], StringInStr($a[$i], '.', 1, -1))
    $ver = StringTrimLeft($a[$i], StringInStr($a[$i], '.', 1, -1))
    If $oFileVer.Exists($name) Then
    If $ver > $oFileVer.Item($name) Then $oFileVer.Item($name) = $ver
    Else
    $oFileVer.Add($name, $ver)
    EndIf
    ExitLoop
    EndIf
    Next
    Next
    If $oFileVer.Count > 0 Then
    Local $aOut[$oFileVer.Count]
    Local $strKey, $colKeys = $oFileVer.Keys, $i = 0
    For $strKey In $colKeys
    $aOut[$i] = $strKey & $oFileVer.Item($strKey)
    $i += 1
    Next
    Return $aOut
    EndIf
    EndFunc

    [/autoit]
  • Verzeichnis bereinigen, letzte Version/Datei behalten

    • BugFix
    • 18. Oktober 2011 um 21:03

    Das stellt sicher kein großes Problem dar und ist in AutoIt lösbar. Aber um dir helfen zu können, solltest du angeben, welche Dateien denn übrig bleiben sollen, bzw. welches die Löschkriterien sind.

  • DriveGetType funktioniert unter WinXP, aber nicht unter Win7

    • BugFix
    • 18. Oktober 2011 um 16:59
    Zitat von RoWi

    was ist UAC?


    User Account Control (Benutzkontensteuerung)
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    Dateien

    UAC.JPG 68,52 kB – 0 Downloads
  • _Self() -- Speichern/Verarbeiten eines Ausdrucks als Selbstbezug

    • BugFix
    • 18. Oktober 2011 um 16:54

    Ich kanns einfach nicht lassen - immer wieder überkommen mich neue Ideen. :D

    Also, grundsätzlich kann man das Folgende natürlich mit einer Globalen Variablen im Skript genausogut erledigen.
    Folgende Überlegung:
    - eine Berechnung liefert einen Wert
    - diesen möchte ich mehrfach nutzen
    - in Vergleichsoperationen und/oder Rechenoperationen
    Nun kann ich den Wert natürlich in eine Globale Variable packen und dann skriptweit damit weitermachen.
    Anstelle der Zuweisung zu einer Variablen rufe ich nun die Funktion _Self() auf.
    Der Name ist gut zu merken ;) und das Speichern erfolgt in einer Lokalen Variable.

    Und so sieht es aus:

    Spoiler anzeigen
    [autoit]

    Local $a = 100, $b = 200, $c = 3

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

    _Self($a + $b) ; == initialisieren
    ConsoleWrite('Wert von _self ' & _Self('', 'val') & @CRLF)
    ConsoleWrite('_self < $c ' & _Self($c, '<') & @CRLF)
    ConsoleWrite('_self > $c ' & _Self($c, '>') & @CRLF)
    ConsoleWrite('_self / $c ' & _Self($c, '/') & @CRLF)
    ConsoleWrite('_self * $c ' & _Self($c, '*') & @CRLF)
    ConsoleWrite('_self + $c ' & _Self($c, '+') & @CRLF)
    ConsoleWrite('_self - $c ' & _Self($c, '-') & @CRLF)
    ConsoleWrite('Quadratwurzel aus _self ' & _Self($c, '1/2') & @CRLF)
    ConsoleWrite('Kubikwurzel aus _self ' & _Self($c, '1/3') & @CRLF)
    ConsoleWrite('_self hoch $c ' & _Self($c, '^') & @CRLF)
    _Self(0, 0) ; == entladen (oder mit neuem Wert initialisieren)

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

    ;===============================================================================
    ; Function Name....: _Self
    ; Description......: Statisches Speichern eines numerischen Wertes, Vergleichs- u. Rechenoperationen mehrfach damit
    ; Parameter(s).....: $iVar Beim Initialisieren der zu speichernde Wert, sonst der Wert für die Operation mit dem hinterlegten Wert
    ; $sOp String der festlegt, welche Operation ausgeführt wird
    ; -1 übergebenen Wert initialisieren (Standard)
    ; 0 Wert entladen
    ; '< > = <> <= >=' Vergleichsoperationen ausführen
    ; '+ - * / ^' Rechenoperationen ausführen
    ; '1/2 1/3' Quadrat-, Kubikwurzel ziehen
    ; 'val' gespeicherten Wert zurückgeben
    ; Return Value(s)..: Ergebnis der Operation, gespeicherter Wert, (bei $sOp -1 u. 0 -- nichts)
    ; Author(s)........: BugFix ( [email='bugfix@autoit.de'][/email] )
    ;===============================================================================
    Func _Self($iVar, $sOp=-1)
    Local Static $iSelf =''
    Switch String($sOp)
    Case '-1' ; == $iVar als Basiswert initialisieren
    $iSelf = $iVar
    Case '0' ; == Basiswert entladen
    $iSelf = ''
    Case '<', '>', '=', '<>', '<=', '>=' ; == Vergleichsoperation ausführen
    Return Execute(String($iSelf & ' ' & $sOP & ' ' & $iVar))
    Case '+','-', '*', '/', '^' ; == Rechenoperationen ausführen
    Return Execute('(' & $iSelf & ') ' & $sOp & ' (' & $iVar & ')')
    Case '1/2', '1/3' ; == Quadrat-, Kubikwurzel
    Return Execute('(' & $iSelf & ') ^ (' & $sOp & ')')
    Case 'val'
    Return $iSelf
    EndSwitch
    EndFunc ;==>_Self

    [/autoit]


    Inwiefern es tatsächlich sinnvoll einzusetzen ist, mag jeder für sich bewerten. Aber mir ist das grad so durch den Kopf gerauscht und ihr müßt es ertragen. :rofl:

  • Error in Expression

    • BugFix
    • 18. Oktober 2011 um 13:45

    Du bist hier in AutoIt, "&&" gibt es hier nicht.
    Das logische und ist: AND und du kannst den Wert nicht fortlaufend vergleichen, sondern mußt diesen explizit jedesmal anführen, z.B. so:

    [autoit]

    If ($a > $b) AND ($a < $x) AND ($a > $y) Then

    [/autoit]
  • Datenbank Oscar (Listview)

    • BugFix
    • 18. Oktober 2011 um 13:37
    Zitat von Ilse

    .verstehe noch nicht so ganz was angepasst werden muß


    Genau das, was dir die Fehlermeldung sagt. Ich habe dort einfach Variablen erfunden mit verständlichem Namen, damit du verstehst, wozu sie zu verwenden sind. Natürlich mußt du diese im Skript noch deklarieren - warum tust du es nicht, wenn die Fehlermeldung dir sagt, dass die (neu hinzugefügte) Variable nicht deklariert ist?
    - Vergleich die von mir eingesetzten ID/Handle, ob es auch das richtige Listview betrifft. Gegebenenfalls halt anpassen.
    - Setze für $subItem den korrekten SpaltenIndex ein.
    LIES meine Kommentare - da stand das bereits drin.

  • Mausbewegungsrichtung ändern

    • BugFix
    • 18. Oktober 2011 um 12:59
    Zitat von chip

    BugFix Das soll jetzt nicht beleidigend sein, aber hast du verkrüppelte Hände wenn die so abgewinkelt zum Unterarm sind?


    Nein - aber große Hände - und die Maus paßt ergonomisch halt in die Handfläche am Besten diagonal. Sollte das bei dir nicht der Fall sein, wäre es interessant zu wissen, ob deine Anatomie von der menschlichen abweicht (Position Mittelhandknochen).

  • Datenbank Oscar (Listview)

    • BugFix
    • 18. Oktober 2011 um 12:56
    Zitat von Ilse

    erhalte aber Fehler.


    Verrätst du auch welcher Fehler kommt?
    Hast du die Listviewbezeichnungen korrekt angepaßt? Ich sehe auch nicht, dass du versuchst den ausgelesenen Wert (Variable $inhalt) weiterzuverarbeiten oder zumindest zum Test in die Konsole zu schreiben.
    Ich habe dir den Weg gezeigt - anpassen an deine Skripterfordernisse mußt du es schon selbst.

  • Datenbank Oscar (Listview)

    • BugFix
    • 18. Oktober 2011 um 12:34

    Möglichkeiten gibt es mehrere, aber ich denke am einfachsten ist folgende Variante (einfach in die Event-Abfrage-Schleife einfügen und anpassen):

    [autoit]

    Case $GUI_EVENT_PRIMARYUP ; == primäre Maustaste losgelassen
    $aCursor = GUIGetCursorInfo()
    If $aCursor[4] = $hSearchListView Then ; == ID des Listview in das geklickt wurde
    $index = _GUICtrlListView_GetSelectedIndices($hSearchLVHandle)
    If $index > -1 Then
    ; == den inhalt auslesen und weiterverarbeiten
    $inhalt = _GUICtrlListView_GetItemText($hSearchLVHandle, $index, $subItem) ; $subItem - die Spalte, deren Wert du willst (0, 1 ...)
    EndIf
    EndIf

    [/autoit]
  • DriveGetType funktioniert unter WinXP, aber nicht unter Win7

    • BugFix
    • 18. Oktober 2011 um 12:09

    Auf meinem Win7 Pro 32Bit läuft es anstandslos. Wie sieht es mit UAC aus? Ist das aktiv? (Ist bei mir als erstes rausgeflogen, schließlich muß ich am PC arbeiten und nicht dauernd bestätigen müssen, dass das, was ich gerade aufrufe auch das ist, was ich gerade tun will :pinch: ).

  • Mausbewegungsrichtung ändern

    • BugFix
    • 18. Oktober 2011 um 12:02

    Ich denke, ich verschaffe mal etwas Klarheit,mit einem kleinen Bildchen.
    Ich kenne keine Maus, die tatsächlich ergonomisch ist. Ich hatte auch schon überlegt, die Maus mal in ein der Handform angepassten Gehäuse unterzubringen. Dadurch kippt aber die X/Y-Achse.
    Links im Bild die standardmäßige, nicht der Handform angepaßte Mausführung - rechts, wie es eigentlich sinnvoll wäre.

    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    Das hat absolut nichts mit Spaßprogramm zu tun, sondern ist ein Problem für alle, die keine Klein-Mädchen-Hände haben. ;)

    Dateien

    maus.jpg 23,91 kB – 0 Downloads
  • Auto ID erzeugen

    • BugFix
    • 18. Oktober 2011 um 11:44
    Zitat von Schnitzel

    Statt deiner Stringrightbastelei wäre übrigens Stringformat die "normale" Methode gewesen


    Also ich würde StringFormat nicht als 'normale' Methode bezeichnen. Aufgrund der nicht gerade angenehmen Syntax setze ich es z.B. nur ein, wenn nicht irgendwie vermeidbar. Btw. ist die "Stringbastelei" auch die schnellere Methode. ;)

  • Schachprogramm Fritz7 Schnellstart/Beenden Script

    • BugFix
    • 17. Oktober 2011 um 17:31
    Zitat von General Kaboom

    gewöhne dir doch an, deinen Code IMMER zu kommentieren


    Ich habe bereits mehrfach diese Bemerkung von dir gesehen. Grundsätzlich richtig, jedoch sollte man so etwas nur anmahnen, wo es notwendig ist. In einem Skript, dass sich in all seinen Befehlen eindeutig selbst erklärt, ist dieser Hinweis fehl am Platz.
    Solltest du Probleme haben, das Skript zu verstehen, bist du möglicherweise noch nicht erfahren genug dabei Hilfe zu leisten. ;)

  • SQLite 2 Datenbanken vergleichen

    • BugFix
    • 17. Oktober 2011 um 17:23

    Du kannst doch deine Bedingung an "INSERT OR REPLACE" mit "WHERE" anhängen. In deinem Fall also den TimeStamp vergleichen in der Klausel.

  • DriveGetType funktioniert unter WinXP, aber nicht unter Win7

    • BugFix
    • 17. Oktober 2011 um 17:02
    Zitat von RoWi

    "Net use" aus AutoIt aufrufen oder wie?


    Genau, und die Rückgabe dann auswerten:

    [autoit]

    #include <Constants.au3>
    Local $foo = Run(@ComSpec & " /c " & 'net use', @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
    Local $data
    While True
    $data &= StdoutRead($foo)
    If @error Then ExitLoop
    Sleep(25)
    WEnd
    ConsoleWrite($data & @CRLF)

    [/autoit]
  • DriveGetType funktioniert unter WinXP, aber nicht unter Win7

    • BugFix
    • 17. Oktober 2011 um 16:27

    Wenn es damit nicht klappt, frag doch die Netzlaufwerkverbindungen mit "net use" ab.

  • über autoit alle mappen in excel datei markieren und als pdf drucken

    • BugFix
    • 17. Oktober 2011 um 12:38
    Zitat von PeterPan2

    For $i = 1 To $oExcel^ ERROR


    Das heißt, dass das Objekt " $oExcel" nicht existiert.
    Gehe so vor:

    [autoit]

    $oExcel = _ExcelBookOpen($sPath)
    If Not IsObj($oExcel) Then ConsoleWrite('Fehler beim Öffnen Datei!' & @CRLF)

    [/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™