Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Druckerindex außerhalb des zulässigen Bereichs (https://www.delphipraxis.net/204913-druckerindex-ausserhalb-des-zulaessigen-bereichs.html)

gmc616 13. Jul 2020 16:20

Druckerindex außerhalb des zulässigen Bereichs
 
Hallo Delphi-Gemeinde,

meine Anwendung läuft seit einigen Jahren auf Terminalservern.
Seit kurzem (Server 2016) habe ich das Problem, dass das Drucken nicht mehr korrekt funktioniert.
Die Anwendung druckt entweder auf dem falschen Drucker oder es wirft mit der Exception "Druckerindex außerhalb des zulässigen Bereichs."

Etwas genauer:
Beim (nach) dem Drucken merke ich mir den Namen des Drucker auf dem gedruckt wurde, um den Drucker beim nächsten Druck unabhängig vom Standard-Drucker voreinstellen zu können. Das ist eine Anforderung an die Software. Es sind so ca. 10 Drucker im Einsatz für unterschiedliche Zwecke und der Nutzer soll nicht ständig den passenden Drucker auswählen müssen.
Also packe ich alle verfügbaren Drucker in eine Combobox (damit der Nutzer ggf. wechseln kann) und selektierte den zuletzt verwendeten Drucker anhand des Namens vor. Sich lediglich den Index des Druckers zu merken, hat schon andere/ähnliche Effekte hervorgerufen, da auch ein Trennen und Neu-Verbinden der RDP-Sitzung die Folge hat, das sich die Reihenfolge sprich, die Drucker-Indizes ändern (können).

Ich nutze hierfür das Objekt bzw. die Unit Printer.pas aus Rio.

Anfänglich, also nach dem Programm-Start, funktioniert das Drucken fehlerfrei.
Nach einiger Zeit, so 2..3 Stunden, treten Probleme (wie oben beschrieben) auf.
Die automatische Standard-Drucker-Verwaltung von Win-10 ist per Gruppenrichtlinie auf jedem PC und jeder RDP-Sitzung deaktiviert, aber selbst wenn nicht, dürfte das keine Auswirkung haben.

Irgendwo habe ich gelesen, dass das evtl. mit der Art und Weise zusammenhängt, wie die Drucker am Server installiert sind.
Entweder per Netzwerkfreigaben oder als Lokaler Drucker per IP + Port.
Bei Netzwerk-Freigaben könne es passiere, dass, wenn ein Drucker offline geht, der Server die Liste der verfügbaren Drucker in den RDP-Sitzungen aktualisiert.
Bei lokalen Druckern im Terminal-Server wäre das nicht der Fall, ... wieso auch immer.

Kann es sein, dass meine Anwendung damit nicht klar kommt?
Muß man der Printer.pas irgendwie mitteilen, dass sie sich aktualisieren soll? Wenn ja, wie?

Hat irgendwer ne Idee, wo hier der Hase im Pfeffer liegt?

Bin für jeden Tipp dankbar.

Rollo62 13. Jul 2020 16:47

AW: Druckerindex außerhalb des zulässigen Bereichs
 
Die Probleme kenne ich auch, auf Citrix-Systemen.
Ein Problem war der Druckertreiber, der jetzt zwingend 64-Bit sein muss.
Das war ürsprünglich von der 32-Bit Anwendung nicht unterstützt, die war nie für Terminal-Server ausgelegt,
und konnte auch nie sauber auf 64-Bit gezogen werden. (Es ist noch eine alte BCB5 - Anwendung).
Die Probleme fingen vermehrt an als die Drucker nach und nach auf 64-Bit geändert wurden.

Das die Drucker ständig wechseln sehe ich dort auch, manchmal dauert es sehr lange oder
er hängt sich beim Drucken auf.
Es war aber auch so das es wochenlang gut geht, und dann plötzlich der Wurm drin ist.
Messen konnte ich das beim Kunden nie, auch weil die IT dort schlecht zugänglich war.
Einen konkreten Tipp habe ich auch nicht, wir konnten mittlerweile auf lokale Stationen
umstellen, und sind runter vom Citrix-System, damit geht es dann besser.
Im Verdacht hatte ich von DB-Server bis Netzwerk (es ging um Verbindung mehrere Standorte).

Ansonsten steht hier eine komplette Modernisierung der App an, wo man dann auch
die Terminal-Server wieder unterstützt und darauf auslegt.
Das steht aber noch aus, ich hoffe das eine modernere Architektur mit aktuellem Delphi
hilft das Problem in den Griff zu bekommen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:49 Uhr.

Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2020 by Daniel R. Wolf