Mal was anderes. Wenn du mit Windows-Server arbeitest, dann schau dir mal Actice Directory von Water an. Hat sehr viele nützliche Funktionen.
Beiträge von 4ern
-
-
wie sieht den dein Code aus??? Ich denke es liegt nicht an Excell. Aber um das ganze testen müsstest du hier mehr von deinem Code preisgeben.
-
hm hatte vor einiger Zeit dasselbe Problem. Die Lösung war ein kurzer Sleep Befehl in der LOOP.
[autoit]While 1
[/autoit]
$Ret &= StdoutRead($PID)
If @error Then ExitLoop
sleep(100)
WEnd -
-
Was hast du den schon alles versucht?
Ohne Code ist schwer dir zu helfen... -
@ Bugfix
ich habe das Backup nun so angepasst, dass bei einer Versionsänderungen wie folgt ein Backup erstellt wird.
1. (Falls nicht vorhanden) wird ein Backup Ordner im Projekt Ordner erstellt. "meinProjekt/Backup/"
2. (Falls nicht vorhanden) wird im Backup Ordner ein Unter Ordner mit der Version erstellt. "meinProjekt/Backup/Version 0.1"
3. alle Projekt Dateien mit dieser Version landen nun im diesem Ordner "meinProjekt/Backup/Version 0.1/meinProjekt_[0.1].au3"Hier die geänderte "def_backup_files"
Spoiler anzeigen
Code
Alles anzeigendef backup_file(self, view, version): # backup_path = self.window.active_view().file_name() settings = sublime.load_settings("AutoIt.sublime-settings") backup_path = settings.get('version_backup_path', None) if backup_path: path = view.file_name() suffix = get_current_suffix(view) filename = path[string_in_str(path, '\\', -1) : string_in_str(path, '.', -1) -1] a , b = path.split(filename) backup_folder = a + 'Backup' folder_create(backup_folder) save_path = backup_folder + '\\Version ' + version # save_path = backup_path + '\\BUVer_' + filename + '.' + suffix folder_create(save_path) newfile = filename + '_[' + version + '].' + suffix # print(newfile) fh = open(save_path + '\\' + newfile, 'w+') content = self.view.substr(sublime.Region(0, self.view.size())) fh.write(content) fh.close() print('>> Backup saved <<')ich denke wie ich das gelöst habe ist nicht die feine englische Art
Aber mit meinen aktuellen Python Kenntnissen ist das für mich ein Milenstein 
-
Naja bei Projekterstellung gehe ich immer wie folgt vor:
Ich erstelle ein Projekt Ordner. In sublime gehe ich dann ADD Folder to Project und speichere die Projekt Dateien im Ordner.
Mir würde es auch reichen, wenn man ein festen Backup Ordner erstellt und dort Dan ein unter Ordner mit dem projektnamen erstellt wird. Bei jedem Versions Sprung der Projekt Datei soll, wie auch schon bei deiner Backup Lösung eine Datei mit dem Versionsnamen abgelegt werden.
-
Wenn du ordentliche Automatisierungen willst, dann tue dir ein Gefallen und löschen den Au3Recorder. Denn was dieser produziert ist nur Müll.
Wenn du keine Ahnung von AutoIt hast und desen Möglichkeiten. Dan empfehle ich dir dieses Buchdurchzulesen.
-
-
Perfekt das ist die Lösung, nach der ich gesucht habe.
Meine Lösung:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
_get_ini($pf_ini)
$salUdf = _getSet_Salcus_VarsMsgBox(0, 0, $salUdf('Information_Anrede'))
[/autoit] [autoit][/autoit] [autoit]
MsgBox(0, 0, $salUdf('Information_Vorname'));----------------------------------------------------------------------------------------------/
[/autoit] [autoit][/autoit] [autoit]
; Beschreibung: = Liest die INI's in ein Array und erstellt Globale Variablen
; Parameter: = ini Pfad (wird gemäß der Hash Version ermittelt)
; @return: = Globale Variablen
; @error: = (-)
;----------------------------------------------------------------------------------------------/
func _get_ini($pf_INI)
;----------------------------------------------------------------------------------------------/
; Array
; 1 - Deminsonal
; [Dateiname]
;----------------------------------------------------------------------------------------------/
Local Static $a_IniFiles[] = _
[ _
'\individual.ini', _
'\ticket.ini', _
'\Suchmasken.ini' _
];----------------------------------------------------------------------------------------------/
[/autoit] [autoit][/autoit] [autoit]
; Lese INI Instance in Variablen ein.
; - Sectionname = Globale $variable
; - Sectionkey = String (Instance)
;----------------------------------------------------------------------------------------------/
for $i = 0 to Ubound($a_IniFiles) -1
$a_INI = IniReadSection($pf_INI & $a_IniFiles[$i], 'Instance')
for $ii = 1 to Ubound($a_INI) -1
_getSet_Salcus_Vars($a_INI[$ii][0],$a_INI[$ii][1],'set')
next
next
endfunc ;<==/get_ini;----------------------------------------------------------------------------------------------/
[/autoit] [autoit][/autoit] [autoit]
; Beschreibung: = Funktions Beschreibung
; Parameter: = $_strVarName = Name der Sektion
; = $_value = Wert der Sektion = Default = ''
; = $_action = Aktion die durchgeführt werden soll = Default = 'get'
; @return: = key Wert
; @error: = ()
;----------------------------------------------------------------------------------------------/
func _getSet_Salcus_Vars($_strVarName, $_value='', $_action='get')
Local Static $oDict = ObjCreate('Scripting.Dictionary')Switch $_action
[/autoit]
Case 'get'
If $oDict.Exists($_strVarName) Then
Return $oDict.Item($_strVarName)
Else
Return SetError(1,0,'')
EndIf
Case 'set'
If Not $oDict.Exists($_strVarName) Then
$oDict.Add($_strVarName, $_value)
Else
$oDict.Item($_strVarName) = $_value
EndIf
EndSwitch
endfunc ;<==/getSet_Salcus_VarsVielen Vielen Dank

-
Ok die Scripting.Dictionary ist neu für mich. Hast du evtl. ein kleines bsp.?
-
Hallo zusammen,
ich suche nach einer Lösung um auf Globale Variablen zu verzichten. Folgender Hintergrund:
In unsere Firma entwickeln wir viele Automatisierung die zum größten Teil auf eine Externe Anwendung zugreifen und bestimmte Aufgaben erledigen. Nun haben wir das Problem, dass alle 1-3 Monate die externe Anwendung aktualisiert wird und somit sich einige Control Instanzen, ID's, Namen usw ändern. Dadurch haben wir einen enormen Aufwand die, für das Programm erstellte UDF, mit den richtigen Daten zuspeisen, jedes einzelne Script neu Kompilieren und an alle Nutzer verteilen.
Aus diesem Grund habe ich nun unsere UDF so angepasst, dass alle Daten aus mehreren INI Dateien gezogen werden und wir lediglich die Daten in den INI Dateien anpassen müssen. Dadurch ersparen wir uns das neu kompilieren und verteilen der Scripte.
Nun zum eigentlichen Problem.
Die INI ist wie folge aufgebaut:
Spoiler anzeigen
Code
Alles anzeigen[Instance] saUDF_Information_Anrede = [CLASS:Edit;INSTANCE:8] saUDF_Information_Name = [CLASS:Edit;INSTANCE:9] saUDF_Information_Vorname = [CLASS:Edit;INSTANCE:10] saUDF_Information_Kundensubtyp = [CLASS:Edit;INSTANCE:11] saUDF_Information_Firma = [CLASS:Edit;INSTANCE:13] saUDF_Information_Geburtstdatum = [CLASS:Edit;INSTANCE:15] saUDF_Information_PLZ = [CLASS:Edit;INSTANCE:16] saUDF_Information_Stadt = [CLASS:Edit;INSTANCE:17] saUDF_Information_Strasse = [CLASS:Edit;INSTANCE:18] saUDF_Information_HausNr = [CLASS:Edit;INSTANCE:19] saUDF_Information_Adresszusatz = [CLASS:Edit;INSTANCE:20] und weiter ca. 100 DatenMit dem folgenden Code erstelle ich nun die Globalen Variablen:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
;----------------------------------------------------------------------------------------------/
; Beschreibung: = Liest die INI's in ein Array und erstellt Globale Variablen
; Parameter: = ini Pfad (wird gemäß der Hash Version ermittelt)
; @return: = Globale Variablen
; @error: = (-)
;----------------------------------------------------------------------------------------------/
func _get_ini($pf_INI)
;----------------------------------------------------------------------------------------------/
; Array
; 1 - Deminsonal
; [Dateiname]
;----------------------------------------------------------------------------------------------/
Local Static $a_IniFiles[] = _
[ _
'\individual.ini', _
'\ticket.ini', _
'\Suchmasken.ini' _
];----------------------------------------------------------------------------------------------/
[/autoit]
; Lese INI Instance in Variablen ein.
; - Sectionname = Globale $variable
; - Sectionkey = String (Instance)
;----------------------------------------------------------------------------------------------/
for $i = 0 to Ubound($a_IniFiles) -1
$a_INI = IniReadSection($pf_INI & $a_IniFiles[$i], 'Instance')
for $ii = 1 to Ubound($a_INI) -1
Assign($a_INI[$ii][0], $a_INI[$ii][1], 2)
next
next
endfunc ;<==/get_iniWarum ich bei Assign die Variablen Global setze hat den Grund, dass man überall im Script auf diese Variablen zurückgreift. Ich könnte natürlich die Instanzen in einem Array lassen und dieses jeder Funktion mit geben und über Array Index die Instanzen setzen, jedoch unterstützt AutoIt kein Assoziative Arrays sodass man beim Lesen des Scripts absolut den Überblick verliert und ein kleines Buch mit den Inhalt der Array neben sich liegen haben muss

Ich hoffe einer von euch kann mir ein Denkanstoß verpassen

-
-
-
@ Bugfix, Richtig schönes Plugin!!! absolut genial.
Ich habe mir gedacht, dass AutoIt ein eigenen Menü Punkt bekommen sollte, um alle Sachen unterzubringen. Zudem habe ich in BugFix Au3plugins.py 2 Aufrufe integriert. CodeWizard & Koda.
Einfach die angehängte ZIP Datei in "Data\Packages\AutoItScript" entpacken und ersetzen.
Die Einstellungen schauen dan So aus. PS die Pfade sollten natürlich angepasst werden.
Code{ "autoit_exe_path": "C:/AutoIt3/AutoIt3.exe", "autoit_compiler_path": "C:/AutoIt3/Aut2Exe/Aut2exe.exe", "tidy_exe_path": "C:/AutoIt3/SciTE/Tidy/Tidy.exe", "version_backup_path": "C:/Code/Projekte/AutoIt/Backup", "code_wizzard_exe_path": "C:/AutoIt3/SciTE/CodeWizard/CodeWizard.exe", "gui_builder_exe_path": "C:/AutoIt3/SciTE/Koda/FD.exe", "extensions": ["au3"], } -
-
-
-
@ Bugfix auf der AutoItScritp GitHub Seite ist ein Includehelper integriert. An diesem könnte man sich doch die Kommunikation mit Sublime abschauen und den Wrapper basteln. Leider versteh ich nicht ganz wie ich den Wrapper die Informationen zuschicke...
Zudem, darf ich dein Sublime Theme auf meinen Blog mit anbieten? Selbstverständlich unter deinem Namen?
-