bodenseehost
Goto Top

Fehler bei nicht vorhandenem gosub-label abfangen?

Habe ein etwas pragmatisches script für die Druckerzuordnung laufen.

Was zunächst ganz normal eingestellt ist:

;Löschen bestehender Netzwerkdrucker:
DelTree("HKEY_CURRENT_USER\Printers\connections")

Verbindung der Drucker erfolgt über:
AddPrinterConnection("\\.........")
SetDefaultPrinter("\\...........")

funktioniert so weit.

Nun erfordert es unsere Konstellation, dass wir Drucker teilweise per Client und teilweise per User zuordnen... IdR hat jeder Client bestimmte Drucker zugeordnet, einige User bekommen dann noch ein paar Drucker mehr. Nun war ich ganz gerissen, und habe mir eine ganz einfache Zuordnung gebaut:

GOSUB @wksta
GOSUB @userid

und jeweils Sprungmarken mit dem Workstation- oder Usernamen. Funktioniert ganz gut, ausser ein PC oder - häufiger - ein User findet sich nicht im Script. Dann fliegt das Script mit error "label not found" ab. Irgendwie klar.

Nun suche ich NICHT nach Tipps die Zuordnung anders zu machen, sondern - ich möchte diesen "faulen" weg weiter gehen ich - würde gerne wissen ob es eine Möglichkeit gibt, den Error abzufangen. Z.B. ein kurzer vorabcheck, ob die Sprungmarke überhaupt vorhanden ist, oder auch (bereits kurz versucht) eine Errorbedingung...???

Gibts da ideen?


Danke Euch schon mal face-smile

Content-ID: 122561

Url: https://administrator.de/forum/fehler-bei-nicht-vorhandenem-gosub-label-abfangen-122561.html

Ausgedruckt am: 22.12.2024 um 19:12 Uhr

Bodenseehost
Bodenseehost 17.08.2009 um 13:56:53 Uhr
Goto Top
Gelöst...

Über "OPEN" lässt sich eine Datei - in meinem Fall das ablaufende Script selbstI - in den Speicher lesen (Mode 2 = nur Lesezugriff!), deren Inhalt kann Zeilenweise mit "READLINE" ausgelesen werden. Mit "INSTR" wird dann der jeweilige Zeileninhalt verglichen, ob ein bestimmter Teilstring - bei uns also ein mal @userid und ein mal @wksta - vorhanden ist.

Sobald ein entsprechender Eintrag für Workstation und/oder UserID gefunden wurde, wird eine Hilfsvariable gesetzt, die dann ein Anspringen der entsprechenden Labels steuert. Auf diesem Wege werden nur die WKSTA und USERID angesprungen, die's im Script auch wirklich gibt.

Dann lässt sich also weiterhin recht einfach - und auch performant - für beliebige Clients und Benutzer individuelles Script oder eben Druckerzuweisungen hinterlegen.

Vielleicht braucht das ja mal jemand *g*.

Hier noch der relevante Auszug aus dem nun sauber und schnell laufenden Druckerscript:
;** Sprung auf Labels für Clientnamen und/oder Benutzerid sofern vorhanden
$WKSTAExists=0
$USERIDExists=0

IF Open(5,@LDrive+"\UEB\UEB_Map_Printer.kix",2)=0  
   $x=ReadLine(5)
   WHILE @Error=0
      IF INSTR($x,@WKSTA)
         $WKSTAExists=1
      ENDIF
      IF INSTR($x,@USERID)
         $USERIDExists=1
      ENDIF
      $x=ReadLine(5)
   LOOP
ENDIF

IF $WKSTAExists=1
   GOSUB @WKSTA
ENDIF

IF $USERIDExists=1
   GOSUB @USERID
ENDIF

GOSUB END