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
Problem bei HP-Druckern
Moderator: Moderatoren
- brandelh
- 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
Hi,
man sollte immer ein destroy() aufrufen, wenn interne Resourcen benutzt werden, wie z.B. Fonts() oder Druckertreiber.
Auch sollte man damit rechnen, dass ein Drucker mal nicht verfügbar ist:
(siehe hierzu aus dem Beispiel bei XbpPrinterDialog()... das gilt immer !)
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
man sollte immer ein destroy() aufrufen, wenn interne Resourcen benutzt werden, wie z.B. Fonts() oder Druckertreiber.
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.dass die Printer-Objekte (entgegen den Aussagen in der xBase-Doku) am Ende explizit "zerstört" werden sollten?
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
...
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
Hubert
Re: Problem bei HP-Druckern
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
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