Arrayeinträge an Funktion übergeben

  • Hallo. Ich versuche mal mein Problem zu schildern. Also: Ich habe eine Installationsroutine gebaut, für die Installation von verschiedenen Druckermodellen bei uns in der Firma. Allerdings ist das so wie es derzeit ist, nicht das Optimum, es funktioniert aber. Um das Skript bischen übersichtlicher zu gestalten, kann man eine ganze Ecke an Code sparen. Dafür habe ich auch eine Idee, weiß sie aber nicht umzusetzen.
    Hier mal Teile zum Code:

    Spoiler anzeigen
    [autoit]

    $Combo1 = GUICtrlCreateCombo("Drucker auswählen", 30, 250, 140, 25)
    GUICtrlSetData($Combo1, "Lexmark E232d|Lexmark E240d|Lexmark E350d|Lexmark C532N", "Drucker auswählen") ;Was ist im Dropdownmenü enthalten?
    GUICtrlSetOnEvent($Combo1, "Combo1")

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

    Func Combo1()
    $read = GUICtrlRead($Combo1)
    If $read = "Lexmark E232d" Then
    Global $driver_x86 = "E232.exe"
    Global $driver_path = @ScriptDir & "\tmp\"
    Global $driver_inf = $driver_path & "LMAAL2DA.INF"
    Global $driver_current = "Lexmark E232"
    Global $driver_old = "Lexmark E232"
    Global $print_vbs = $driver_path & "vbs.exe"
    Global $print_port = "LPT1:"
    Global $script_v = FileGetVersion(@ScriptFullPath)

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

    Global $driver
    Global $driver_processor
    Global $driver_typ
    If Not FileExists($driver_path) Then
    DirCreate($driver_path)
    EndIf
    FileInstall("./vbs.exe", $print_vbs, 1)
    $driver = $driver_path & $driver_x86
    $driver_processor = "Intel"
    FileInstall("./E232.exe", $driver, 1)
    entpacken()
    RunWait('rundll32 printui.dll,PrintUIEntry /if /b "Lexmark E232" /f "' & $driver_inf & '" /r "' & $print_port & '" /m "' & $driver_current & '"')
    _del_Driver()
    EndIf
    If $read = "Lexmark E240d" Then
    Global $driver_x86 = "E240.exe"
    Global $driver_path = @ScriptDir & "\tmp\"
    Global $driver_inf = $driver_path & "LMAAX2DA.INF"
    Global $driver_current = "Lexmark E240"
    Global $driver_old = "Lexmark E240"
    Global $print_vbs = $driver_path & "vbs.exe"
    Global $print_port = "LPT1"
    Global $script_v = FileGetVersion(@ScriptFullPath)

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

    Global $driver
    Global $driver_processor
    Global $driver_typ
    If Not FileExists($driver_path) Then
    DirCreate($driver_path)
    EndIf
    FileInstall("./vbs.exe", $print_vbs, 1)
    $driver = $driver_path & $driver_x86
    $driver_processor = "Intel"
    FileInstall("./E240.exe", $driver, 1)
    entpacken()
    RunWait('rundll32 printui.dll,PrintUIEntry /if /b "Lexmark E240" /f "' & $driver_inf & '" /r "' & $print_port & '" /m "' & $driver_current & '"')
    _del_Driver()
    EndIf;Hier kommen noch ca. 10 andere Drucker wo sich Druckertyp und Druckeranschluss unterscheiden

    [/autoit]

    Ich habe gezählt: 360 Zeilen sind es derzeit für die installation, weil es sich andauernd wiederholt... Meine Idee jetzt: Ich schreibe die Dinge die sich unterscheiden, also Druckername, .exe-Datei des Druckers, .inf-Datei und Druckeranschlussname jeweils in ein Array. Wähle ich jetzt z. B. den ersten Eintrag aus der DropDown Box aus, werden automatisch die Einträge die an Stelle 1 des jeweiligen Arrays stehen, an den besagten Stellen eingefügt. Irgendwie liegts mir "auf der Zunge", aber ich komme nicht drauf :pinch:

    Edit: ich glaube mir ist da was eingefallen...

    Einmal editiert, zuletzt von Scritch (18. Januar 2011 um 12:32)