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
[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 Daten
Alles anzeigen
Mit dem folgenden Code erstelle ich nun die Globalen Variablen:
Spoiler anzeigen
;----------------------------------------------------------------------------------------------/
; 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' _
]
;----------------------------------------------------------------------------------------------/
; 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_ini
Warum 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