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

  • Varriablen Rahmen "Zeichnen" und Child GUI

    • BugFix
    • 6. März 2012 um 08:54
    Zitat von ErrorKid

    2. Frage: Wie schaffe ich es eine Gruppe von Controls zu verschieben? Beispiel: 50 Bilder und ich will mit den Pfeiltasten durchscrollen und es haben immer nur 3 Bilder auf dem Bildschirm platz.


    Dann erstelle einfach 2 x 3 Picture-Ctrl, und davon liegen jeweils 2 Ctrl genau übereinander.
    - Ctrl 1-3 werden geladen und angezeigt und gleichzeitig werden im PreLoad die Bilder in Ctrl 4-6 geladen.
    - Beim Wechsel versteckst du Ctrl 1-3 und zeigst Ctrl 4-6 und lädst wiederum die nächsten 3 Bilder sofort nach in die Ctrl 1-3
    - Wenn du auch zügig zurück"blättern" möchtest, brauchst du noch eine dritte Gruppe Ctrl, sodass du in beide Richtungen die nächsten/vorigen 3 Bilder bereits geladen hast.

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

    • BugFix
    • 5. März 2012 um 22:05

    Neu in v0.5 : Mehrzeilige Tipps
    s. Post #1

  • Tabelle zur Eingabe

    • BugFix
    • 5. März 2012 um 17:17
    Zitat von DFPWare

    ch habe gedacht das geht mit einer ListView aber da kann man in die Zeilen nichts hineinschreiben und außerdem stört mich die Leiste über der ersten Zeile.


    Beides falsch.
    Sieh dir mal die Styles zum Listview an, da kannst du die Header ausblenden. Auch Editieren ist per Style möglich. Allerdings in begrenztem Umfang. Für volles Editieren der SubItem findest du hier oder im EN-Forum Lösungen.

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

    • BugFix
    • 4. März 2012 um 12:27

    Auch der Wunsch ist erfüllbar ;)
    Wiederum als Option über die properties de/aktivierbar.
    s. Post #1

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

    • BugFix
    • 4. März 2012 um 01:13

    Unmögliches wird sofort erledigt, nur Wunder dauern etwas länger. :D
    Jetzt sind beide Varianten möglich. Jeder nach seinem Geschmack. Per properties-Eintrag legt man fest, ob der Tipp in einer Region steht oder in einer Tag-markierten Kommentarzeile.
    s. Post #1

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

    • BugFix
    • 4. März 2012 um 00:37

    Momentan wird nach dieser einen Region gesucht.
    Ich finde das eigentlich recht übersichtlich, am Skriptanfang werden alle Variablen generiert (zumindest ist es sinnvoll dieses zu tun) und dann kann man anschließend die Tipps dazu erstellen. Schön übersichtlich. ;)
    Es läßt sich natürlich auch ein anderer Weg wählen, bin für alles offen.
    z.B. den Tipp in eine Kommentarzeile schreiben, die mit einem definierten Tag beginnt, dann kann man überall und jederzeit solch einen Kommentar ablegen, etwa so:

    [autoit]

    ;@ $Variable Und hier der Tipp zur Variable

    [/autoit]


    Kann ich auch gerne in diese Form bringen.

  • SciTE Kommentar für Variable

    • BugFix
    • 4. März 2012 um 00:15

    Ich habe dafür mal eine LUA-Lösung erstellt: https://autoit.de/index.php?page=Thread&threadID=31030

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

    • BugFix
    • 4. März 2012 um 00:14

    Edit 18.12.2016
    Geänderte Version hier: TipTool v0.1

    aktuelle Version: v0.11

    Edit: 12.02.2013
    Alle Edits zusammengefaßt, in aktueller Version Pfad zu eigenen Lua-Skripten über property definiert.

    Es tauchte die Frage nach einer Möglichkeit auf, zu Variablen Kommentare zu vermerken, die jederzeit im Skript abrufbar sind ohne auf diesen Kommentar zu scrollen.
    Ich habe das mal mit einem LUA-Skript gelöst, zusätzlich können auch Tipps zu Funktionen hinterlegt werden.

    - Im AutoIt-Skript wird eine Region erstellt, in der die Variablen-Tipps angelegt werden (Schreibweise exakt so, wie hier ersichtlich)

    [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]


    oder
    - Es wird eine Kommentarzeile mit Tag (einfach ein @ direkt nach dem Semikolon) erstellt, irgendwo im Skript:

    [autoit]

    ;@ $Variable1 Das ist der Tipp für diese Variable

    [/autoit]


    oder
    - Direkt nach dem Erstellen der Variable wird in der Folgezeile mit "-1" auf diese Variable verwiesen:

    [autoit]

    $GuiMain = GuiCreate(...);-1 Das ist der Kommentar zur Variable in der Zeile zuvor

    [/autoit]


    oder

    [autoit]

    Func _Irgendeine_Funktion($_arg1, $_arg2) ;-f Das ist der Tipp zur Funktion\nDas ist die zweite Zeile zu diesem Tipp

    [/autoit]

    • Es können alle Tipp-Deklarationen parallel genutzt werden
    • Mehrfachverwendung von Variablen in unterschiedlichen Funktionen und/oder Global möglich.
    • Tipps werden im Zusammenhang mit dem Gültigkeitsbereich behandelt
    • Tipp muß immer im Gültigkeitsbereich erstellt werden, also Global oder in der jeweiligen Funktion.
    • Multiline-Tipps mit \n als Markierung für den Zeilenumbruch
    • Aufruf per Hotkey oder Kontextmenü

    Anwendung:
    • Den Cursor in die Variable stellen, Hotkey/Kontextmenü aufrufen und der Tipp wird als CallTip angezeigt/ in die Konsole ausgegeben.

    Ausgabe:
    !> $iSelf [ Local: Func _TimeOver() ]
    >> Tipp zu iSelf

    Das Skript enthält weiterhin die Möglichkeit, anhand eines Teil-/Begriffs aus den Variablentipps nach einer Variablen zu suchen.
    • Begriff aus der Beschreibung (oder Wortteil) dort eingeben, wo die Variable hin soll.
    • Cursor in den Begriff setzen (nicht daneben)
    • Funktion aufrufen (Hotkey oder Kontextmenü)
    • je nach Voreinstellung werden alle Variablen, in deren Beschreibung das Suchwort enthalten ist, zusammen mit Beschreibung in die Konsole ausgegeben oder in einer Userliste zur Auswahl angezeigt
    • bei Konsolenausgabe wird der Suchbegriff im Editor gelöscht
    • bei Userlistauswahl wird an Stelle des Suchworts die gewählte Variable in den Editor eingefügt
    Um die Auswahl in der Userlist zu überwachen, ist eine weitere Datei "VarGetTip_ListEvent.lua" erforderlich. Diese muß in der "SciTEStartup.lua" am Ende geladen werden.

    In den User properties habe ich jetzt eine Variable für den Speicherort eigener Lua-Skripte erstellt.
    Es ist nicht unbedingt sinnvoll eigene Skripte mit den vorinstallierten Skripten zu vermischen.
    Wenn ihr jedoch im Standard-Lua-Ordner die Skripte speichert, verwendet für diese property:
    Lua.User.Scripts.Path=$(SciteDefaultHome)\LUA, ansonsten den Pfad zu eurem Ordner aber ohne abschließenden Backslash. Der Backslash fungiert in propertie-Dateien als Fortschreibungszeichen zur nächsten Zeile.

    Manuelle Installation

    SciTEUser.properties
    Code
    #~  Userkontextmenü
    user.context.menu=||Variablen Tipp|1149|Variable Suche per Tipp|1148|
    
    
    #~   Speicherort der Skriptdatei !! ohne abschließendem Backslash !!
    Lua.User.Scripts.Path=C:\Code_AutoIt\LUA
    #~   Variablentipp / Suche Variable mit Tipp
    #~   Tipp als CallTip (1) oder Konsolenausgabe (0)
    Variable.Tipp.CallTip.*.au3=1
    #~   Ergebnis Variablensuche per Tipp in Userliste (1) oder Konsole (0)
    Userlist.VarGetTip=1
    
    
    # 49 Variablen Tipp by BugFix
    command.name.49.*.au3=Variablen Tipp
    command.49.*.au3=dostring assert(loadfile(props["Lua.User.Scripts.Path"].."\\VarGetTipp.lua"))("v")
    command.mode.49.*.au3=subsystem:lua,savebefore:no
    command.shortcut.49.*.au3=Ctrl+Alt+V
    
    
    # 48 Suche Variable mit Tipp
    command.name.48.*.au3=Variablen Search by Tip
    command.48.*.au3=dostring assert(loadfile(props["Lua.User.Scripts.Path"].."\\VarGetTipp.lua"))('s')
    command.mode.48.*.au3=subsystem:lua,savebefore:no
    command.shortcut.48.*.au3=Ctrl+Alt+S
    Alles anzeigen
    SciTEStartup.lua
    Code
    -- .......
    -- .......
    -- Start up the events (Calls OnStartup()).
    EventClass:BeginEvents()                                                      ---- erst nach dieser Zeile eigene Skripte aufrufen!
    
    
    LoadLuaFile("EdgingSelection.lua", props["Lua.User.Scripts.Path"].."\\")      ---- paariges Einfassen
    LoadLuaFile("AutoStampSaveVersion.lua", props["Lua.User.Scripts.Path"].."\\") ---- Zeitstempel, Versionsbackup
    LoadLuaFile("EditOperations.lua", props["Lua.User.Scripts.Path"].."\\")       ---- Repeat, Go, Delete, SwapLines
    LoadLuaFile("VarGetTip_ListEvent.lua", props["Lua.User.Scripts.Path"].."\\")  ---- Listenzugriff VarGetTip


    Hinweis zum Kontextmenü:
    Die property "user.context.menu" ist für das Userkontextmenü zuständig.
    Die Einträge erfolgen immer in der Art:
    user.context.menu=||NAME_MENÜPUNKT_1|11 & COMMAND-NR|
    Um einen Leereintrag zu erstellen einfach statt einfacher Pipe "|" eine 3-fach Pipe "|||" verwenden zwischen zwei Einträgen.

    Installation per Skript
    Ist geplant, da die aktuelle SciTE-Version aber deutliche Änderungen in den SciTEUser.properties enthält kann ich das alte Installationsskript nicht weiterverwenden. Da muß ich jetzt ein Skript erstellen, das auch abwärtskompatibel ist (mehr Aufwand als das Lua-Skript selbst :D).

    VarGetTipp.lua (v0.11)
    Code
    -- TIME_STAMP   2013-02-12 13:33:08   v 0.11
    
    
    ----------------------------------------------------------------------------------------------------------------------------------
    -- Zwei verschiedene Funktionen:
    --
    -- VarGetTipp
    --      Für Variablen werden in einer separaten Region des Skripts Tipps hinterlegt:
    --          #region - Variablen-Tipp
    --          ; $Variable1 Das ist der Tipp für $Variable1
    --          ; $Variable2 Das ist der Tipp für $Variable2
    --          ; $Variable3 Das ist der Tipp für $Variable3
    --          #endregion
    --      oder sie werden in einer Kommentarzeile mit Tag irgendwo im Skript erstellt:
    --          ;@ $Variable1 Das ist der Tipp für diese Variable
    --      oder DIREKT nach Erstellung einer Variablen kann in der Folgezeile mit '-1' auf diese verwiesen werden:
    --          $GuiMain = GuiCreate(...)
    --          ;-1 Das ist der Kommentar zur Variable in der Zeile zuvor
    --
    --      oder Tipp für Funktionen:
    --          In der Folgezeile nach Funktionskopzeile den Tipp hinterlegen mit
    --             Func _IrgendeineFunc()
    --                 ;-f Tipp zu dieser Funktion\nZweite Zeile zu diesem Tipp
    --          Ausgabe:
    --             Funktionsname( )
    --             Tipp zu dieser Funktion
    --             Zweite Zeile zu diesem Tipp
    --
    --      Es können auch Variablen gleichen Namens mehrfach verwendet werden (in unterschiedlichen Funktionen).
    --      Die Erstellung der Tipps muß dann innerhalb desselben Gültigkeitsbereiches (also in derselben Funktion oder Global) erfolgen.
    --      Das Skript sucht nach Tipps für die aktuelle Variable im aktuellen Gültigkeitsbereich. Zuerst innerhalb der Funktion,
    --      falls gerade der Cursor auf einer Variablen in einer Funktion steht, da bei gleichnamigen existierenden lokalen und globalen Variablen,
    --      die lokale Variable eine höhere Priorität hat.
    --      Es wird immer der Variablenname und der Gültigkeitsbereich ausgegeben
    --          $VarBefore  [ Global ]
    --          Das ist ein Kommentar zu $VarBefore
    --      oder
    --          $iSelf  [ Local: Func _TimeOver() ]
    --          Das ist ein Kommentar zu $iSelf
    --
    --      Mehrzeilige Tipps lassen sich erstellen mit "\n" als Zeilenumbruchzeichen im Text
    --      z.B.
    --          ;@ $VariableXY comment1\ncomment2\ncomment3
    --      Ausgabe:
    --          $VariableXY
    --          comment1
    --          comment2
    --          comment3
    --
    --      Datei speichern als "..\SciTE\LUA\VarGetTipp.lua"
    --      oder besser in eigenem Skripte-Ordner "..\VarGetTipp.lua
    --
    --      In der "SciTEUser.properties" wird ein Hotkey zum Aufruf der Funktion hinterlegt
    --         # 49 Variablen Tipp by BugFix
    --         command.name.49.*.au3=Variablen Tipp
    --         command.49.*.au3=dostring assert(loadfile(props["Lua.User.Scripts.Path"].."\\VarGetTipp.lua"))("v")
    --         command.mode.49.*.au3=subsystem:lua,savebefore:no
    --         command.shortcut.49.*.au3=Ctrl+Alt+V
    --
    --  !!! Zusätzlich folgende properties-Werte erstellen !!!
    --         #~ Variablentipp / Suche Variable mit Tipp
    --         #~ Tipp als CallTip (1) oder Konsolenausgabe (0)
    --         Variable.Tipp.CallTip.*.au3=1
    --         #~ Speicherort der Lua-Skriptdateien  !! Ohne abschließenden Backslash !!
    --         Lua.User.Scripts.Path=C:\Code_AutoIt\LUA
    --         #~ Ergebnis Variablensuche per Tipp in Userliste (1) oder Konsole (0)
    --         Userlist.VarGetTip=1
    --
    --      - Cursor auf die Variable setzen
    --      - Hotkey aufrufen
    --      - Ist ein Tipp hinterlegt, wird dieser als CallTipp angezeigt oder in die Konsole ausgegeben
    ----------------------------------------------------------------------------------------------------------------------------------
    -- SearchVarByTip
    --      Sucht anhand des Begriffs in der aktuellen Editorzeile innerhalb der vorhandenen Variablentipps nach
    --      Übereinstimmungen. Treffer werden in einer Userlist zur Auswahl angezeigt.
    --      Die Variable des ausgewählten Treffers wird an der Position des Suchbegriffs im Editor eingefügt.
    --      Alternativ können alle Variablen, in deren Beschreibung das Suchwort enthalten ist, in die Konsole ausgegeben werden.
    --
    --  !!! WICHTIG !!!
    --      Um die Auswahl in der Userliste feststellen zu können ist zusätzlich die Datei "VarGetTip_ListEvent.lua" erforderlich.
    --      Diese muss in der "SciTEStartup.lua" aufgerufen werden, etwa so sollte es aussehen:
    --
    --              ============== Auszug aus: SciTEStartup.lua ======================================================================
    --              .....
    --              .....
    --              .....
    --				-- Start up the events (Calls OnStartup()).
    --				EventClass:BeginEvents()                                          ----< erst nach diesem Eintrag Event-Skripts laden!
    --
    --				LoadLuaFile("EdgingSelection.lua", props["Lua.User.Scripts.Path"].."\\")      ---- paariges Einfassen
    --				LoadLuaFile("AutoStampSaveVersion.lua", props["Lua.User.Scripts.Path"].."\\") ---- Zeitstempel, Versionsbackup
    --				LoadLuaFile("EditOperations.lua", props["Lua.User.Scripts.Path"].."\\")       ---- Repeat, Go, Delete, SwapLines
    --				LoadLuaFile("VarGetTip_ListEvent.lua", props["Lua.User.Scripts.Path"].."\\")  ---- Listenzugriff VarGetTip
    --              ==================================================================================================================
    --
    --      In der "SciTEUser.properties" wird ein Hotkey zum Aufruf der Funktion hinterlegt
    --         # 48 Suche Variable mit Tipp
    --         command.name.48.*.au3=Variable Search by Tip
    --         command.48.*.au3=dostring assert(loadfile(props["Lua.User.Scripts.Path"].."\\VarGetTipp.lua"))("s")
    --         command.mode.48.*.au3=subsystem:lua,savebefore:no
    --         command.shortcut.48.*.au3=Ctrl+Alt+S
    --
    ----------------------------------------------------------------------------------------------------------------------------------
    
    
    -- Aufruf mit Parameter
    local tArg = {...}
    local sParam = tArg[1]
    
    
    local GetVarFromCursor = function()
    	local iCaret = editor.CurrentPos
    	local iTmp = iCaret
    	local sSel = string.char(editor.CharAt[iCaret])
    	if (string.byte(sSel) == 13) or (sSel == ' ') or (sSel == ',') then
    		iCaret = iCaret -1
    	end
    	local sLeft = string.char(editor.CharAt[iTmp-1])
    	local iLine = editor:LineFromPosition(iCaret)
    	local iLine1stPos = editor:PositionFromLine(iLine)
    	local iDiffPos = iCaret - iLine1stPos +1
    	local sLine = editor:GetLine(iLine)
    	local sPatternNormal = '%$[%w_]+%s*[^[]'
    	local function SearchVar(_sLine, _sPattern, _iCursor)
    		local tVars = {}
    		local iMatchStart iMatchEnd = 0
    		while true do
    			iMatchStart, iMatchEnd = _sLine:find(_sPattern, iMatchEnd +1)
    			if iMatchStart == nil then break end
    			table.insert(tVars, {iMatchStart, iMatchEnd})
    		end
    		if table.getn(tVars) > 0 then
    			for i = 1, table.getn(tVars) do
    				if ( _iCursor >= tVars[i][1] ) and ( _iCursor <= tVars[i][2] ) then
    					return string.sub(_sLine, tVars[i][1], tVars[i][2])
    				end
    			end
    		end
    		return nil
    	end
    	local sVarUnderCursor
    	local fLeftVar = false fRightVar = false
    	if sLeft:find('[%w_$]') ~= nil then
    		fLeftVar = true
    	else
    		if sSel == '$' then fRightVar = true end
    	end
    	if not fLeftVar and not fRightVar then return '' end
    	sVarUnderCursor = SearchVar(sLine, sPatternNormal, iDiffPos)
    	if sVarUnderCursor == nil then return '' end
    	if sVarUnderCursor:find('%.$') then return '' end
    	sVarUnderCursor = sVarUnderCursor:sub(sVarUnderCursor:find('%$[%w_]+'))
    	return sVarUnderCursor, iCaret
    end -- GetVarFromCursor()
    
    
    local GetFuncFromCursor = function()
    	local iCaret = editor.CurrentPos
    	local sSel = string.char(editor.CharAt[iCaret])
    	if (string.byte(sSel) == 13) or (sSel == ' ') or (sSel == ',') then return nil end
    	local sLine = editor:GetLine(editor:LineFromPosition(iCaret))
    	if string.char(editor.CharAt[iCaret -1]) ~= ' ' then editor:WordLeft() end
    	editor:WordRightExtend()
    	local sCurrWord = editor:GetSelText()
    	editor:SetSel(iCaret, iCaret)
    	if sCurrWord:find('[^%w_)]') then return '' end
    	if sLine:find(sCurrWord..'%s*%b()') then
    		return sCurrWord, iCaret
    	else
    		return ''
    	end
    end -- GetFuncFromCursor()
    
    
    local Output = function(sText1, sText2)
    	if tonumber(props['Variable.Tipp.CallTip.*.au3']) == 1 then
    		if sText2 ~= nil then sText1 = sText1..'\n'..sText2:gsub('\\n', '\n') end
    		editor:CallTipShow(editor.CurrentPos, sText1)
    	else
    		print('!> '..sText1)
    		if sText2 ~= nil then print('>> '..sText2:gsub('\\n', '\n>> ')) end
    	end
    end -- Output
    
    
    local GetAllTip = function()
    	local tTip = {}
    	local s = editor:GetText()
    	-- in vorhergehender Zeile deklariert
    	for p, tip in s:gmatch('()\n[\t%s]*;%-1%s*([^\r\n]+)') do
    		local _, _, var = editor:GetLine(editor:LineFromPosition(p) -1):find('(%$[%w_]+)')
    		table.insert(tTip, {var,tip,p,'global'})
    	end
    	-- mit "at"-Tag gesetzter Tipp
    	for p, var, tip in s:gmatch('()\n[\t%s]*;@%s-(%$[%w_]+)%s([^\r\n]+)') do
    		table.insert(tTip, {var,tip,p,'global'})
    	end
    	-- in Region gesetzte Tipps
    	local tReg = {}
    	for p in s:gmatch("()#[Rr]egion %- [Vv]ariablen%-[Tt]ipp") do
    		table.insert(tReg, p)
    	end
    	if table.getn(tReg) > 0 then
    		for i=1,table.getn(tReg) do
    			local line = editor:LineFromPosition(tReg[i])
    			while not editor:GetLine(line):find('#[Ee]nd[Rr]egion') do
    				line = line +1
    				local _, _, var, tip = editor:GetLine(line):find(';%s-(%$[%w_]+)%s([^\r\n]+)')
    				if var then table.insert(tTip, {var,tip,tReg[i],'global'}) end
    			end
    		end
    	end
    	if sParam == 'v' then
    		-- Funktionstipps, nur bei Aufruf mit Parameter 'v'
    		for p, tip in s:gmatch('()\n[\t%s]*;%-f%s*([^\r\n]+)') do
    			local _, _, sFunc = editor:GetLine(editor:LineFromPosition(p) -1):find('([%w_]+)%s*%b()')
    			table.insert(tTip, {sFunc,tip,p,sFunc})  -- Alles OK !
    		end
    	end
    	return tTip
    end -- GetAllTip
    
    
    local GetFuncs = function()  -- Ermitteln aller Funktionsdeklarationen (Startpos, Endpos, Funktionsname)
    	local tFuncs = {}
    	for iStart, sFunc in editor:GetText():gmatch('()[Ff][Uu][Nn][Cc]%s+([%w_]+)%s*%b()') do
    		local iLine, iEnd = editor:LineFromPosition(iStart)
    		while true do
    			iLine = iLine +1
    			iEnd = editor:GetLine(iLine):find('[Ee][Nn][Dd][Ff][Uu][Nn][Cc]')
    			if iEnd ~= nil then break end
    		end
    		table.insert(tFuncs, {iStart, editor:PositionFromLine(iLine), sFunc})
    	end
    	return tFuncs
    end -- GetFuncs
    
    
    
    
    if sParam == 'v' then
    	local varCurr, varPos = GetVarFromCursor()
    	local fIsFuncTip = false
    	if varCurr == '' then
    		varCurr, varPos = GetFuncFromCursor()
    		if varCurr ~= '' then fIsFuncTip = true end
    	end
    	local tFuncs, tTip, fMatch, fMatchFunc, fInFunc, sFunc, sTip = GetFuncs(), GetAllTip(), false, false, false
    
    
    	local GetTip = function(_var, _scope)
    		_scope = _scope or 'global'
    		for i=1,table.getn(tTip) do
    			if tTip[i][1]:lower() == _var:lower() and tTip[i][4] == _scope then return tTip[i][2] end
    		end
    		return nil
    	end -- GetTip
    
    
    	if table.getn(tTip) > 0 and table.getn(tFuncs) > 0 then  -- den Tipps die Funktionen zuordnen
    		for i=1,table.getn(tTip) do
    			for j=1,table.getn(tFuncs) do
    				if tTip[i][3] >= tFuncs[j][1] and tTip[i][3] <= tFuncs[j][2] then
    					tTip[i][4] = tFuncs[j][3]
    					break
    				end
    			end
    		end
    	end
    
    
    	local IsVarInFunc = function(_var, _pos)
    		if table.getn(tFuncs) == 0 then return false, nil end
    		for i=1,table.getn(tFuncs) do
    			if _pos >= tFuncs[i][1] and _pos <= tFuncs[i][2] then
    				return true, tFuncs[i][3]  -- Rückgabe: True/False, Funktionsname
    			end
    		end
    		return false, nil
    	end -- IsVarInFunc
    
    
    	if table.getn(tTip) == 0 then
    		Output('Keine Tipps hinterlegt!')
    	else
    		if varCurr == '' then
    			Output('Cursor steht nicht auf einer Variablen\noder einem Funktionsaufruf!')
    		else
    			if not fIsFuncTip then fInFunc, sFunc = IsVarInFunc(varCurr, varPos) end
    			if fInFunc then
    				sTip =  GetTip(varCurr, sFunc)
    				if sTip ~= nil then
    					Output(varCurr..'  [ Local: Func '..sFunc..'() ]', sTip)
    				else
    					sTip =  GetTip(varCurr, 'global')
    					if sTip ~= nil then
    						Output(varCurr..'  [ Global ]', sTip)
    					else
    						Output(varCurr, 'Es ist kein Tipp hinterlegt!')
    					end
    				end
    			elseif fIsFuncTip then
    				sTip =  GetTip(varCurr, varCurr)
    				if sTip ~= nil then
    					Output(varCurr..'( )', sTip)
    				else
    					Output(varCurr..'( )', 'Es ist kein Tipp hinterlegt!')
    				end
    			else
    				sTip =  GetTip(varCurr, 'global')
    				if sTip ~= nil then
    					Output(varCurr..'  [ Global ]', sTip)
    				else
    					Output(varCurr, 'Es ist kein Tipp hinterlegt!')
    				end
    			end
    		end
    	end
    
    
    elseif sParam == 's' then
    	local tTip = GetAllTip()  -- {variable, tipp, position, scope}
    	local sWord = AutoItTools:GetWord()
    	local tFound, sFound, sep, iS, sTipN = {}, '', ';'
    	if sWord:gsub('[%s]+', '') == '' or table.getn(tTip) == 0 then return end
    	local fList = false
    	if props['Userlist.VarGetTip'] == '1' then fList = true end
    	local OutputGrouped = function(_fList)
    		local iMax, sOut, sLineEnd = 0, '', '\n'
    		if _fList then sLineEnd = sep end
    		for i=1,table.getn(tFound) do if tFound[i][2]:len() > iMax then iMax = tFound[i][2]:len() end end
    		for i=1,table.getn(tFound) do sOut = sOut..tFound[i][1]..'...'..tFound[i][2]..('.'):rep(iMax-tFound[i][2]:len()+3)..tFound[i][3]..sLineEnd end
    		return sOut
    	end
    	local SelectCurrentWord = function()
    		local iCaret = editor.CurrentPos
    		local iLine = editor:LineFromPosition(iCaret)
    		local iLine1stPos = editor:PositionFromLine(iLine)
    		local iDiffPos = iCaret - iLine1stPos +1
    		local sLine = editor:GetLine(iLine)
    		local sWord = props["CurrentWord"]
    		if sWord == '' then return end
    		local s, p = sLine:find(sWord)
    		local tMatch = {}
    		while s ~= nil do
    			table.insert(tMatch, {s,p})
    			s, p = sLine:find(sWord, s+1)
    		end
    		if table.getn(tMatch) > 0 then
    			for i=1, table.getn(tMatch) do
    				if iDiffPos >= tMatch[i][1] and iDiffPos <= tMatch[i][2] then
    					editor:SetSel(iLine1stPos-1 +tMatch[i][1], iLine1stPos +tMatch[i][2])
    					break
    				end
    			end
    		end
    	end
    	for i=1,table.getn(tTip) do
    		iS = tTip[i][2]:lower():find(sWord:lower())
    		if iS then
    			sTipN = tTip[i][2]:gsub('\\n', ' \[LINEBREAK\] ')
    			table.insert(tFound, {tTip[i][4], tTip[i][1], sTipN})
    		end
    	end
    	if table.getn(tFound) > 0 then sFound = OutputGrouped(fList) else sFound = 'Kein Tipp mit diesem Begriff vorhanden.' end
    	SelectCurrentWord()
    	if not fList then print(sFound) editor:ReplaceSel('') return end
    	editor.AutoCSeparator = string.byte(sep)
    	editor:UserListShow(99, sFound)
    	editor.AutoCSeparator = string.byte(' ')
    end
    ----------------------------------------------------------------------------------------------------------------------------------
    Alles anzeigen

    Hier mal im Bild beide Varianten der Variablesuche über einen Teil-/Begriff des Variablentipps:
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.


    DL bisher: 33

    Dateien

    var_search_by_tip.jpg 987,02 kB – 0 Downloads VarGetTip_ListEvent.lua 310 Byte – 637 Downloads VarGetTipp[0.11].lua 14,84 kB – 611 Downloads
  • SciTE Kommentar für Variable

    • BugFix
    • 3. März 2012 um 20:50

    Ich steh grad auf'm Schlauch. Was genau meinst du?
    Eine Art Tooltip in SciTE für Variablen? Könnte man mit LUA lösen:
    - Cursor auf Variable setzen
    - HotKey drücken
    - Ausgabe in Konsole: $Variable = "Deine Beschreibung"

    Meinst du so etwas?

  • Happy Birthday eukalyptus

    • BugFix
    • 2. März 2012 um 20:12

    Auch von mir Alles Gute zum Ehrentag. :thumbup:

  • Wie erstelle ich einen RS-Code ?

    • BugFix
    • 28. Februar 2012 um 19:58

    Ich wollte schonmal den QR-Code in AutoIt abbilden und war auf der Suche nach der Spezifikation des QR-Codes. Habe dort aber nur rudimentäre Angaben gefunden. Das ist zwar alles verfügbar aber liegt z.B. in einer Normensammlung begraben, die man für "lausige" 300 Euronen erhalten kann. Deshalb habe ich nicht weiter gebastelt.
    Aber die Infos, die man so erhalten konnte, sagen zumindest aus, dass der QR-Code eine extrem hohe Fehlertoleranz aufweisen kann. Das kann man beim Erstellen festlegen, begrenzt dadurch dann die Anzahl zu speichernder Informationen. Man kann aber von einem QR-Code höchster Fehlertoleranz an beliebiger Stelle ca. 1/3 des Musters entfernen (Verschmutzen, Abreißen etc.) ohne Informationsverlust zu haben. Das fand ich recht überzeugend.

  • Zeit & Datum mit Zeit & Datum vergleichen in 2 verschiedenen Formaten.

    • BugFix
    • 28. Februar 2012 um 19:33

    Hi,
    Ergebnis ist das selbe - nur kürzer ;)

    [autoit]

    #include <Date.au3>

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

    $Date = "7:27:03 PM - 02/28/2012"
    ConsoleWrite(_TimeOver($Date) & @CRLF)

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

    Func _TimeOver($_Date)
    Local $Hour = StringRegExpReplace($Date, '(\d{1,2}):\d{1,2}:\d{1,2}\s(A|P)M\s-\s\d{2}/\d{2}/\d{4}','$1')
    If StringInStr($_Date, 'P') Then $Hour += 12
    If _DateDiff("s", _NowCalc(), StringRegExpReplace($_Date, '(\d{1,2})(:\d{1,2}:\d{1,2})\s(A|P)M\s-\s(\d{2})/(\d{2})/(\d{4})', '$6/$4/$5 ' & $Hour & '$2' )) <= 0 Then Return True
    Return False
    EndFunc

    [/autoit]
  • FotoCam - Mache Fotos mit deiner Webcam

    • BugFix
    • 26. Februar 2012 um 10:20

    Die Probleme mit der "Original"-UDF treten tatsächlich nicht bei jedem auf. Das scheint hardwareabhängig zu sein. Aber eines geht damit definitiv nicht sauber: Video-Aufzeichnung. Dort wurde nämlich nicht der wichtige Parameter fYield=1 gesetzt, der es möglich macht, während der Videoaufzeichnung den PC überhaupt noch zu benutzen, und somit auch die Anwendung ordentlich zu beenden. :D

  • FotoCam - Mache Fotos mit deiner Webcam

    • BugFix
    • 26. Februar 2012 um 09:31

    Verwende doch meine Version der Webcam.au3. Ich habe diese Bugs beseitigt.
    WebCam.au3

    Was ich dort noch nicht implementiert habe ist die Auswahl bei mehreren WebCam (hab nur eine, da kann ich das schlecht testen).

  • _FileWriteToLine hat den Geist verlassen

    • BugFix
    • 25. Februar 2012 um 21:02

    [OT]

    Zitat von Jeahaha

    oh verdammt ich bin so dooof


    Wenn Einsicht der erste Weg zur Besserung ist, können wir das tolerieren. :D
    [/OT]

    ... und setze bitte den Thread auf gelöst.

  • wie verwende ich SQL Datenbank und ODBC mit autoit ?

    • BugFix
    • 25. Februar 2012 um 16:00

    Die Vorgehensweise ist analog, du mußt nur den Connectionstring mit den Parametern für deinen ODBC-Treiber gestalten.
    Normalerweise ist da immer eine Hilfedatei mit Bsp. dabei.

  • wie verwende ich SQL Datenbank und ODBC mit autoit ?

    • BugFix
    • 25. Februar 2012 um 13:05

    Hast du den ODBC-Treiber bereits installiert?
    Ich hänge mal eine Anleitung für Firebird-ODBC an, ist bei anderen Datenbanken analog.
    Wie du die Daten mit dem ODBC-Treiber ansprichst, findest du in der Hilfe zum Treiber
    Hier mal ein Bsp.

    Spoiler anzeigen
    [autoit]

    #include<array.au3>

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

    #region - Allgemeine Deklaration
    Global $oMyError = ObjEvent("AutoIt.Error","MyErrFunc") ; Initialisieren COM error handler
    #endregion

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

    #region - Database Deklaration (im Bsp. Firebird)
    ; Datenbank:
    Global $data_source = "C:/GDILine/Daten/GDI.GDB"

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

    ; Verbindungsstring:
    Global $strConnection = "DRIVER=Firebird/InterBase(r) driver; UID=SYSDBA; PWD=masterkey; DBNAME=" & $data_source & ";"

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

    ; SQL-String zum Auslesen Feld NAME1 für einen Kunden aus Tabelle Kunden
    Global $sql_str = "Select NAME1 from Kunden where KUNDENNR = 10008;"
    Global $array
    #endregion - Database

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

    #region - Beispielsprogramm
    ; DB-Verbindungsobjekt wird erstellt:
    $oConn = _oSQLDB_Connect($strConnection)
    If @error Then Exit MsgBox(0, 'Datenbank', 'keine Verbindung')

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

    ; Ausführung eines SQL-Statements mit Methode Execute ==> liefert Recordset zurück:
    $oRecSet = _oSQLDB_Execute($oConn, $sql_str)
    If @error Then
    MsgBox(0, 'Execute', 'Fehler Beim Ausführen des SQL-Statements')
    _close()
    EndIf

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

    ; Recordset in Array wandeln:
    $array = $oRecSet.GetRows
    If Not IsArray($array) Then
    MsgBox(0, 'Array', 'kein Ergebnis')
    _close()
    EndIf
    _ArrayDisplay($array)

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

    _close()

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

    Func _close()
    If IsObj($oRecSet) Then _oRecSet_Close($oRecSet)
    If IsObj($oConn) Then _oSQLDB_Close($oConn)
    Exit
    EndFunc
    #endregion - Beispielsprogramm

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

    #region - Functions
    ;===============================================================================
    ; Function Name: _oSQLDB_Connect($connStr)
    ; Description:: erstellt eine Objektreferenz auf die im $connStr angegebene Datenbank
    ; Parameter(s): $connStr Connection-String enthält die Verbindungsparameter
    ; Return Value(s): Erfolg Referenz des ADODB-Objektes
    ; Fehler 1, @error 1
    ;===============================================================================
    Func _oSQLDB_Connect($connStr)
    Local $objConnection = ObjCreate("ADODB.Connection")
    If Not IsObj($objConnection) Then Return SetError(1,0,1)
    $objConnection.Open($connStr)
    Return $objConnection
    EndFunc ;==>_oSQLDB_Connect

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

    ;===============================================================================
    ; Function Name: _oSQLDB_Execute($oConn, $strCommand, $Options=-1)
    ; Description:: führt Kommandostring (SQL-Sequenz) aus
    ; Parameter(s): $oConn Referenz des Connection-Objektes
    ; $strCommand Kommandostring
    ; optional $Options CommandTypeEnum (http://msdn.microsoft.com/en-us/library/ms675946(VS.85).aspx) oder
    ; ExecuteOptionEnum (http://msdn.microsoft.com/en-us/library/ms676517(VS.85).aspx)
    ; Return Value(s): Eine Recordset Objekt-Referenz, ein Stream oder Nichts
    ;===============================================================================
    Func _oSQLDB_Execute($oConn, $strCommand, $Options=-1)
    Local $recAffected
    Return $oConn.Execute($strCommand, $recAffected, $Options)
    EndFunc ;==>_oSQLDB_Execute

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

    ;===============================================================================
    ; Function Name: _oRecSet_Close($oRecSet)
    ; Description:: Beendet ein RecordsetObjekt
    ; Parameter(s): $oRecSet Referenz des Objektes
    ;===============================================================================
    Func _oRecSet_Close($oRecSet)
    $oRecSet.Close
    EndFunc ;==>_oRecSet_Close

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

    ;===============================================================================
    ; Function Name: _oSQLDB_Close($oConn)
    ; Description:: Beendet die Verbindung
    ; Parameter(s): $oConn Referenz des Connection-Objektes
    ;===============================================================================
    Func _oSQLDB_Close($oConn)
    $oConn.Close
    EndFunc ;==>_oSQLDB_Close

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

    Func MyErrFunc()
    Msgbox(0,"AutoItCOM Test","Ein COM-Fehler ist aufgetreten !" & @CRLF & @CRLF & _
    "err.description is: " & @TAB & $oMyError.description & @CRLF & _
    "err.windescription:" & @TAB & $oMyError.windescription & @CRLF & _
    "err.number is: " & @TAB & hex($oMyError.number,8) & @CRLF & _
    "err.lastdllerror is: " & @TAB & $oMyError.lastdllerror & @CRLF & _
    "err.scriptline is: " & @TAB & $oMyError.scriptline & @CRLF & _
    "err.source is: " & @TAB & $oMyError.source & @CRLF & _
    "err.helpfile is: " & @TAB & $oMyError.helpfile & @CRLF & _
    "err.helpcontext is: " & @TAB & $oMyError.helpcontext )
    Local $err = $oMyError.number
    If $err = 0 Then $err = -1
    Local $g_eventerror = $err
    Endfunc
    #endregion - Functions

    [/autoit]

    Dateien

    Konfiguration Firebird ODBC.pdf 32,38 kB – 919 Downloads
  • Anti ACTA

    • BugFix
    • 24. Februar 2012 um 18:35
    Zitat von stayawayknight

    Man will scharf gegen Urheberrechtsverletzungen, vor allem bei Musikstücken vorgehen... wäre mir neu, das diese in dem Forum hier ein Thema wären...


    Dagegen wäre auch nichts einzuwenden. Aber um dieses zu erreichen werden perse alle Internetbenutzer unter Generalverdacht gestellt und ihr sämtlicher Datenverkehr wird gescant! Nach den zur Zeit gültigen Gesetzen in DE stellt so etwas eine Straftat dar! Dafür braucht es (noch) einen richterlichen Beschluß.

  • Wie steht ihr zu Fasching?

    • BugFix
    • 21. Februar 2012 um 19:47

    :D
    Ich denke, so wie die Antworten bisher ausgefallen sind ist nur eines zutreffend: PWND :rofl:

  • Wie steht ihr zu Fasching?

    • BugFix
    • 21. Februar 2012 um 19:09

    Bin bekennender Faschings- /Karnevalsverweigerer und -hasser. :thumbup:
    Vermutlich liegts dadran, dass ich keinen Alk trinke und dieses ganze Getue doch wirklich nur mit 1,5 auf'm Kessel zu ertragen ist. :rofl:

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™