gelöst Fehler bei nicht vorhandenem gosub-label abfangen?
Bodenseehost (Level 1) - Jetzt verbinden
12.08.2009, aktualisiert 10:33 Uhr, 3824 Aufrufe, 1 Kommentar
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
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
1 Antwort
- LÖSUNG Bodenseehost schreibt am 17.08.2009 um 13:56:53 Uhr
LÖSUNG 17.08.2009 um 13:56 Uhr
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:
Ü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:
01.
;** Sprung auf Labels für Clientnamen und/oder Benutzerid sofern vorhanden
02.
$WKSTAExists=0
03.
$USERIDExists=0
04.
05.
IF Open(5,@LDrive+"\UEB\UEB_Map_Printer.kix",2)=0
06.
$x=ReadLine(5)
07.
WHILE @Error=0
08.
IF INSTR($x,@WKSTA)
09.
$WKSTAExists=1
10.
ENDIF
11.
IF INSTR($x,@USERID)
12.
$USERIDExists=1
13.
ENDIF
14.
$x=ReadLine(5)
15.
LOOP
16.
ENDIF
17.
18.
IF $WKSTAExists=1
19.
GOSUB @WKSTA
20.
ENDIF
21.
22.
IF $USERIDExists=1
23.
GOSUB @USERID
24.
ENDIF
25.
26.
GOSUB END
Ähnliche Inhalte
Neue Wissensbeiträge
Heiß diskutierte Inhalte