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

  • Sparen (erledigt)

    • BugFix
    • 12. November 2016 um 23:43

    In meinem gesamten Arbeitsleben seit Beitritt zur BRD, bin ich noch nie in die Verlegenheit gekommen, mir Gedanken zu machen, was ich mit überschüssigem Geld anfangen soll. Meist war ich froh, wenn das Ende des Geldes nicht vor dem Ende des Monats war.
    Wenn ich die Kohle hätte, würden für mich nur Grundbesitz und Edelmetall/Diamanten in Frage kommen.
    Aktien sollte man nur in Betracht ziehen, wenn man bereit ist das Geld zu verlieren. Deshalb heißt es ja Risikokapital.
    Kapitalanlage heißt in diesen Zeiten, zu versuchen, dass das Kapital nicht weniger wird - eine Mehrung ist illusorisch.

  • Dienst - Suche - Programm, Verbesserungsvorschläge.

    • BugFix
    • 12. November 2016 um 11:09

    @autoBert: Da hast du mich vielleicht falsch verstanden. Dass unberechtigte Dritte nicht auf die Daten zugreifen dürfen ist ja auch korrekt. Jedoch hat das mit einer Import-/Exportmöglichkeit von Daten nichts zu tun und somit ist es auch irrsinnig sowas untersagen zu wollen.
    Aber ich habe schon häufiger im Gespräch mit anderen Datenschutzbeauftragten festgestellt, dass oft die Gesetzesinhalte nicht verstanden werden und mit einer Art vorauseilendem Gehorsam statt der gesetzlich geforderten bestimmungsgemäßen Nutzung eine möglichst geringe Nutzung von sensiblen Daten angestrebt wird. 8|

  • Bibliothek "FileEx"

    • BugFix
    • 11. November 2016 um 19:57

    Ich habe mal wieder ein paar Funktionen gebraucht, die standardmäßig in Lua nicht enthalten sind und deshalb eine kleine Bibliothek "FileEx" erstellt.
    Vielleicht habt ihr ja Verwendung für. Wenn ihr bereits die shell.dll installiert habt (und diese auch im package.path registriert ist), greife ich darauf zu, anderenfalls über die io-Bibliothek mit CMD - da poppt dann kurz das CMD-Fenster auf.

    Folgende Funktionen sind enthalten:

    Code
    fileexists          - Prüfen Datei auf Existenz
    getfilesrec         - Rekursive Dateiauflistung
    getfolderrec        - Rekursive Ordnerauflistung
    getscriptdir        - Abfrage Skriptverzeichnis
    list                - Liste aller Funktionen des Moduls
    requireprotected    - Require mit Abfangen Fehlermeldung
    syntax.functionname - Syntax der Funktion


    Das Einbinden der Bibliothek erfolgt, wie üblich, mit fe = require "FileEx". Natürlich kann man statt fe einen anderen Modulnamen verwenden.

    -- Auflisten der Funktionen
    fe.list()

    -- Syntax Anzeigen (z.B. für "getfilesrec")
    fe.syntax.getfilesrec()

    Code
    -- TIME_STAMP   2016-11-11 19:45:30
    
    
    do
    	----------------------------------------------------------------------------------------------------
    	-- requires a library by protected call
    	-- on error:   returns nil
    	-- on success: returns the library table
    	----------------------------------------------------------------------------------------------------
    	local RequireProtected = function(_lib)
    		local loaded_lib
    		if pcall(function() loaded_lib = require(_lib)  end) then
    			return loaded_lib
    		else
    			return nil
    		end
    	end
    
    
    	-- load the shell library, if exists
    	-- if not exists, shell has value: nil
    	local shell = RequireProtected('shell')
    
    
    
    
    	----------------------------------------------------------------------------------------------------
    	-- checks if any file exists
    	----------------------------------------------------------------------------------------------------
    	local FileExists = function(_path)
    		if shell then return shell.fileexists(_path) end
    		local fh = io.open(_path)
    		if not fh then return false end
    		fh:close()
    		return true
    	end
    
    
    
    
    	----------------------------------------------------------------------------------------------------
    	-- returns the script directory
    	----------------------------------------------------------------------------------------------------
    	local GetCurrentDir = function()
    		local sFullPathCurrent = debug.getinfo(1).short_src
    		local pos = sFullPathCurrent:find('\\[^\\]*$')
    		if pos == nil then pos = sFullPathCurrent:find('/[^/]*$') end
    		return sFullPathCurrent:sub(1, pos-1)
    	end
    
    
    
    
    	----------------------------------------------------------------------------------------------------
    	-- returns a table with all recursive files (full path name) from given root
    	-- gets by default all files, filter with parameter "_filetype", i.e. "lua" or "lua dll" or "lua dll any_other"
    	-- files can excluded by their attrib, i.e. "hs" or "rs"
    	-- possible: H-hidden, S-system, L-reparse points, R-read only, A-archive, I-not content indexed
    	----------------------------------------------------------------------------------------------------
    	local GetFilesRecursive = function(_rootpath, _filetype, _exclude_attrib)
    		local tFiles, popen, pfile, pos, ext = {}, io.popen
    		_rootpath = _rootpath or GetCurrentDir()
    		_filetype = _filetype or '*'
    		_exclude_attrib = _exclude_attrib or ''
    		_exclude_attrib = _exclude_attrib:gsub('(.)', '-%1')
    
    
    		-- write file types into table
    		local tFiletype = {}
    		if _filetype ~= '*' then
    			for v in string.gmatch(_filetype, "%S+") do
    				table.insert(tFiletype, v)
    			end
    		end
    
    
    		-- function to insert file pathes in output table by filtering
    		local function insert(_file)
    			if #tFiletype == 0 then
    				table.insert(tFiles, _file)
    			else
    				pos = _file:find('\.[^\.]+$')
    				ext = _file:sub(pos+1)
    				for i,v in ipairs(tFiletype) do
    					if v == ext then table.insert(tFiles, _file) end
    				end
    			end
    		end
    
    
    		-- get all files recursively from _rootpath and filter it
    		if shell then -- use shell library, if exists
    			_, result = shell.exec('CMD /c dir "'.._rootpath..'" /b /o:N /s /a-d'.._exclude_attrib, nil, true, true)
    			local tResult = {}
    			for v in result:gmatch("[^\n]+") do
    				table.insert(tResult, (v:gsub('\r', ''):gsub('\n', '')))
    			end
    			-- check if files found
    			if #tResult == 1 then if not shell.fileexists(tResult[1]) then return {} end end
    			for i,file in ipairs(tResult) do
    				insert(file)
    			end
    		else
    			local pfile = popen('dir "'.._rootpath..'" /b /o:N /s /a-d'.._exclude_attrib)
    			local firstfile = true
    			for file in pfile:lines() do
    				if firstfile then
    					if not FileExists(file) then break
    					else firstfile = false
    					end
    				end
    				insert(file)
    			end
    			pfile:close()
    		end
    
    
    		return tFiles
    	end
    
    
    
    
    	----------------------------------------------------------------------------------------------------
    	-- returns a table with all recursive sub folders (full path name) from given root
    	----------------------------------------------------------------------------------------------------
    	local GetFolderRecursive = function(_rootpath)
    		local tsub, popen = {}, io.popen
    		_rootpath = _rootpath or GetCurrentDir()
    
    
    		if shell then
    			_, result = shell.exec('CMD /c dir "'.._rootpath..'" /b /o:N /s /a:d', nil, true, true)
    			for v in result:gmatch("[^\n]+") do
    				table.insert(tsub, (v:gsub('\r', ''):gsub('\n', '')))
    			end
    		else
    			local pfile = popen('dir "'.._rootpath..'" /b /o:N /s /a:d')
    			for folder in pfile:lines() do
    				table.insert(tsub, folder)
    			end
    			pfile:close()
    		end
    
    
    		return tsub
    	end
    
    
    
    
    	----------------------------------------------------------------------------------------------------
    	local FileEx = {
    		-- Funktionen
    		fileexists       = FileExists,
    		getfilesrec      = GetFilesRecursive,
    		getfolderrec     = GetFolderRecursive,
    		getscriptdir     = GetCurrentDir,
    		requireprotected = RequireProtected,
    		list             = function() print('fileexists           - Prüfen Datei auf Existenz')
    		                              print('getscriptdir         - Abfrage Skriptverzeichnis')
    		                              print('getfilesrec          - Rekursive Dateiauflistung')
    								      print('getfolderrec         - Rekursive Ordnerauflistung')
    								      print('list                 - Liste aller Funktionen des Moduls')
    								      print('requireprotected     - Require mit Abfangen Fehlermeldung')
    								      print('syntax.functionname  - Syntax der Funktion') end,
    		syntax           = {
    			['fileexists']       = function() print('modul.fileexists(_path)')
    											  print('      _path           - Dateipfad der auf Existenz geprüft wird')
    								   end,
    			['getfilesrec']      = function() print('modul.getfilesrec(_rootpath, _filetype, _exclude_attrib)')
    											  print('      _rootpath       - Startpfad (Default = ScriptDir)')
    											  print('      _filetype       - String Dateityp-Filter, z.B. "jpeg jpg png" (Default = "*")')
    											  print('      _exclude_attrib - String Datei-Attribute für Ausschluss , z.B. "HS" od. "RS" (Default = "")')
    											  print('                        H-hidden, S-system, L-reparse points, R-read only, A-archive, I-not content indexed')
    											  print('Return: Table mit den kpl. Dateipfaden')
    								   end,
    			['getfolderrec']     = function() print('modul.getfolderrec(_rootpath)')
    											  print('      _rootpath       - Startpfad (Default = ScriptDir)')
    											  print('Return: Table mit den kpl. Ordnerpfaden')
    			                       end,
    			['getscriptdir']     = function() print('modul.getscriptdir()')
    											  print('Return: Das Scriptverzeichnis')
    								   end,
    			['list']             = function() print('modul.list()')
    											  print('Return: Liste aller Funktionen')
    								   end,
    			['syntax']           = function() print('modul.syntax.Funktionsname()')
    											  print('Return: Syntax der Funktion')
    								   end,
    			['requireprotected'] = function() print('modul.requireprotected(_lib)')
    											  print('      _lib            - Name der zu ladenden Bibliothek')
    											  print('Return: Erfolg - Table der Bibliothek,  Fehler - nil')
    			                       end
    		}
    	}
    	----------------------------------------------------------------------------------------------------
    
    
    	return FileEx
    end
    Alles anzeigen

    Dateien

    FileEx.lua 7,32 kB – 342 Downloads
  • Dienst - Suche - Programm, Verbesserungsvorschläge.

    • BugFix
    • 11. November 2016 um 12:21
    Zitat von autoBert

    Datenexport/-Import aus datenschutzrechtlichen Gründen verbietet

    OMG, wenn ich solch einen hanebüchenen Unsinn immer lese. :Face:
    Da hat man wahrscheinlich den Hausmeister zum Datenschutzbeauftragten gedrängt, weil sich kein anderer fand. Und der, kraft seiner Wassersuppe, interpretiert mal eben das Datenschutzgesetz neu.
    Wäre ja eine Katastrophe, wenn im DSG ein Passus wäre, der Datenexport/Import verbieten würde (dann wäre jede Datensicherung obsolet!). Ich kenne zwar nicht die Richtlinien aller Länder, aber weder in BaWü noch in SaAnh gibt es eine derartige Festlegung.

  • Allgemeine Hilfe Verbesserungen und Fragen zum Array

    • BugFix
    • 11. November 2016 um 12:11
    Zitat von s.koni

    $PAR[0] = 8 ; Gewöhn dir am besten gleich an, die Dimensionen des Arrays im Array selbst zu speichern, so geht es viel leichter mit schleifen usw.

    Hier könnten wir gleich wieder Grundsatzdiskussionen führen. :P
    Ob das Führen der Elementezahl des Arrays an dessen 0-Index vorteilhaft ist, sei mal dahingestellt. Wir sind es halt von vielen AutoIt-internen Funktionen so gewöhnt.
    Ich halte es nur dann für sinnvoll, wenn ich ein Array dynamisch gestalten möchte, weil ich dann keine extra Variable anlegen muss um UBound auszulesen, und mit dem Wert der Variablen+x ein ReDim durchzuführen.

    @mmk1988
    In meiner Signatur findest du ein Tutorial zu Arrays. Sollte dir für den Anfang weiter helfen.

  • XMl Datei mit AutoIT Script ausführen

    • BugFix
    • 10. November 2016 um 12:42

    aus der Hilfe zu FileCopy:
    For instance the combined flag $FC_OVERWRITE (1) + $FC_CREATEPATH (8) overwrites
    the target file and pre-checks for the destination directory structure and if it
    doesn't exist creates it automatically.

    Some file attributes can make the overwriting impossible, if this is the case look
    at FileSetAttrib() to change the attributes of a file.

    Das Overwrite-Flag ist richtig gesetzt, insofern solltest du deine Dateiattribute prüfen um herauszufinden, warum ein Überschreiben nicht geht. evtl. fehlen dem Skript auch die Rechte (#RequireAdmin ?).

  • SuchString zwischen den ersten und den letzten Buchstaben eines Satzes verwenden

    • BugFix
    • 9. November 2016 um 22:55

    @bazii Ich würde sagen: Klassisches UND-ODER Problem.

    So wie du es beschrieben hast, bist du vom umgangssprachlichen UND ausgegangen. Das ist programmiertechnisch aber ein ODER!
    Bsp.:
    Ein Geschäft hat geöffnet: Mo und Freitag von 10-12 Uhr
    Programmabfrage, wann ist die Bedingung OFFEN wahr? - wenn: "Mo (10-12)" ODER "Fr (10-12)"

    Darum bei Fragestellungen bitte genau auf die Bedingungen achten. :rolleyes:

  • XMl Datei mit AutoIT Script ausführen

    • BugFix
    • 9. November 2016 um 14:11
    Zitat von Sent1

    Wie bekomme ich es nun hin das die Datei dann automatisch überschrieben wird?

    Liest du überhaupt die Posts, die wir schreiben und versuchst den Code zu verstehen? Ist doch alles erklärt:

    Local $iErr = FileCopy('c:\xml\MyXMLFile.xml', 'f:\OldFiles\MyXMLFile.xml', $FC_OVERWRITE + $FC_CREATEPATH)

  • XMl Datei mit AutoIT Script ausführen

    • BugFix
    • 9. November 2016 um 12:35

    Das hatte doch @Bitnugger bereits gepostet, du hattest falsch abgeschrieben.

    Zeile 19/20

    AutoIt
    Local $iErr = FileCopy('c:\xml\MyXMLFile.xml', 'f:\OldFiles\MyXMLFile.xml', $FC_OVERWRITE + $FC_CREATEPATH)
    If $iErr = 0 Then Exit MsgBox($MB_SYSTEMMODAL, "", "An error occurred!) +1
  • XMl Datei mit AutoIT Script ausführen

    • BugFix
    • 9. November 2016 um 11:55
    Zitat von Sent1

    Was bewirkt die Linie 4 genau?

    Da fehlt ein If davor, dann passt es.

  • Listview Kopfzeile (Header) in String lesen

    • BugFix
    • 9. November 2016 um 11:38

    Guckst du: Hilfe zur Listview-UDF, Hilfe zur Header-UDF

  • Warnungen abschalten in Scite

    • BugFix
    • 9. November 2016 um 09:53
    Zitat von Bitnugger

    und SciTE hat da eh nichts mit zu tun... denn die Medung kommt von AutoIt.

    Nicht ganz, die Art und Weise, wie der Fehler in SciTE angezeigt wird war ein Problem. Bei aktivierter Inline-Meldung werden lauter Textboxen in SciTE in die Source geknallt. Einer mag es, ein anderer halt nicht. Ich bevorzuge auch die Meldung in der Konsole zum Anspringen des Fehlers per Doppelklick.

    [OT]
    Wer es nicht mag, dass die letzte Codezeile am unteren Bildschirmrand "klebt", kann dieses deaktivieren:

    Code
    #~ Scrollen auch über die letzte vorhandene Zeile hinaus
    end.at.last.line=0

    [/OT]

  • Sleep alternative

    • BugFix
    • 8. November 2016 um 14:50
    Zitat von Grave92

    Adlibregister führt eine Funktion immer wieder aus in einem bestimmten Zeitraum?

    Ja, standardmäßig alle 250 ms.

  • Sleep alternative

    • BugFix
    • 8. November 2016 um 14:28

    Verwende doch TimerInit(), TimerDiff() - oder auch AdlibRegister.

  • Warnungen abschalten in Scite

    • BugFix
    • 8. November 2016 um 14:00
    Zitat von TheDude

    und das halbe Editor-Fenster dann gelb ist.

    Die Inline-Meldungen finde ich persönlich sehr unangenehm und habe diese generell abgeschaltet, kommt somit nur noch Meldung in der Konsole:
    In den User properties: error.inline=0

    Warnungen generell abzuschalten ist m. W. nicht mgl. (oder ich habe es noch nicht gefunden ^^ ).

    Nebenbei:
    Das Auslagern der Deklarationen in eine Funktion ist nicht unbedingt sinnvoll, verwende dafür doch lieber #region #endregion.
    Deine Deklarationen sind Global, also erstelle sie doch auch im Globalen Namespace. Es ist immer seltsam anzusehen, wenn im Lokalen Namespace (der Funktion) eine Globale Variable erstellt wird. Sowas ist nur in Ausnahmefällen sinnvoll, z.B. If Not IsDeclared("Variable") Then Global $Variable = 'xyz'.

  • CSV-Datei (Trennzeichen Semikolon) enthält in den Feldern auch Semikolons

    • BugFix
    • 28. Oktober 2016 um 09:48

    Erst mal Willkommen. Wie es aussieht bin ich nun nicht mehr der einzige hier, der sich beruflich mit "Schläfern" befasst.

    Zitat von hafoer

    Als Feld-Trennzeichen wird in der CSV-Datei das Semikolon verwendet. ....

    Leider wird in den Feldern bzw. in den Texten auch des öfteren das Semikolon verwendet.

    CSV-Dateien sind doch nicht auf das Semikolon als Trenner angewiesen. Ich weiß ja nicht aus welcher Quelle du die Dateien bekommst, aber vielleicht kann man ja schon bei deren Erstellung eine Änderung vornehmen, z.B. auf TAB als Trenner.

    [OT]Immer dieser Fokus auf AHI - wo bleibt der ODI? :P [/OT]

  • [OT] Tastendruck am Monitor anzeigen

    • BugFix
    • 25. Oktober 2016 um 18:35

    Das ist grundsätzlich nicht sehr schwer - gehört aber zu tendenziell gefährlichen Techniken (Keylogger) und wird deshalb nicht supportet.
    Habe dafür bitte Verständnis.

  • Autoit wartet ?

    • BugFix
    • 24. Oktober 2016 um 13:48

    Könnte an der Version 3.3.14.2 liegen, da wurde FileCopy verändert

    Zitat von Changelog
    • Added #2665: FileCopy() no longer fails when copying EFS files to destinations that don't support encryption.

    Vielleicht mal wieder was kaputt-optimiert.


    EDIT: Vergiß es, die Änderung war schon bei 0

  • Autoit wartet ?

    • BugFix
    • 24. Oktober 2016 um 13:40

    Ich habe die 3.3.14.0, Dateigröße war einmal ca. 230 MB, einmal 30 MB.

    Das ist aber seltsam und wiederspricht der kpl. bisherigen AutoIt-Philosophie, wenn Befehlsausführungen nicht abgewartet werden (Ausnahme: Run Shellexecute).

  • Autoit wartet ?

    • BugFix
    • 24. Oktober 2016 um 13:20
    Zitat von chip

    Es wird nicht gewartet sondern einfach die nächste Zeile ausgeführt.

    Das lese ich jetzt erst.
    @chip - wie kommst du denn auf die Idee? Selbstverständlich wird das Ende der Operation abgewartet, bevor der nächste Befehl abgearbeitet wird.

    Kleines Beweisskript (als Dateien zum Kopieren setzt irgendwas mit zig MB ein)

    AutoIt
    $1 = "documents-export-2016-04-02.zip"
    $2 = "documents-export-2016-04-03.zip"
    
    
    $sResult = _Time() & ' Start 1' & @CRLF
    $ret = FileCopy('C:\Users\BugFix\Downloads\' & $1, 'I:\' & $1)
    $sResult &= _Time() & ' Result 1: ' & $ret & @CRLF
    $sResult &= _Time() & ' Start 2' & @CRLF
    $ret = FileCopy('C:\Users\BugFix\Downloads\' & $2, 'I:\' & $2)
    $sResult &= _Time() & ' Result 2: ' & $ret & @CRLF
    $sResult &= _Time() & ' Ende' & @CRLF
    
    
    ConsoleWrite($sResult & @CRLF)
    
    
    Func _Time()
    	Return StringFormat('%s:%s:%s.%s', @HOUR, @MIN, @SEC, @MSEC)
    EndFunc
    Alles anzeigen


    Ergebnis:

    Code
    13:15:33.351 Start 1
    13:15:58.848 Result 1: 1
    13:15:58.848 Start 2
    13:16:01.326 Result 2: 1
    13:16:01.326 Ende

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™