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.
Beiträge von BugFix
-
-
@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.
-
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:
Codefileexists - 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
Alles anzeigen-- 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 -
Datenexport/-Import aus datenschutzrechtlichen Gründen verbietet
OMG, wenn ich solch einen hanebüchenen Unsinn immer lese.
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. -
$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.
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. -
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 ?). -
@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.
-
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)
-
Das hatte doch @Bitnugger bereits gepostet, du hattest falsch abgeschrieben.
Zeile 19/20
-
Was bewirkt die Linie 4 genau?
Da fehlt ein If davor, dann passt es.
-
-
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:[/OT]
-
Adlibregister führt eine Funktion immer wieder aus in einem bestimmten Zeitraum?
Ja, standardmäßig alle 250 ms.
-
Verwende doch TimerInit(), TimerDiff() - oder auch AdlibRegister.
-
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=0Warnungen 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'. -
Erst mal Willkommen. Wie es aussieht bin ich nun nicht mehr der einzige hier, der sich beruflich mit "Schläfern" befasst.

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?
[/OT] -
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. -
Könnte an der Version 3.3.14.2 liegen, da wurde FileCopy verändert
- 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
-
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).
-
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
Alles anzeigen$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
Ergebnis: