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

Beiträge von BigRox

  • SciTE - kontinuierlicher Kommentarmodus für AutoIt (auch für SciTE-RU)

    • BigRox
    • 18. März 2012 um 12:45

    Hallo BugFix,

    da habe ich wohl etwas gepennt :D.

    Aber es funktioniert noch nicht ganz.

    In meiner "SciTEUser.properties"-Datei steht nun das hier:

    Spoiler anzeigen
    Code
    ContinuousComment.LFpos.*.au3=170
    ContinuousComment.Chars.*.au3=;
    ContinuousComment.BreakCharsLast.*.au3=˜ ˜ ›
    ContinuousComment.BreakCharsNext.*.au3=›
    ContinuousComment.NewLine.WithEnter.Enable.*.au3=1
    
    
    # 36 Comment Continuous
    command.name.36.*=Activate Comment Mode
    command.36.*=CommentModeActivate
    command.mode.36.*=subsystem:lua,savebefore:no
    command.shortcut.36.*=Ctrl+Shift+K
    Alles anzeigen

    Und in der Script-Datei steht nun das:

    Spoiler anzeigen
    Code
    CommentHitKey = EventClass:new(Common)
    
    
    
    
    
    
    local ext = props['FileExt']
    
    
    local lfPos = tonumber(props['ContinuousComment.LFpos.*.' .. ext])
    
    
    local charComm = props['ContinuousComment.Chars.*.' .. ext]..' '
    
    
    local charBreak1 = props['ContinuousComment.BreakCharsLast.*.' .. ext]
    
    
    local charBreak2 = props['ContinuousComment.BreakCharsNext.*.' .. ext]
    
    
    local fNewLine = false
    
    
    if tonumber(props['ContinuousComment.NewLine.WithEnter.Enable.*.' .. ext]) == 1 then fNewLine = true end
    
    
    
    
    
    
    local fCommentModeOn, fNext, fIsNewLine, fIsEnter = false, false, false, false
    
    
    local lastLine, column, col
    
    
    
    
    
    
    local getSpaces = function()
    
    
    	col = editor.Column[editor.CurrentPos]
    
    
    	local s = ''
    
    
    	if col < column then
    
    
    s = string.rep(' ', column - col)
    
    
    	end
    
    
    	return s
    
    
    end
    
    
    
    
    
    
    local isLFpos = function()
    
    
    	local pos = editor.Column[editor.CurrentPos]
    
    
    	if pos >= lfPos then
    
    
    return true
    
    
    	else
    
    
    return false
    
    
    	end
    
    
    end
    
    
    
    
    
    
    local ContinuousComment = function()
    
    
    	local autoBreak, w = '', ''
    
    
    	if not fIsNewLine then
    
    
    local pos = editor.Column[editor.CurrentPos]
    
    
    if pos > lfPos then
    
    
    editor:WordLeftExtend()
    
    
    w = editor:GetSelText()
    
    
    editor:ReplaceSel('')
    
    
    end
    
    
    editor:GotoLine(editor:LineFromPosition(editor.CurrentPos) +1)
    
    
    if charBreak2:len() > 0 then autoBreak = charBreak2..' ' end
    
    
    	else
    
    
    fIsNewLine = false
    
    
    	end
    
    
    	local strAdd = ' '
    
    
    	editor:LineEnd()
    
    
    	strAdd = getSpaces() or strAdd
    
    
    	editor:InsertText(editor.CurrentPos, strAdd..charComm..autoBreak..w)
    
    
    	editor:LineEnd()
    
    
    end
    
    
    
    
    
    
    function CommentHitKey:OnKey(_keycode, _shift)
    
    
    local Keycode = _keycode or nil -- Sinnfrei, nur zum Abbremsen <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    
    
    	if fCommentModeOn then -- fortsetzender Kommentarmodus ist aktiv
    
    
    local fBreak = isLFpos()
    
    
    if fIsEnter then
    
    
    fIsEnter = false
    
    
    local s, e = getSpaces(), ''
    
    
    if charBreak2:len() > 0 then e = charBreak2..' ' end
    
    
    editor:InsertText(editor.CurrentPos, s..charComm..e)
    
    
    editor:LineEnd()
    
    
    end
    
    
    if _keycode == 13 then
    
    
    fIsEnter = true
    
    
    editor:InsertText(editor.CurrentPos, ' '..charBreak1)
    
    
    editor:LineEnd()
    
    
    elseif _keycode == 32 and fBreak then -- Leerzeichen u. Position für Zeilenwechsel erreicht (automatischer Zeilenwechsel)
    
    
    fNext = true -- Marker neue Zeile
    
    
    elseif _keycode == 40 then -- Pfeil_ab (manueller Zeilenwechsel)
    
    
    fNext = true fIsNewLine = true -- Marker neue Zeile und Marker in-neuer-Zeile
    
    
    elseif fNext then -- in neuer Zeile ==> Kommentarzeichen einfügen
    
    
    fNext = false
    
    
    if not fIsNewLine then -- bei automatischem Wechsel (wenn in den properties ein Umbruchsymbol definiert):
    
    
    editor:InsertText(editor.CurrentPos, charBreak1) -- am Ende Umbruchsymbol aus den properties anhängen
    
    
    end
    
    
    ContinuousComment()
    
    
    end
    
    
    	end
    
    
    	return nil
    
    
    end
    
    
    
    
    
    
    function CommentModeActivate()
    
    
    	if not fCommentModeOn then
    
    
    editor:LineEnd()
    
    
    column = editor.Column[editor.CurrentPos]
    
    
    editor.Cursor = 8 -- Cursor wechseln (Hand)
    
    
    editor:InsertText(editor.CurrentPos, charComm)
    
    
    editor:LineEnd()
    
    
    	else
    
    
    editor.Cursor = -1 -- Cursor zurück auf Standard
    
    
    	end
    
    
    	fCommentModeOn = not fCommentModeOn
    
    
    end
    Alles anzeigen

    Nun habe ich folgendes Verhalten:
    Der Kommentarmodus lässt sich nun mit dem Hotkey ein- und ausschalten.
    (nach dem ausschalten sollte der Cursor aber in der folgenden Zeile stehen, jetzt muss man immer zuerst ausschalten und dann erst Enter betätigen).
    Ein automatischer Zeilenwechsel findet jedoch nicht statt.
    Mit der Enter-Taste kann ich eine neue Kommentarzeile, mit den vorgegebenen Zeichen, beginnen.
    Aber wenn ich einen Manuellen Zeilenwechsel mit der Pfeilab-Taste erzeugen will, geschieht entweder das hier:
    ; gggggggggggggggggggg
    ggggggggggggggg

    oder es geschieht das:
    ; gggggggggggggggggggg; gggggggggggggggggggg; gggggggggggggggggggg

    Das macht die Funktion wie sie will.
    Dabei ist es egal ob man dies hier:
    local Keycode = _keycode or nil -- Sinnfrei, nur zum Abbremsen <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    ins Script einfügt oder nicht.

    Da ist wohl noch etwas anderes falsch.

    MfG:

    BigRox

    Edit BugFix: Leerzeilen gekillt und Tags gesetzt.

  • SciTE - kontinuierlicher Kommentarmodus für AutoIt (auch für SciTE-RU)

    • BigRox
    • 17. März 2012 um 17:46

    Hallo BugFix,
    ich habe da ein Problem mit dem LUA-Script.
    Zuerst mal meine "SciteUser.properties"-Datei:

    Spoiler anzeigen


    ContinuousComment.LFpos.*.au3=170
    ContinuousComment.Chars.*.au3=;
    ContinuousComment.BreakCharsLast.*.au3=˜ ˜ ›
    ContinuousComment.BreakCharsNext.*.au3=›
    ContinuousComment.NewLine.WithEnter.Enable.*.au3'

    # 36 Comment Continuous
    command.name.36.*=Activate Comment Mode
    command.36.*=CommentModeActivate
    command.mode.36.*=subsystem:lua,savebefore:no
    command.shortcut.36.*=Ctrl+Shift+K

    Das Script habe ich auch an die Richtige Stelle kopiert und in der Datei steht:
    LoadLuaFile("ContinuousComments.lua")
    dies an letzter Stelle (also nach EventClass:BeginEvents()).

    In dem LUA-Script habe ich dies:

    Spoiler anzeigen

    function CommentHitKey:OnKey(_keycode)
    local Keycode = _keycode or nil -- Sinnfrei, nur zum Abbremsen <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    if fCommentModeOn then -- fortsetzender Kommentarmodus ist aktiv
    local fBreak = isLFpos()
    if _keycode == 32 and fBreak then -- Leerzeichen u. Position für Zeilenwechsel erreicht (automatischer Zeilenwechsel)
    fNext = true -- Marker neue Zeile
    elseif _keycode == 40 then -- Pfeil_ab (manueller Zeilenwechsel)
    fNext = true fIsNewLine = true -- Marker neue Zeile und Marker in-neuer-Zeile
    elseif fNext then -- in neuer Zeile ==> Kommentarzeichen einfügen
    fNext = false
    if not fIsNewLine then -- bei automatischem Wechsel (wenn in den properties ein Umbruchsymbol definiert):
    editor:InsertText(editor.CurrentPos, charBreak1) -- am Ende Umbruchsymbol aus den properties anhängen
    end
    ContinuousComment()
    end
    end
    return nil
    end


    (die Ergänzung die in deinem ersten Post steht
    eingefügt (die alten Programmzeilen habe ich vorher gelöscht).

    Nun das Problem:
    Wenn ich in einem AutoIt-Script den Kommentarmodus mit dem Hotkey einschalte, so wird ein ; gefolgt von einem Leerzeichen eingefügt und das Cursorsymbol ändert sich richtig.
    Aber es erfolgt kein automatischer Zeilenumbruch nach den vorgegebenen 170 Zeichen.
    Auch wenn ich einen manuellen Zeilenumbruch, mit der Pfeiltaste einfüge, geschieht nichts.
    Wenn ich die Eingabetaste betätige so wird zwar eine neue Zeile angefangen, aber es erscheint kein ; mehr am Zeilenanfang.
    Und der Kommentarmodus lässt sich auch nicht mit dem Hotkey beenden.
    (da sich der Modus aber damit einschalten lässt bedeutet das der Hotkey auch erkannt wird).

    Ich habe auch einmal das Zeichen für den Zeilenanfang (die Zeile ContinuousComment.Chars.*.au3=;
    ) in der SciTEUser.properties"-Datei
    geändert um festzustellen ob die Einträge überhaupt ausgewertet werden.
    Das funktionierte aber.
    Nur die anderen Einträge scheinen keine Auswirkung zu haben.

    Kann es etwa sein dass mein Rechner (Pentium III 500) zu langsam ist ?
    Achja, ich verwende die AutoIt-Version 3.3.8.1 und die SciTE-Version 2.27 (die an AutoIt angepasste Version).

    MfG:
    BigRox

  • SciTE - Variablen- und Funktions- Tipp (CallTipp oder Konsolenausgabe) per HotKey od. Kontextmenü, Suche nach Variable [v0.11]

    • BigRox
    • 13. März 2012 um 16:02

    Hallo,
    ich glaube, jetzt habe ich den Fehler gefunden.

    In der Zeile:
    command.shortcut.37.*.au3=Ctrl+Alt+V
    hatte ich ALT stehen und nicht Alt (Schreibweise beachten).
    Wann sich der Fehler da rein gemogelt hat weiß ich aber nicht, ich habe doch alles mit Copy/Paste gemacht (Prinzip Guttenberg o.ä. :rofl:)

    Nun wird auch dieser Hotkey automatisch im Menü "SciTE | Extras" angezeigt.
    Dafür muss man also nichts am Eintrag hinter "command.name" anfügen.

    Jetzt kann man das LUA-Script auch mit dem selbstdefinierten Hotkey aufrufen.
    Aber ohne den Eintrag "command.name" geht nichts.

    MfG:
    BigRox

  • SciTE - Variablen- und Funktions- Tipp (CallTipp oder Konsolenausgabe) per HotKey od. Kontextmenü, Suche nach Variable [v0.11]

    • BigRox
    • 12. März 2012 um 16:31

    Hallo BugFix,
    kurze Antwort:
    Ja die anderen Hotkeys funktionieren.

    Wenn es nur um die Anzeige des Hotkeys im Menü ginge, so wäre dies ja sehr einfach zu lösen.
    Aber das Script lässt sich ja nicht mit dem Hokey aufrufen.
    Wenn man den betätigt geschieht absolut nichts, genauso als wenn man garnichts machen würde. Der angegebene Hotkey wird wohl nicht erkannt.

    MfG:
    BigRox

  • SciTE - Variablen- und Funktions- Tipp (CallTipp oder Konsolenausgabe) per HotKey od. Kontextmenü, Suche nach Variable [v0.11]

    • BigRox
    • 12. März 2012 um 14:51

    Hallo BugFix,
    sofort ausprobiert.
    Ich habe mir den Hotkey von "Insert Bookmarked(Lines)" Ctrl+Alt+B "ausgeliehen".

    Folge:
    Der Hotkey wird zwar hinter "Insert Bookmarked(Lines)" nicht mehr angezeigt,
    aber er wird auch nicht hinter dem Eintrag "Variablen Tipp" angezeigt.
    Auch das aufrufen des Scripts mit diesem Hotkey funktioniert nicht.

    MfG:
    BigRox

  • SciTE - Variablen- und Funktions- Tipp (CallTipp oder Konsolenausgabe) per HotKey od. Kontextmenü, Suche nach Variable [v0.11]

    • BigRox
    • 12. März 2012 um 13:56

    Hallo BugFix,

    ich habe das eben ausprobiert aber es funktioniert nur teilweise.

    Im Menü "SciTE | Extras" wir das Script jetzt zwar angezeigt und der Variablen Tipp erscheint auch wenn man auf den Eintrag klickt, aber der zugewiesene Hotkey wird nicht angezeigt.

    Auch wenn man nur diesen zugewiesenen Hotkey betätigt geschieht nichts.
    Ich habe auch einmal einen anderen Hotkey zugewiesen,

    Ergebniss: es geht auch nicht.


    Hier einmal der Inhalt der SciTEUser.properties- Datei:

    Spoiler anzeigen

    # 37 Variablen Tipp

    command.name.37.*.au3=Variablen Tipp

    command.37.*.au3=dofile $(SciteDefaultHome)/Lua/VarGetTipp.lua

    command.mode.37.*.au3=subsystem:lua,savebefore:no

    command.shortcut.37.*.au3=Ctrl+AlT+V

    Variable.Tipp.CallTip.*.au3=1

    Das Script funktioniert anscheinend, aber das Aufrufen mit Hotkey ist noch ein kleines Problemchen.


    MfG:

    BigRox

  • SciTE - Variablen- und Funktions- Tipp (CallTipp oder Konsolenausgabe) per HotKey od. Kontextmenü, Suche nach Variable [v0.11]

    • BigRox
    • 12. März 2012 um 11:50

    Hallo BugFix,
    ich habe eben einmal nachgesehen welche Windows-Version ich genau verwende:

    Es ist die Version "2600.xpsp_sp3_qfe.111025-1623"

    Außerdem habe ich eben einmal den Hotkey bei dem LUA-Script von Raupi geändert, um festzustellen ob sich da der Hotkey ändern lässt.

    Das mit dem Hotkey 'umrouten' geht da ohne Probleme.

    Vielleicht hilft dir das ein wenig bei der Fehlersuche.

    MfG:
    BigRox

  • SciTE - Variablen- und Funktions- Tipp (CallTipp oder Konsolenausgabe) per HotKey od. Kontextmenü, Suche nach Variable [v0.11]

    • BigRox
    • 10. März 2012 um 18:54

    Hallo BugFix,

    ich habe jetzt mal alles von AuotIt deinstalliert und anschließend alles neuinstalliert.


    AutoIt-Version 3.3.8.1

    SciTE-Version 2.27


    Das LUA-Script von Raupi geht da auch, aber dein LUA-Script geht immer noch nicht.


    Ich habe keinerlei Einstellungen von AutoIt oder SciTE verändert, alle Einstellungen habe ich so übernommen wie sie bei der Installation vorgegeben sind.

    Muss man da vielleicht noch etwas ändern ?


    MfG:

    BigRox

    Edit vom 11.3.2012
    Ich habe jetzt Windows XP Pro SP3 komplett neuinstalliert.
    Auf diesem Betriebssystem habe ich nur Autoit 3.3.8.1 und SciTE 2.27 (die an Autoit angepasste Version) installiert.

    Ergebnis, wie gehabt, es geht nicht.
    Läuft das Script eventuell nicht unter Windows XP ?
    Wie kann man eigentlich feststellen, ob das LUA-Script überhaupt aufgerufen wird ?
    (bei AutoIt z.B. "MsgBox(0, "", "Hurra") einfügen).

    MfG:
    BigRox

  • SciTE - Variablen- und Funktions- Tipp (CallTipp oder Konsolenausgabe) per HotKey od. Kontextmenü, Suche nach Variable [v0.11]

    • BigRox
    • 10. März 2012 um 13:44

    Hallo BugFix,
    ich habe es jetzt mit der neuen Version deines Scriptes (v0.7) getestet.
    Den properties-Eintrag für Region habe ich auch entfernt.
    Ich habe auch einmal den Hotkey zum aufrufen geändert, um eine eventuelle Doppelbelegung auszuschließen).

    Ergebnis:
    Es geht immer noch nicht.
    (auch das mit -1 geht nicht)

    MfG:
    BigRox

  • SciTE - Variablen- und Funktions- Tipp (CallTipp oder Konsolenausgabe) per HotKey od. Kontextmenü, Suche nach Variable [v0.11]

    • BigRox
    • 9. März 2012 um 12:47

    Hallo BugFix,
    das:

    Zitat von BugFix

    Das in den Klammern darf NICHT mit in den properties stehen, das war nur eine Erläuterung der Parameter. Also nur 0 oder 1 hinter dem =


    habe ich eben gemacht.
    Ergebnis:
    Es geht immer noch nichts.
    Da ist also noch irgend etwas anderes falsch.

    MfG:
    BigRox

  • SciTE - Variablen- und Funktions- Tipp (CallTipp oder Konsolenausgabe) per HotKey od. Kontextmenü, Suche nach Variable [v0.11]

    • BigRox
    • 8. März 2012 um 18:29

    Hallo BugFix,
    ich habe dein LUA-Script einmal ausprobiert.
    Leider ohne Erfolg.
    Das Script habe ich ins ins LUA-Verzeichnis kopiert ("C:\Programme\AutoIt3\SciTE\LUA\VarGetTipp.lua")
    In der Datei "ScoiTEUser.properties" habe ich folgendes eingetragen:

    Spoiler anzeigen


    command.37.*.au3=dofile $(SciteDefaultHome)/Lua/VarGetTipp.lua
    command.mode.37.*.au3=subsystem:lua,savebefore:no
    command.shortcut.37.*.au3=Ctrl+Alt+V
    Variable.Tipp.Region.*.au3=1 (1=in Region, 0=mit Tag)
    Variable.Tipp.CallTip.*.au3=1 (1=als CallTip, 0=Ausgabe in Konsole)

    Zum Testen verwende ich dieses (zugegeben sehr einfache) Script:

    [autoit]


    ; -----------------------------------------------------------------------------------------------------------------------------
    ; Script Funktion: Testdatei für AutoIt-Scripte Version: 3.3.8.1, Script Autor: BigRox
    ; -----------------------------------------------------------------------------------------------------------------------------

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

    #region - Variablen-Tipp
    ; $Variable1 Das ist der Tipp für diese Variable (1)
    ; $Variable2 Das ist der Tipp für diese Variable (2)
    ; $Variable3 Das ist der Tipp für diese Variable (3)
    #endregion

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

    $Variable1

    [/autoit]


    Aber wenn ich den Cursor auf die Variable setze und den Hotkey betätige, geschieht nichts.

    Ich habe auch einmal das LUA-Script von "InsertFunctionHeader.lua" von Raupi ausprobiert und das funktioniert einwandfrei bei mir.
    Also funktioniert das mit den LUA-Scripten anscheinend.
    Aber irgendetwas habe ich dann doch wohl bei deinem Script falsch gemacht.

    MfG:
    BigRox

  • Ansteuern von LPT bzw. COM Schnittstelle?

    • BigRox
    • 30. Oktober 2011 um 11:49

    lwl2011Bochum !

    Ich nehme dafür VB6, da es dafür viele Beschreibungen der dlls usw. gibt.
    Delphi soll sogar noch schneller sein (dafür gibt es auch einiges an Bechreibungen usw.).
    Aber die dlls müsste eigentlich auch mit AutoIt gehen.

    Für den Parallelport nehme ich die "inpout32.dll"
    und für die Serielle-Schnittstelle die "ELEXS.dll"

    Google mal danach, ich schätze, da findest du einiges.

    MfG:
    BigRox

  • Frage zu FindFileFirst

    • BigRox
    • 22. Oktober 2011 um 18:19

    Hallo AsperinJunkie !

    Danke für deine Hilfe :thumbup:

    Deine Tipps haben mir sehr geholfen.

    MfG:
    BigRox

  • Frage zu FindFileFirst

    • BigRox
    • 21. Oktober 2011 um 14:44

    Hallo AsperinJunkie !
    Zum erklären warum ich die FileFind…-Funktionen überhaupt ausprobiert habe.

    Ich habe mir ein Installationsscript für das Programm „Defraggler“ geschrieben.
    Das Script funktioniert auch gut, nur wenn sich die Programmversion von Defraggler ändert muss ich auch das Script entsprechend ändern, da der Namen der exe-Datei auch die Versionsnummer enthält (die 207 im Namen).

    Nun probiere ich schon seit einiger Zeit diese „etwas unschöne“ Sache durch den Einsatz eines regulären Ausdrucks im „Run“-Befehl zu ändern.
    (So ähnlich wie bei dem Fenstertitel mit „RegExpTitel()“).
    Da mir dies aber bis heute nicht gelungen ist, habe ich es einmal mit den FindFile…-Funktionen ausprobiert.
    (Mit Hilfe von Wildcards ( Run($Pfad_Install_Programm & "\ dfsetup*.exe“...) ) geht das anscheinend auch nicht).
    Ich muss ja nach einem Dateinamen mit Wildcard suchen (dfsetup*.exe) und dann von der Funktion den richtigen Dateinamen (dfsetup207.exe) zurückgegeben bekommen um diesen dann im Run-Befehl zu verwenden.

    Mit den FindFile…-Funktionen funktioniert das auch ganz gut, nur wenn da gar keine Setupdatei in dem Ordner ist, müsste eigentlich eine Fehlermeldung erscheinen wenn man @error abfragt. In diesem Fall muss man aber den Rückgabewert auf den Wert -1 testen.

    Hier einmal ein erster Script-Entwurf:

    Spoiler anzeigen


    ; Einigen Variablen Werte zuweisen.
    $Install_Pfad = @ProgramFilesDir & "\Sonstige\Defraggler"
    $Pfad_Install_Programm = @HomeDrive & "\Defraggler\Programm"

    $Such_Handle = FileFindFirstFile($Pfad_Install_Programm & "\dfsetup*.exe")
    If @error Or $Such_Handle = -1 Then
    MsgBox(262192, "! ! ! F E H L E R ! ! !", 'Beim ausführen der "FindFileFirst()"-Funktion ist ein Fehler aufgetreten !')
    EndIf

    $Datei = FileFindNextFile($Such_Handle)
    FileClose($Such_Handle)

    ; Das Installationsprogramm von "Defraggler", mit Silent Schalter, aufrufen.
    Run($Pfad_Install_Programm & "\" & $Datei & " /D=" & $Install_Pfad)

    ; Funktion zum warten auf das erste Fenster aufrufen.
    $Fenster_Text = "Deutsch" ; Der Text gilt auch für das folgende Fenster 1.

    ; massenweise Befehle bis Exit


    Das Script sieht zwar noch ziemlich chaotisch aus aber es funktioniert schon mal.
    Aber es funktioniert nur mit der Zeile:
    "If @error Or $Such_Handle = -1 Then"
    richtig.
    Nur mit "If @error Then" funktioniert es nicht wenn der Ordner keine dem Suchmuster entsprechenden Dateien enthält (aber existiert).


    MfG:
    BigRox

  • Frage zu FindFileFirst

    • BigRox
    • 21. Oktober 2011 um 11:43

    Hallo AsperinJunkie !
    Zuerst in meinem ersten Post habe ich den Funktionsnamen versehentlich falsch geschrieben, es musste natürlich "FileFindFirstFile" heißen.

    Ich habe das Problem eben nochmal mit diesen beiden Scripts ausprobiert.
    Den benötigten Ordner habe ich vorher manuell angelegt.
    Dieses Script funktioniert richtig.

    Spoiler anzeigen


    $search = FileFindFirstFile("C:\Test\*.*")
    ; Prüfen, ob die Suche erfolgreich war
    If @error Then
    MsgBox(0, "Fehler", "Es wurden keine Dateien/Verzeichnisse gefunden, die zu dem Suchmuster passen")
    Exit
    EndIf
    ; weitere unwichtige Befehle...
    ; Handle für Suche schliessen
    FileClose($search)

    Und diese Version funktioniert nicht:

    Spoiler anzeigen


    $search = FileFindFirstFile("C:\Test\dfsetup207.exe")
    ; Prüfen, ob die Suche erfolgreich war
    If @error Then
    MsgBox(0, "Fehler", "Es wurden keine Dateien/Verzeichnisse gefunden, die zu dem Suchmuster passen")
    Exit
    EndIf
    ; weitere unwichtige Befehle...
    ; Handle für Suche schliessen
    FileClose($search)

    Der Unterschied ist, bei der zweiten Version habe ich keine Wildcards angegeben sondern einen Dateinamen (dfsetup207.exe) der aber nicht im Ordner (C:\Test) existiert.
    Somit müsste dann auch die Fehlermeldung erscheinen, da ja dann auch keine Datei dem Suchmuster entspricht.
    (wenn man sogar eine andere Datei in den Ordner kopiert, die nicht dem Suchmuster entspricht, erscheint auch keine Fehlermeldung (die Fehlermeldung erscheint anscheinend nur bei dem "*.*"-Suchmuster)).
    Tut es aber nicht, dann gibt die Funktion nur -1 zurück, obwohl der Ordner ganz sicher auch existiert.
    Da ist die Hilfe aber wohl nicht sehr hilfreich (verwendete Hilfeversion die aktuelle Onlinehilfe).

    MfG:
    BigRox

  • Frage zu FindFileFirst

    • BigRox
    • 20. Oktober 2011 um 17:34

    Hallo !
    Ich habe ein kleines Problem mit der "FindFileFirst()"-Funktion.

    In der Hilfe dazu steht ja u.a.:
    Rückgabewert

    Fehler: Gibt -1 zurück, wenn ein Fehler aufgetreten ist. Wenn der Ordner leer ist, wird @error auf 1 gesetzt.

    Stimmt das eigentlich ?
    Wenn der angegebene Ordner leer ist gibt diese Funktion immer nur -1 zurück, aber @error wird nie gesetzt.


    Da scheint wohl irgendetwas nicht so ganz zu stimmen.
    Bevor ich da aber etwas in der Hilfe ändere wollte ich aber lieber mal nachfragen ob andere auch dieses Problem haben.

    MfG:
    BigRox

    P.S. Als Code zum testen verwende ich das Beispiel aus der deutschen Hilfe, nur schreibe ich darin anstelle von "If $search = -1 Then" "If @error Then"

  • API-Helper

    • BigRox
    • 6. September 2011 um 12:19

    Hallo zusammen,

    komisch bei mir funktioniert der Link absolut problemlos.

    (BS: Windows XP Pro. 32 Bit, Browser: Opera 10.50)

    MfG:
    BigRox

  • Frage zu WinGetState

    • BigRox
    • 12. März 2011 um 14:33
    Zitat von chip

    Aktiv bedeutet das das Fenster den Fokus hat.

    Das stimmt leider aber nicht immer.
    Z.B beim Setup zu MSDN-Library gibt es ein Fenster in dem man seinen Namen und die Organisation eintragen muss.
    Nach dem Klick auf OK erscheint ein weiteres Fenster zum bestätigen der Angaben. Dieses Fenster hat den Status 47(101111), ist also aktiv .
    Jedoch bleibt das erste Fenster (wo man seine Namen usw. eintragen muss) im Hintergrund sichtbar und dieses Fenster hat den Status 43(101011), es ist also auch noch aktiv, obwohl es keinen Fokus mehr hat.
    Den Unterschied macht da nur das "freigegeben" Bit 4
    Anscheinend bedeutet da "freigegeben" das dieses Fenster den Fokus hat (was bedeutet dann aber "aktiv") ?

    Oder legt MS mal wieder die Regeln etwas anders aus ?

    MfG:
    BigRox

  • Frage zu WinGetState

    • BigRox
    • 11. März 2011 um 11:57

    Hallo,
    ich habe da einige kleine Fragen zu dem "WinGetState"-Befehl und seinen Rückgabewerten.

    Wenn ich den Status eines Fensters mit dem Befehl abfrage, gibt der mir ja folgende Werte zum auswerten zurück.

    1 = Fenster existiert.
    2 = Fenster ist sichtbar.
    4 = Fenster ist freigegeben. 
    8 = Fenster ist aktiv.
    16 = Fenster ist minimiert.
    32 = Fenster ist maximiert.

    Die Bedeutung der Werte 1, 2, 16 und 32 ist mir klar, nur worin besteht eigentlich der Unterschied zwischen 4 und 8 ?
    Ein Fenster, in dem man etwas eingeben kann, müsste doch freigegeben und aktiv sein ?
    Anscheinend kann ein Fenster aber freigegeben und trotzdem inaktiv sein.

    Den Status eines Fensters kann ich doch z.B mit:

    [autoit]

    For $_Cntr = 0 To 20
    Sleep(1000)
    If Not BitAND(WinGetState($_Wnd_Title, $_Wnd_Text), 8) And Not BitAND(WinGetState($_Wnd_Title, $_Wnd_Text), 4) Then
    ExitLoop
    EndIf
    Next

    [/autoit]

    abfragen.
    Diese Programmzeilen müsste doch eigentlich zum gleichen Ergebnis führen:

    [autoit]

    For $_Cntr = 0 To 20
    Sleep(1000)
    If Not BitAND(WinGetState($_Wnd_Title, $_Wnd_Text), 12) Then
    ExitLoop
    EndIf
    Next

    [/autoit]

    Oder sehe ich da etwas total falsch, da die beiden Versionen zu unterschiedlichen Ergebnissen führen.
    (im zweiten Fall wird die Schleife anscheinend schneller durchlaufen, so als wenn der "Sleep(1000)"-Befehl einfach ignoriert würde. Der Schleifenzähler "$_Cntr" erreicht den Wert 20 in nur etwa fünf Sekunden).

    MfG:
    BigRox

  • Steckdose

    • BigRox
    • 28. Februar 2011 um 15:04

    Hallo Alina,
    meinst du etwa die Bastelanleitung in der letzten Chip (3/2011 Seite 126, 127) ?

    Da ging es nämlich auch um den Umbau eines handelsüblichen Dämerungsschalter damit der eine Steckdose schaltet wenn an einer FritzBox eine LED angeht.

    MfG:
    BigRox

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™