Hallo,
ich habe folgendes Problem:
Das Script soll eine .exe mit den Einstellungen fernsteuern, die in der GUI eingegeben werden.
Die GUI-Eingabewerte sollen in einer INI gespeichert werden.
Spoiler anzeigen
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <String.au3>
#Region
$Form1 = GUICreate("Macro", 378, 460, 393, 137)
$Button1 = GUICtrlCreateButton("Browse...", 16, 68, 75, 25, $WS_GROUP)
$Button2 = GUICtrlCreateButton("Okay", 64, 416, 243, 33, $WS_GROUP)
$input1 = GUICtrlCreateInput("", 17, 35, 342, 21)
$input2 = GUICtrlCreateInput("", 16, 168, 177, 21)
$input3 = GUICtrlCreateInput("", 16, 224, 177, 21)
$input4 = GUICtrlCreateInput("", 16, 280, 177, 21)
$input5 = GUICtrlCreateInput("", 16, 360, 177, 21)
$Label1 = GUICtrlCreateLabel("", 16, 48, 4, 4)
$Label2 = GUICtrlCreateLabel("text1", 16, 144, 262, 17)
$Label3 = GUICtrlCreateLabel("text2", 16, 200, 77, 17)
$Label4 = GUICtrlCreateLabel("text3", 16, 256, 197, 17)
$Label5 = GUICtrlCreateLabel("text4", 16, 312, 210, 17)
$Label6 = GUICtrlCreateLabel("text5", 16, 336, 168, 17)
$Group1 = GUICtrlCreateGroup("Specify the path to the .exe", 8, 8, 361, 97, $BS_RIGHTBUTTON)
GUICtrlSetColor(-1, 0x0000FF)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group2 = GUICtrlCreateGroup("Setup", 8, 120, 361, 281, $BS_RIGHTBUTTON)
GUICtrlSetColor(-1, 0x0000FF)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
#EndRegion
If FileExists(@ScriptDir & "\Macro.ini") Then
GUICtrlSetData($input1, IniRead(@ScriptDir & "\Macro.ini", "Section", "Path","No data!"))
GUICtrlSetData($input2, IniRead(@ScriptDir & "\Macro.ini", "Section", "1","No data!"))
GUICtrlSetData($input3, IniRead(@ScriptDir & "\Macro.ini", "Section", "2","No data!"))
GUICtrlSetData($input4, IniRead(@ScriptDir & "\Macro.ini", "Section", "3","No data!"))
GUICtrlSetData($input5, IniRead(@ScriptDir & "\Macro.ini", "Section", "4","No data!"))
EndIf
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
$dialog = FileOpenDialog("open", "C:\","(*.exe)")
GUICtrlSetData($input1, $dialog)
$read = GUICtrlRead($input1)
Case $input1
$read = GUICtrlRead($input1)
Case $input2
$time = GUICtrlRead($input2)
$timeforsleep = $time * 1000
Case $input3
$prefix = GUICtrlRead($input3)
Case $input4
$suffix = GUICtrlRead($input4)
Case $input5
$NumberOfMeasurements = GUICtrlRead($input5)
Case $Button2
SaveToIni()
GUIDelete()
ExitLoop
EndSwitch
WEnd
Func SaveToIni ()
IniWrite(@ScriptDir & "\Macro.ini", "Section Path to ARTA.exe", "Path",GUICtrlRead($input1))
IniWrite(@ScriptDir & "\Macro.ini", "Section Measurement Setup", "1",GUICtrlRead($input2))
IniWrite(@ScriptDir & "\Macro.ini", "Section Measurement Setup", "2",GUICtrlRead($input3))
IniWrite(@ScriptDir & "\Macro.ini", "Section Measurement Setup", "3",GUICtrlRead($input4))
IniWrite(@ScriptDir & "\Macro.ini", "Section Measurement Setup", "4",GUICtrlRead($input5))
EndFunc
; ab hier soll´s starten...
[/autoit] [autoit][/autoit] [autoit]Run ($read)
WinWaitActive("Programm")
Bis hierhin funktionierts, denn beim nächsten Programmstart sind die letztmalig eingetragenen Werte in der GUI vorhanden.
Führt man das Script dann aber aus (also mit den Werten aus der INI), kommt folgende Fehlermeldung:
Spoiler anzeigen
C:\Documents and Settings\Administrator\My Documents\Makro.au3 (100) : ==> Variable used without being declared.:
Run ($read)
Run (^ ERROR
Abhilfe schafft nur, die Werte in der GUI wieder neu einzutragen. Das können dann sogar die selben Werte sein, aber nur so startet das Script wieder fehlerfrei.
Mein erster Verdacht war, dass Pfadangaben (C:\Program Files\...) oder andere Sonderzeichen, die in der INI gespeichert werden, das Problem sein könnten. Dann habe ich aber gemerkt, dass auch eine einfache Ziffernangabe (1) durch eine neue Ziffer (1) manuell in der GUI überschrieben werden muss, damit´s läuft...
Hirnkrampfige Grüße...
00-Schneider