Zum Programmanfang zurückkehren...

  • Hallo Gemeinde,

    gibt es eine (einfache) Möglichkeit zum Anfangsstatus eines Programms zurückzukehren, ohne es sich selbst neu starten zu lassen?

    Hintergrund: Ich programmiere immer noch mein Hardwarebuchungssystem. Dieses soll auf einem "Kiosk-System" immer laufen.
    D.h. ein MA geht ins Labor, schnappt sich ein Testdevice, Scannt seinen Ausweis und das Gerät und bucht es als ausgeliehen und geht. Der nächste user kommt und bucht usw.
    Das bedingt aber, dass nach einem Buchungsvorgang oder nach einem Buchungsfehler(z.B. S/N existiert nicht in der DB) das Programm wieder in seinen Anfangszustand "zurückkehrt",
    damit ein neuer Buchungsvorgang vorgenommen werden kann...

  • hipfzwirgel

    Hat den Titel des Themas von „Zum Programmsstart zurückkehren...“ zu „Zum Programmanfang zurückkehren...“ geändert.
  • Ich nehme an, dass der Buchungsvorgang durch Benutzeraktivitäten über ein GUI ausgelöst wird. Dann sollte es reichen, nach Abschluß der Buchung die (wesentlichen) beteiligten Variablen und/oder GUI-Controls wieder auf Ihre Anfangswerte zu setzen.

  • Beispiel:

    Code
    While 1
        $iReturn = Verarbeitung()
        If $iReturn = 1 Then Exit ; Programm beenden
    WEnd
    
    Func Verarbeitung()
        ; Hier kommt Dein bisheriger Code rein
        ; Return 0 lässt das Skript weiterlaufen
        ; Return 1 beendet das Skript
    EndFunc
  • Das kannst du doch (wie bereits hier von water veranschaulicht als Code) immer mit einer Funktion realisieren (der ggf. die gescannte Seriennummer mitgegeben wird).

    Aber die entsprechenden Variablen (die jedes mal am Anfang Gleich sein sollen) müssen natürlich Local definiert sein und nicht global.


    Dann funktioniert das auch ohne Probleme.

  • Hallo Alle,

    zunächst ein gutes und vor allem ein gesundes neues Jahr euch allen.

    @ VE: So einfach geht das leider nicht, da das Einlesen des "nächsten" Betriebsausweises so nicht erneut startet...

    @ Water und Moombas:

    zunächst Danke für die Idee. Ich bin mir nur nicht im Klaren was in die vorgeschlagene While rein muss, bzw. wie ich diese in die Programmstruktur integrieren soll?

    Der Aufbau ist zur Zeit folgender:

    1. AutoitWrapperangaben

    2. Includes

    3. Fileinstall und Definition Globaler Variablen

    4. Definition des GUI
    5. Aufruf der Funktion Kallback() i.V. mit Funktion _KeyProc und EvaluateKey (siehe Hilfe zu _WinAPI_SetWindowsHookEx) zum Auslesen des Betriebsausweises

    6. WhileSchleife zur Steuerung des GUI

    7. Die Func EvaluateKey ruft nach Feststellung der Ausweisnummer die Func AusweisNrCheck auf um festzustellen ob die Nummer valide ist, der User bereits in der Db drinsteht
    und ob das AD-Objekt des Users überhaupt aktiv ist (wenn nicht wird die Func AD-Login aufgerufen -> User authentifiziert sich und bei Erfolg werden die Userdaten mit der Func InDBSchreiben() in die DB geschrieben).
    8. Wenn die User-Authentifizierung erfolgreich war, kann der User dann nach Scannen des HW-QR-Codes per Buttonklick( in GUI-Whileschleife -> Aufruf der Func Buchung) die Buchung vornehmen.


    CodeStruktur zur Übersicht:

  • Hallo,


    der Ablauf, wie ich ihn sehe:

    1. Das Skript startet, zeigt das GUI an ...
    2. ... und aktiviert die Routine zum Einlesen der Ausweisnummer.
    3. Bei erfolgreicher User-Authentifizierung werden die Routine für die Ausweisnummer deaktiviert und die Routine zum Einlesen des HW-QR-COdes aktiviert.
    4. Nach erfolgreichem Einlesen der HW-ID werden die Routine für den QR-Code deaktiviert und der Button für die Buchung im GUI freigegeben.
    5. Bei Buttonklick erfolgt die Buchung. Die zugehörigen Skriptvariablen und evtl. GUI-Controls werden geleert/initialisiert, der Button für die Buchung wird deaktiviert und die Routine zum Einlesen der Ausweisdaten wird neu gestartet (-> weiter bei 2.)

    Zu einfach gedacht? Es sollte wohl auch einen Button zum Abbruch der Verarbeitung geben.

  • Hallo Gemeinde,

    gibt es eine (einfache) Möglichkeit zum Anfangsstatus eines Programms zurückzukehren, ohne es sich selbst neu starten zu lassen?



    ich verstehe nicht ganz was du meinst,


    'S/N existiert nicht in der DB' Wenn du diesen Fehler bekommst steht dieser dann in deiner gui ?

    1. Wenn ja schreibe dir eine Funktion die ein array zurück mit dem auslesen des Input Feldes oder Felder^^.

    2.diese packst du dann unter End switch in die while schleife

    3.erstell dir eine Global $var[0] die oben genannte Funktion mit dieser variable.


    nun kannst du die Var[0] VAR[1] usw, immer wieder aktualisierend abrufen und dann kannst du auch einfach auf Fehler/fehleingaben prüfen
    Oder erscheint der Fehler dann lösch halt den Inhalt auf "" und starte Funktion axy nochmal


    So kannst du auch bsp. direkt auf die Sting länge direkt im Input Feld prüfen wenn falsch dann mach das und das ohne das der Nutzer davor nochmal den Butten drücken muss.