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

  • _String_Balanced --> Text zwischen korrespondierenden Klammern

    • BugFix
    • 7. August 2014 um 09:52

    James
    Die Verwendung von Regulären Ausdrücken unter Nutzung der Rekursion ist sicher ein interessanter Ansatz. Aber es ermöglicht immer nur Teillösungen.
    Dass dem so ist ergibt sich auch einfach aus der Tatsache, dass Klammerausdrücke keiner regulären Struktur unterliegen und somit RegExp hier auch schwer anzupassen ist.
    Mal 2 Bsp., was mit Rekursion geht:

    [autoit]


    ;== alles von erster öffnender bis zugehöriger schließender Klammer
    $string = "TEST('Klammer_1': ('Klammer_2': ('Inside_2': ('In_Inside_2': 'value'))),'key_1': ('Klammer_3': ('In_Klammer_3': 'value')),'key_2': ('Klammer_4': 'value')))ENDE"
    $pattern = '(\(([^()]++|(?-2))*\))'
    $a = StringRegExp($string, $pattern, 3)
    ConsoleWrite($a[0] & @CRLF)

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

    ;== die jeweils am tiefsten verschachtelte Klammer..
    ;== ..für alle Klammerausdrücke einer Ebene
    ;== im Muster sind in einer Ebene: 'Klammer_1', 'key_1', 'key_2'
    $pattern = '\((?:(?(R)\d++|[^()]*+)|(?R))*\)'
    $a= StringRegExp($string, $pattern, 3)
    _ArrayDisplay($a)

    [/autoit]


    Um aber z.B. alle korrespondierenden Klammerausdrücke zu erfassen, muss man dann vom Match die Klammern abschneiden und das Ergebnis wieder parsen usw.
    Ich denke vom internen Zeitaufwand geht das nicht schneller als meine Form der Iteration in der Funktion.

  • Focus auf anderes Control funktioniert, aber Text Cursor immer noch im alten Control

    • BugFix
    • 7. August 2014 um 08:16

    Wenn jetzt noch ein funktionsfähiges Skript dabei wäre, könnte man dir vllt. helfen... :whistling:
    Du bist doch lange genug dabei und weißt, dass wir uns kaum hinsetzen werden und deine Skriptumgebung nachbasteln um dein Problem zu lösen. ;)

  • _String_Balanced --> Text zwischen korrespondierenden Klammern

    • BugFix
    • 6. August 2014 um 15:04

    Ich finde es schade, dass AutoIt keine Möglichkeit bietet Strings zwischen öffnendem und schließendem Zeichen ausbalanciert auszugeben.
    Meine Funktion "_String_Balanced" ermöglicht das.

    Bsp. "Das ist ein Mustertext (hier ist was ich will (plus gekapselten Inhalt) das gehört auch dazu) das hier nicht".
    Hier gibt es zwei Ausdrücke in runden Klammern
    • (hier ist was ich will (plus gekapselten Inhalt) das gehört auch dazu)
    • (plus gekapselten Inhalt)

    Mit meiner Funktion wird der Inhalt von öffnender Klammer bis zugehöriger schließender Klammer ermittelt.
    Alle Klammertypen können verwendet werden '(', '{', '[', '<'. Bei den spitzen Klammern kann zusätzlich ein Tag verwendet werden, praktisch um z.B. Websiten zu parsen.
    Es braucht nur der öffnende Begrenzer (plus optionalem Tag bei spitzen Klammern) angegeben werden. Das Pendant wird automatisch gebildet.
    Weitere Parameter sind
    [optional] Occurence - Welches Vorkommen im String soll gefunden werden. Wie bei StringInStr kann auch von hinten gesucht werden durch negative Zahl.
    [optional] Offset - An welcher Position im String soll begonnen werden.
    Standardmäßig sind Occurence und Offset so gesetzt, dass ein Array mit allen Vorkommen im String zurückgegeben wird. Dabei wird der String von Anfang bis Ende abgegrast.

    Aber mal als Verleich, wie simpel das z.B. mit Lua geht, Variable: text, gesucht ausbalancierter Inhalt in runden Klammern:

    Code
    text = "...."
    ret = text:find('(%b())')

    :whistling:

    _String_Balanced
    [autoit]

    ;===============================================================================
    ; Function Name...: _String_Balanced
    ; Description.....: Ermittelt einen ausbalancierten String innerhalb folgender
    ; ................: Begrenzer: "()", "{}", "[]", "<abc abc>"
    ; ................: Tags bei spitzen Klammern sind optional,
    ; ................: müssen aber für öffnend und schließend identisch sein.
    ; Parameter(s)....: $_sStr String mit begrenztem Substring
    ; ................: $_sOpen Das öffnende Zeichen des Begrenzerpaares und optional der Tag '<bla'
    ; ................: Daraus wird automatisch der schließende Tag gebildet: 'bla>'
    ; .....optional...: $_iOccurence 0 (Standard) Rückgabe aller Funde als Array mit Zähler an [0].
    ; ................: n Beginnt am n-ten Vorkommen von $_sOpen im String.
    ; ................: Negative Werte zählen Vorkommen von rechts.
    ; ................: Occurence greift nur, wenn $_iOffset < 1.
    ; .....optional...: $_iOffset Position im String zum Start der Selektion.
    ; ................: 0 (Standard) Occurence wird verwendet.
    ; Return Value(s).: Erfolg: Der ermittelte String inkl. der Begrenzer.
    ; ................: Fehler: Leerstring @error = 1 $_sOpen beginnt nicht mit '(', '{', '[' oder '<'
    ; ................: @error = 2 $_sOpen nicht in $_sStr enthalten
    ; ................: @error = 3 $_iOccurence größer als Anzahl Begrenzer
    ; Author(s).......: BugFix ( [email='bugfix@autoit.de'][/email] )
    ;===============================================================================
    Func _String_Balanced($_sStr, $_sOpen, $_iOccurence=0, $_iOffset=0)
    If Not StringInStr($_sStr, $_sOpen) Then Return SetError(2, 0, '')
    Local $sTag = ''
    If StringLeft($_sOpen, 1) = '<' Then
    $sTag = StringTrimLeft($_sOpen, 1)
    $_sOpen = '<'
    EndIf
    If Not StringInStr('({[<', $_sOpen) Then Return SetError(1, 0, '')
    StringReplace($_sStr, $_sOpen & $sTag, $_sOpen & $sTag)
    Local $iMax = @extended
    If Abs($_iOccurence) > $iMax Then Return SetError(3, 0, '')
    If $_iOffset < 1 Or $_iOffset = '' Then $_iOffset = 0
    Local $sClose, $sPattern, $fFirst = False, $iLast, $vOut = ''
    Local $countOpen = 0
    If $_iOffset = 0 And $_iOccurence <> 0 Then
    $_iOffset = StringInStr($_sStr, $_sOpen & $sTag, 1, $_iOccurence)
    EndIf
    If $_sOpen = '(' Then
    $sClose = ')'
    Else
    $sClose = Chr(Asc($_sOpen) +2)
    EndIf
    Local $sEscape = ''
    If StringInStr('({[', $_sOpen) Or $sClose = ')' Then $sEscape = '\'
    $sPattern = $sEscape & $_sOpen & $sTag & '|' & $sTag & $sEscape & $sClose
    While 1
    $aMatch = StringRegExp($_sStr, $sPattern, 1, $_iOffset)
    If Not @error Then
    $_iOffset = @extended
    If StringInStr('({[', $aMatch[0]) Or _
    StringInStr('<' & $sTag, $aMatch[0]) Then
    $countOpen += 1
    Else
    $countOpen -= 1
    EndIf
    If Not $fFirst Then
    $iLast = $_iOffset
    $fFirst = True
    ContinueLoop
    EndIf
    $vOut &= StringMid($_sStr, $iLast, $_iOffset-$iLast-1)
    If $countOpen = 0 Then ExitLoop
    $iLast = $_iOffset -1
    Else
    ExitLoop
    EndIf
    Wend
    If $_iOccurence = 0 Then
    Local $n = 2, $match = $vOut, $aOut[2] = [1, $_sOpen & $sTag & $vOut & $sClose]
    While True
    $match = _String_Balanced($_sStr, $_sOpen & $sTag, $n, 0)
    If Not @error Then
    $aOut[0] += 1
    ReDim $aOut[$aOut[0] +1]
    $aOut[$aOut[0]] = $match
    $n += 1
    Else
    Return $aOut
    EndIf
    WEnd
    Else
    Return $_sOpen & $sTag & $vOut & $sClose
    EndIf
    EndFunc ;==>_String_Balanced

    [/autoit]
    Testskript
    [autoit]

    #include '_String_Balanced.au3'
    #include <Array.au3>

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

    $sHtml = _
    '<div class="content">' & @CRLF & _
    '<ul class="menu">' & @CRLF & _
    '<li class="collapsed first no-dhtml "><li class="BLA"><a href="BLA.html"</a></li><a href="file-management.html" id="dhtml_menu-504">File management</a></li>' & @CRLF & _
    '<li class="collapsed no-dhtml "><a href="session-management.html" id="dhtml_menu-505">Session management</a></li>' & @CRLF & _
    '<li class="collapsed no-dhtml "><a href="editing.html" id="dhtml_menu-508">Editing</a></li>' & @CRLF & _
    '<li class="collapsed no-dhtml "><a href="document-properties.html" id="dhtml_menu-509">Document Properties</a></li>' & @CRLF & _
    '<li class="collapsed no-dhtml "><a href="searching.html" id="dhtml_menu-511">Searching</a></li>' & @CRLF & _
    '<li class="collapsed no-dhtml "><a href="display.html" id="dhtml_menu-510">Display</a></li>' & @CRLF & _
    '<li class="leaf no-dhtml "><a href="macros.html" id="dhtml_menu-512">Macros</a></li>' & @CRLF & _
    '<li class="leaf no-dhtml "><a href="commands.html" id="dhtml_menu-513">Commands</a></li>' & @CRLF & _
    '<li class="leaf no-dhtml "><a href="shortcuts-run-menu.html" id="dhtml_menu-514">Shortcuts for the Run menu</a></li>' & @CRLF & _
    '<li class="leaf no-dhtml active-trail"><a href="windows-dialog.html" id="dhtml_menu-515" class="active">Windows Dialog</a></li>' & @CRLF & _
    '<li class="collapsed no-dhtml "><a href="gui-elements.html" id="dhtml_menu-744">GUI elements</a></li>' & @CRLF & _
    '<li class="collapsed no-dhtml "><a href="switching-between-documents.html" id="dhtml_menu-745">Switching between Documents</a></li>' & @CRLF & _
    '<li class="collapsed no-dhtml "><a href="languages.html" id="dhtml_menu-746">Languages</a></li>' & @CRLF & _
    '<li class="collapsed no-dhtml "><a href="settings.html" id="dhtml_menu-747">Settings</a></li>' & @CRLF & _
    '<li class="leaf no-dhtml "><a href="plugins.html" id="dhtml_menu-749">Plugins</a></li>' & @CRLF & _
    '<li class="leaf no-dhtml "><a href="command-line.html" id="dhtml_menu-750">Command Line</a></li>' & @CRLF & _
    '<li class="leaf no-dhtml "><a href="control-files.html" id="dhtml_menu-751">Control files</a></li>' & @CRLF & _
    '<li class="leaf no-dhtml "><a href="shell-extension.html" id="dhtml_menu-752">Shell Extension</a></li>' & @CRLF & _
    '<li class="collapsed no-dhtml "><a href="further-help.html" id="dhtml_menu-748">Further help</a></li>' & @CRLF & _
    '<li class="leaf no-dhtml "><a href="upgrading.html" id="dhtml_menu-753">Upgrading</a></li>' & @CRLF & _
    '<li class="leaf last no-dhtml "><a href="credits.html" id="dhtml_menu-754">Credits</a></li>' & @CRLF & _
    '</ul>' & @CRLF & _
    '</div>' & @CRLF

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

    MsgBox(0, 'Test-html', 'Alle Treffer als Array')
    $ret = _String_Balanced($sHtml, '<li')
    _ArrayDisplay($ret)

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

    MsgBox(0, 'Test-html', '5.tes Vorkommen -> Konsole')
    $ret = _String_Balanced($sHtml, '<li', 5)
    ConsoleWrite($ret & @CRLF)

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

    MsgBox(0, 'Test-String mit "{"', 'Alle Treffer als Array')
    $string = "TEST{'Klammer_1': {'Klammer_2': {'Inside_2': 'value'}},'key': {'Klammer_3': 'value'}}ENDE"
    $ret = _String_Balanced($string, '{')
    _ArrayDisplay($ret)

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

    MsgBox(0, 'Test-String mit "("', 'Alle Treffer als Array')
    $string = "Das ist ein Mustertext (hier ist was ich will (plus gekapselten Inhalt) das gehört auch dazu) das hier nicht"
    $ret = _String_Balanced($string, '(')
    _ArrayDisplay($ret)

    [/autoit]

    Dateien

    _String_Balanced.au3 3,63 kB – 332 Downloads
  • AutoIt mit Sublime Text 2/3 -- Sprachdef. f. Stable v3.3.12.0, Wrapper, Au3Check, Run m. Parameter

    • BugFix
    • 5. August 2014 um 13:43

    Ich erweitere gerade das Backup-Skript (inkl. TimeStamp). Es wird in Zukunft für alle Sprachen nutzbar sein. Dazu steht eine eigene Settings-Datei zur Verfügung. Der User kann den TimeStamp dann kpl. selbst gestalten (Text, Date-Time-Format).
    Nutzt du das Projektmanagement von ST? Dann kann man sicher abfragen, in welchem Projekt die aktuelle Datei ist und dorthin die Backups speichern. Wenn die Projektverwaltung ausserhalb von ST liegt, kann man auch eine Projekt-Settings Datei anlegen, in der Projekte und zugehörige Dateien registriert werden. Das ist einfach zu händeln.

  • LUA Script zum erstellen eines Funktionsheaders.

    • BugFix
    • 3. August 2014 um 21:09
    Zitat von Ghostleader

    Unter anderem weil in der SciTEUser.properties nicht das drin drin steht was du angibst sondern nur

    Darum sollst du ja dort auch die neuen Settings eintragen. Je nach dem, wie sehr du dein SciTE individualisiert hast, stehen die entsprechenden Änderungen in dieser Datei. In einer frischen Installation ist die Datei i.A. leer.

    Zitat von Ghostleader

    Auch verstehe ich nicht ganz was du meinst vielleicht müsst ihr die 83 anpassen wo und warum denn?

    Die 38 (nicht 83) bezog sich auf frei verfügbare command-Nummern

    ...
    command.name.38.*.au3=InsertFunctionHeader
    ...

    Wenn du dort keine anderen Einträge hast, ist diese Nummer frei.

  • AutoIt mit Sublime Text 2/3 -- Sprachdef. f. Stable v3.3.12.0, Wrapper, Au3Check, Run m. Parameter

    • BugFix
    • 2. August 2014 um 02:16

    Zum Timestamp habe ich jetzt auf das Versionsbackup ergänzt.

    Dazu muß in den Settings ( ".Data\Packages\User\AutoIt.sublime-settings" ) ein Pfad zum Ordner, der die Versionen speichern soll, angegeben werden.
    Der Key lautet: "version_backup_path".

    So sieht das bei mir aus:

    Spoiler anzeigen
    PHP
    {
    	"autoit_exe_path": "C:\\Program Files (x86)\\AutoIt3\\AutoIt3.exe",
    	"autoit_compiler_path": "C:\\Program Files (x86)\\AutoIt3\\Aut2Exe\\Aut2exe.exe",
    	"autoit_wrapper_path": "C:\\Program Files (x86)\\AutoIt3\\SciTE\\AutoIt3Wrapper\\AutoIt3Wrapper.exe",
    	"tidy_exe_path": "C:\\Program Files (x86)\\AutoIt3\\SciTE\\Tidy\\Tidy.exe",
    	"include_helper_au3_path": "Packages/AutoItScript/Include_Helper.au3",
        "version_backup_path": "C:/VirtualRoot/VersionBackup/au3",
    	"color_scheme": "Packages/AutoItScript/AutoIt.tmtheme",
        "extensions": ["au3"]
    }


    Wird eine Änderung der Versions/Subversionsnummer vorgenommen, wird automatisch von dieser neuen Datei eine Kopie als "Dateiname[version].au3" angelegt.
    Unterhalb des festgelgten Backupordners wird für jede neue Datei ein Ordner angelegt als "BUVer_" & "Dateiname.au3", indem dann alle Versionen dieser Datei abgelegt werden.
    "BUVer" steht für BackUp Version ;)

  • AutoIt mit Sublime Text 2/3 -- Sprachdef. f. Stable v3.3.12.0, Wrapper, Au3Check, Run m. Parameter

    • BugFix
    • 1. August 2014 um 22:58

    @rynow:
    Nur ein "*" oder "v" oder "V" an die erste Position im Editor - nichts darf davor stehen - dann speichern.

  • AutoIt mit Sublime Text 2/3 -- Sprachdef. f. Stable v3.3.12.0, Wrapper, Au3Check, Run m. Parameter

    • BugFix
    • 1. August 2014 um 22:55

    Da ich nun doch schon etwas "familar" :D mit Python bin, habe ich mir mal das AutoIt-Plugin von Github etwas näher angeschaut.
    Ich weiß nicht, wer es geschrieben hat - aber derjenige ist mit Python überhaupt nicht vertraut. Python ist eine konventionsrestriktive Sprache. Da wirst du auch in jedem Python-Forum gesteinigt, wenn du dich nicht an die Konventionen hältst.
    Mal ein kurzer Abriss:
    - Funktionsnamen und Variablen werden immer klein geschrieben, zur Verdeutlichung von Teilnamen werden Unterstriche genutzt ( das_ist_eine_func )
    - Klassennamen werden in CamelCase geschrieben
    - eine Codezeile hat nie mehr als 80 Zeichen
    usw. usf. ;)
    Die "autoitbuild.py" sieht dazu vergleichsweise aus, wie ein Beet voller Kraut und Rüben. :D

    Ich denke, ich werde kpl. mein eigenes AutoIt-Plugin erstellen. Dann stimmt es auch mit den Konventionen. ;)

  • handle Expression von Control ID unterscheiden

    • BugFix
    • 1. August 2014 um 19:01
    Zitat von Trolleule1337

    Arrays sind scheisse, sowas benutzt man, wenn die Daten die man speichern will keine struktur haben, wie z.B. eine Zahlenreihe.


    Na da muß ich mal ganz energisch widersprechen.
    Ich speichere natürlich auch strukturierte Daten in Arrays. Und das ist absolut unproblematisch und auch schnell.
    Da greift wohl eher der Spruch: "Wat der Bua nich kennt, dat fritt er nich" ;)

  • AutoIt mit Sublime Text 2/3 -- Sprachdef. f. Stable v3.3.12.0, Wrapper, Au3Check, Run m. Parameter

    • BugFix
    • 1. August 2014 um 17:11

    Hier mein PlugIn "TimeStamp" für AutoIt-Code.

    Den Anhang in "\Data\Packages" entpacken. (enthält das Plugin "Au3plugins", dem ich dann nach und nach weitere Funktionen hinzufüge)

    Bedienung:
    • Datei hat noch keinen Zeitstempel:
    Zeichen an erster Position in der Datei
    * = nur Timestamp (;-- TIME_STAMP 2014-08-01 16:00:47 )
    v = Timestamp und Subversion 1 (;-- TIME_STAMP 2014-08-01 16:02:27 v 0.1)
    V = Timestamp und Mainversion 1 (;-- TIME_STAMP 2014-08-01 16:02:27 v 1.0)

    • Datei hat bereits Zeitstempel oder Zeitstempel und Versionsangabe:
    - ohne weiteres Zeichen wird der Stamp auf aktuelles Datum/Zeit erneuert
    Zeichen hinter Zeitstempel oder aktueller Versionsangabe
    v = Timestamp und Subversion +1, wenn bisher nur Timestamp: Subversion 1
    V = Timestamp und Mainversion +1, wenn bisher nur Timestamp: Mainversion 1
    n = nur wirksam hinter Versionsangabe: Main- u. Subversion werden übernommen, wie sie sind - z.B. Versionssprung

    Beim Speichern wird dann automatisch bei AutoIt-Dateien der Timestamp entsprechend des gewünschten Modus gesetzt.
    Das automatische Speichern der Dateien unter dem entsprechenden Versionsnamen wird auch noch folgen. Aber alles Schritt für Schritt. ;)

  • handle Expression von Control ID unterscheiden

    • BugFix
    • 1. August 2014 um 14:07

    Wenn es denn ein Dictionary sein MUSS: Erstelle parallel ein Array. Dort speicherst du das Handle und den Index des Arrayeintrags als Value im Dictionary. ;)

  • AutoIt mit Sublime Text 2/3 -- Sprachdef. f. Stable v3.3.12.0, Wrapper, Au3Check, Run m. Parameter

    • BugFix
    • 1. August 2014 um 12:33

    Das Scope-System wurde von TextMate übernommen.
    Hier ein paar relevante Links:
    http://manual.macromates.com/en/scope_selectors
    http://manual.macromates.com/en/regular_exp…yntax_oniguruma
    http://manual.macromates.com/en/language_grammars.html

  • handle Expression von Control ID unterscheiden

    • BugFix
    • 1. August 2014 um 09:55
    Zitat von Trolleule1337

    Das handle steht allerdings als expression im dictionary


    Warum speicherst du nicht das Handle selbst? Welchen Sinn soll es haben, das Handle als String zu speichern?

  • AutoIt mit Sublime Text 2/3 -- Sprachdef. f. Stable v3.3.12.0, Wrapper, Au3Check, Run m. Parameter

    • BugFix
    • 1. August 2014 um 09:41

    @rynow
    Ein kleiner Typo auf deiner Seite:

    Zitat

    Im nächsten Teil werde ich euch einige Erweiterungen und weiter tolle Futures von Sublime Text vorstellen.

    ;)


    Hier nochmal meine Anleitung, die ich im EN-Forum gepostet hatte. Dort sind noch einige zusätzliche Punkte enthalten (Toggle Konsole, Bindung Dateityp an Color-Scheme):

    Spoiler anzeigen

    Here i will you give the first steps for work with ST2/ST3:

    1. Download "Sublime Text 2/3" and installation
    You find it here: Sublime Text

    2. Shortcut-File open with: <Preferences> <Key Bindings - User>
    Following shortcut insert in this file to toggle console with "Strg+,"
    (default shortcut does'nt work in Windows)

    Code
    [
            { "keys": ["ctrl+,"], "command": "show_panel", "args": {"panel": "console", "toggle": true} }
        ]


    3. Urgent required Package "Package Control" install
    - Open console
    - insert following text (it's all in one line!)

    Code
    import urllib2,os; pf='Package Control.sublime-package'; ipp=sublime.installed_packages_path(); os.makedirs(ipp) if not os.path.exists(ipp) else None; urllib2.install_opener(urllib2.build_opener(urllib2.ProxyHandler())); open(os.path.join(ipp,pf),'wb').write(urllib2.urlopen('http://sublime.wbond.net/'+pf.replace(' ','%20')).read()); print('Please restart Sublime Text to finish installation')


    - Hit <Enter> to install. After restart you'll find it on menu:
    <Preferences> <Package Control>

    4. You need a possibility to create JSON-files and to convert them to plist (.tmLanguage/ .tmTheme). For this you'll need the Package "AAAPackageDev"
    - <Preferences> <Package Control> <Package Control: Install Package> - click
    - Insert "AAA", than the Package is on top, or scroll with mouse to this
    - With clicking the Package it will installed (State is shown bottom in the status line, left)
    Needs also an restart.

    Now you have a new menu: [ the following is some different in ST3, but you will see it by using ]
    <Tools>
    <Packages> <Package Development>
    ...
    ...
    <New Syntax Definition> -- that's what you need to create a new definition or theme file (JSON)

    And in menu <Tools><Build System> you find now "JSON to Property List" and "Property List to JSON". You need this for convert "*.JSON-tmLanguage" to "*.tmLanguage" and "*.JSON-tmtheme" to "*.tmtheme"

    You can bind color schemes to a file type. You need a settings file like "AutoIt.sublime-settings".
    Inside this you declare the scheme:

    Code
    {
        "color_scheme": "Packages/User/AutoIt.tmtheme",
        "extensions": ["au3"]
    }


    Also you can determine, that all files of one file type will opened with the syntax definition of your choice. For this open a file with the required file type (i.e *.au3) and now you see bottom in the status line, right side, the current used syntax definition. Click this and go ahead to "Open all with current extension as..". Select than the syntax definition you like.


    In attachement you find my syntax definition file for autoit. Its based with the used scopes on the naming convention from TextMate, which also used in Sublime Text. It makes sense to work with naming convention. So you can use other color schemes (themes) and have a detection of a lot of definitions.
    Here is a list of used scopes. I've marked with pipes the scope name from naming convention:

    Code
    "|comment.line.character|.autoit"                    Comment one line
    "|comment.block|.autoit"                             Comment block
    "|constant.numeric|.hex.autoit"                      Hex numbers
    "|constant.numeric|.number.autoit"                   Integer
    "|entity.name.function|.native.autoit"               Native Functions
    "|entity.name.tag|.macro.autoit"                     Macros
    "|constant.character|.preprocessor.autoit"           Include(-Once)/NoTrayIcon/RequireAdmin
    "|string.quoted|.include.file.autoit"                File after the include - gets style as a string
    "|constant.character|.preprocessor.autoit"           Region/Endregion with all text in this line
    "|constant.language|.preprocessor.special.autoit"    Preprocessor, Wrapper etc.
    "|keyword.control|.autoit"                           Keywords
    "|keyword.operator|.autoit"                          Operators
    "|keyword.other|.braces.autoit"                      Braces
    "|string.quoted.single|.autoit"                      String, single quoted
    "|string.quoted.double|.autoit"                      String, double quoted
    "|variable.parameter|.sentkey.autoit"                SentKeys
    "|variable.language|.autoit"                         Variables
    "|variable.language|.func.autoit"                    Variables assigned with Function
    "|support.function|.udf.autoit"                      UDF-Functions
    "|support.class|.objects.autoit"                     Com Objects
    Alles anzeigen
  • AutoIt mit Sublime Text 2/3 -- Sprachdef. f. Stable v3.3.12.0, Wrapper, Au3Check, Run m. Parameter

    • BugFix
    • 31. Juli 2014 um 22:32
    Zitat von rynow

    An diesem könnte man sich doch die Kommunikation mit Sublime abschauen und den Wrapper basteln.

    Die Kommunikation ist kein Problem. Es ist ein API implementiert, darüber läßt sich das machen.
    Ich wollte nur gerne auch eine im System (Python) eingebundene GUI nutzen.
    Den AutoIt-internen Wrapper kann man nicht übernehmen, der ist für SciTE konfiguriert. Alternativ bliebe, ihn weiterhin als AU3-exe zu erstellen aber mit Kommunikation über STDOUT und damit ST füttern.

    Zitat von rynow

    darf ich dein Sublime Theme auf meinen Blog mit anbieten? Selbstverständlich unter deinem Namen?

    Na klar, dazu habe ich es schließlich erstellt.

  • AutoIt mit Sublime Text 2/3 -- Sprachdef. f. Stable v3.3.12.0, Wrapper, Au3Check, Run m. Parameter

    • BugFix
    • 31. Juli 2014 um 22:02

    Ähnlich wie Lua in SciTE, ist die Implementierung von Python in ST rudimentär. Wesentliche Teile der Standardbibliotheken sind nicht enthalten (z.B. tkinter). Somit lassen sich keine komplexen GUI erstellen, was in Bezug auf einen schicken AutoIt-Wrapper sehr schade ist.
    Mit einer zusätzlichen Python-Installation ließe sich das lösen, aber das ist natürlich keine allgemeingültige Option.
    Ich habe die GUI schan mal analog wie in AutoIt mit tkinter erstellt. Das war aber mehr zum Test, wie man mit tkinter umgeht. Eventuell setze ich mich später mal an die Portierung des entsprechenden Codes nach Python. Das ist aber nicht ganz ohne. Also rechnet nicht mit baldigem Vollzug. ;)

    Edit:
    So sieht es z. Zt. aus:
    Link

  • Standard GUI Scrollbar machen

    • BugFix
    • 31. Juli 2014 um 21:15
    Zitat von Ghostleader

    oder doch?


    Warum nicht? - Die entsprechenden Befehle kannst du ganz smart in ein Kontextmenü packen. Dann hast du eine nicht überfrachtete Oberfläche mit max. Funktionalität.

  • SetupVerifyInfFile Function um zu überprüfen ob Treiber signiert sind

    • BugFix
    • 31. Juli 2014 um 19:53
    Zitat von Trolleule1337

    Weisst du, ob es in der setup API eine Funktion gibt, mit der ich die zu kopierenden Files die in den folgenden sections meine INF drin stehen, identifizieren kann?

    Damit habe ich mich noch nicht befasst, kann ich leider nicht helfen.

  • SetupVerifyInfFile Function um zu überprüfen ob Treiber signiert sind

    • BugFix
    • 31. Juli 2014 um 19:12

    Ist dein Hauptziel Treiber zu installieren? Wenn es dich nicht stört, dass die Windows-Meldung über Nicht-signierte Treiber aufpopt, verwende doch das Kommandozeilen-Tool "pnputil" zur Installation.

  • IF statement has no matching Endif?

    • BugFix
    • 31. Juli 2014 um 12:47

    Der Fehler entsteht nicht aus diesem Code heraus.
    In deinem Skript muß noch mehr stehen, was in der Summe ein EndIf vermissen läßt.

    NB: Globale Variablen deklariert man nicht innerhalb von Funktionen, das ist schlechter Stil und macht Skripte schlecht lesbar.

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™