Problem bei HP-Druckern

Von Ausgaben mit der Gra-Engine über Generatoren bis zum Export in diversen Formaten

Moderator: Moderatoren

Antworten
Benutzeravatar
Scarmo
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 188
Registriert: Di, 24. Jul 2007 9:17

Problem bei HP-Druckern

Beitrag von Scarmo »

Hallo zusammen

Wir haben das Problem, dass bei folgender Anweisung teilweise kein Printer-Objekt erstellt wird:

oPrint := XbpPrinter():New()
oPrint:Create()

Dieses Problem haben wir allerdings NUR bei HP-Druckern und auch dort nur ab und zu! Ich muss dazu sagen, dass unsere Applikation noch unter xBase 1.82 läuft. Seltsam ist einfach, dass es nur bei HP-Druckern bzw. -Treibern auftritt... Wenn dieses Phänomen auftritt, muss die Applikation neu gestartet werden und es klappt wieder... Seltsam, oder? Kann es sein, dass die Printer-Objekte (entgegen den Aussagen in der xBase-Doku) am Ende explizit "zerstört" werden sollten?

Hat jemand schon mal ähnliche Erfahrungen gemacht?

Danke und Grüsse
Marco
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Problem bei HP-Druckern

Beitrag von brandelh »

Hi,

man sollte immer ein destroy() aufrufen, wenn interne Resourcen benutzt werden, wie z.B. Fonts() oder Druckertreiber.
dass die Printer-Objekte (entgegen den Aussagen in der xBase-Doku) am Ende explizit "zerstört" werden sollten?
das kann ich in der Doku so nicht finden, aber egal. Xbase++ bemüht sich mit dem GC redlich uns die Speicher und Resourcen Verwaltung zu vereinfachen. Solange es sich um interne Xbase++ Datentypen handelt, geht das auch nahezu automatisch, aber Betriebsystemresourcen sollte man selbst freigeben (destroy()). Auch große Strings oder Arrays sollte man als unnötig markieren, wenn man diese nicht mehr braucht (uVar := NIL oder cVar := ""), so erleichtert man dem GC seine Arbeit und das Programm läuft stabiler.

Auch sollte man damit rechnen, dass ein Drucker mal nicht verfügbar ist:
(siehe hierzu aus dem Beispiel bei XbpPrinterDialog()... das gilt immer !)

Code: Alles auswählen

...
oPrinter := oDlg:display() 
oDlg:destroy() 
IF oPrinter <> NIL
... 

Code: Alles auswählen

...
oPrinter := XbpPrinter():new():Create()
IF oPrinter <> NIL 
...
Probleme entstehen, wenn z.B. der Drucker angehalten wurde, ausgeschaltet ist oder eine Störung anzeigt ... es ist möglich dass hierbei die HP-Drucker eventuell in den Stromsparmodus wechseln ...

Allerdings hatte ich nie solche Probleme auf dem HP 5550 bzw. Laserjet 1200 (oder so ähnlich...)

Im Übrigen empfehle ich meine HB_Printer Klasse ;-)
Gruß
Hubert
Benutzeravatar
Scarmo
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 188
Registriert: Di, 24. Jul 2007 9:17

Re: Problem bei HP-Druckern

Beitrag von Scarmo »

Hallo Hubert

Vielen Dank für Deine ausführlichen Antworten! :) Ich werde demzufolge die Printer-Objekte explizit "destroyen" und hoffen, dass dies die Ursache des Problems war... Offenbar reagieren da gewisse HP-Treiber relativ sensibel oder die HP-Toolbox verursacht diese Probleme... Mal schauen!!

Also, nochmals herzlichen Dank und ein schönes Weekend
Marco
Antworten