Moinsen
Ich komme mit einem Script leider nicht weiter. Auf 2 Rechnern wird der loop ordnungsgemäß verlassen und auf einigen anderen nicht. ![]()
Alle Rechner laufen mit Win7. Es geht um die 2. Bedingung. Die 1. und die 3. werden auf allen Rechnern ordnungsgemäß verlassen.
(Sorry, bin noch Autoit-Anfänger, der nun etwas ratlos ist.^^)
Hier der elementare Teil des Scriptes:
C
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <StringConstants.au3>
#include <MsgBoxConstants.au3>
While 1
; Fenster definieren
$Form1_1 = GUICreate("Eti-Scan", 320, 227, 399, 282)
$Input1 = GUICtrlCreateInput("EAN / Artikelnummer", 80, 68, 217, 21)
$Input2 = GUICtrlCreateInput("Charge", 80, 110, 153, 21)
$Input3 = GUICtrlCreateInput("Menge", 80, 149, 97, 21)
$Label0 = GUICtrlCreateLabel("Scan für Etiketten 0.90", 80, 16, 223, 28)
GUICtrlSetFont(-1, 14, 800, 0, "MS Sans Serif")
$Label1 = GUICtrlCreateLabel("EAN", 8, 68, 40, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Label2 = GUICtrlCreateLabel("Charge", 8, 109, 62, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Label3 = GUICtrlCreateLabel("Menge", 8, 148, 58, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)
; Eingabe auf 13 Stellen prüfen
While 2
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Input1
Sleep(500)
$ean = GuiCtrlRead($Input1)
If StringLen($ean)<>13 Then
ControlSetText("Eti-Scan", "","[CLASS:Edit; INSTANCE:1]", "")
ControlClick("Eti-Scan", "","[CLASS:Edit; INSTANCE:1]")
Else
ExitLoop
EndIf
EndSwitch
WEnd
; Charge Eingabe 8 Zeichen
ControlClick ("Eti-Scan", "", "[CLASS:Edit; INSTANCE:2]")
ControlSetText("Eti-Scan", "","[CLASS:Edit; INSTANCE:2]", "")
While 3
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Input2
Sleep(500)
$charge = GuiCtrlRead($Input2)
; Erste Bedingung
Local $aResult = StringRegExp($charge, '[0-9]{6,6}[a-zA-Z]{2}', $STR_REGEXPARRAYMATCH)
If @error Then
ControlSetText("Eti-Scan", "", "[CLASS:Edit; INSTANCE:2]", "")
ControlClick("Eti-Scan", "", "[CLASS:Edit; INSTANCE:2]")
; Zweite Bedingung
;If StringLen($charge)<>8 Then
;ControlSetText("Eti-Scan", "", "[CLASS:Edit; INSTANCE:2]", "")
;ControlClick("Eti-Scan", "", "[CLASS:Edit; INSTANCE:2]")
Else
ExitLoop
EndIf
EndSwitch
WEnd
; Mengeneingabe 1-100
While 4
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Input3
Sleep(500)
$menge = GuiCtrlRead($Input3)
If ($menge) > 101 Then
ControlSetText("Eti-Scan", "","[CLASS:Edit; INSTANCE:3]", "")
ControlClick("Eti-Scan", "","[CLASS:Edit; INSTANCE:3]")
Else
ExitLoop
EndIf
EndSwitch
WEnd
MsgBox($MB_SYSTEMMODAL, "Schleife", "Schleife Ende")
GUIDelete("Eti-Scan")
WEnd
MsgBox($MB_SYSTEMMODAL, "Exit", "Exit")
Exit
Alles anzeigen