AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

AssignPrn ?

Ein Thema von Hansa · begonnen am 29. Nov 2004 · letzter Beitrag vom 29. Nov 2004
Antwort Antwort
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#1

AssignPrn ?

  Alt 29. Nov 2004, 13:09
Hi,

es geht darum herauszufinden, ob ein Drucker existiert, bzw. besser gesagt, ob ein Treiber installiert ist.
Delphi-Quellcode:
  AssignFile (d,Treibername);
  (*$I-*) rewrite (d); (*$I+*)
  io := ioresult;
  if (io <> 0) then begin
    showmessage ('Druckerfehler : '+IntToStr (io)+#10#13+
                 'Drucker : '+TreiberName+' im System nicht gefunden !'+
                 'Ausgabe ist in Datei "DRUCKER" umgeleitet !');
So ungefähr hatte ich das vor. Jetzt stellt sich allerdings die Frage, wie Windows einen Drucker von einer Datei unterscheidet. Ist der Drucker nicht da, so wird in dem Beispiel eben einfach eine Textdatei angelegt. Insofern erhalte ich nie einen Fehler.

Jetzt gibt es ja noch AssignPrn. Als Parameter habe ich da jedoch nur TextFile. Woher weiß Windows nun, welcher Drucker gemeint ist ??

Der Name des Druckers kommt aus einer INI - Datei und die Fehlermeldung soll kommen, wenn der Drucker noch nicht installiert ist.
Gruß
Hansa
  Mit Zitat antworten Zitat
roderich
(Gast)

n/a Beiträge
 
#2

Re: AssignPrn ?

  Alt 29. Nov 2004, 13:19
hallo Hansa,

nur kurz auf die Schnelle, das AssignFile/AssignPrn für Druckerausgabe habe ich mir unter Delphi abgewöhnt, stattdessen bin ich mit dem Printer-Objekt aus der Printers-Unit eigentlich gut gefahren. Ob der Drucker existiert, bekommst Du da m.E. in einer Exception beim Printer.BeginDoc mit.

Roderich
  Mit Zitat antworten Zitat
roderich
(Gast)

n/a Beiträge
 
#3

Re: AssignPrn ?

  Alt 29. Nov 2004, 13:38
Hansa, noch ein Nachtrag:

TPrinter hat eine Property names Printers, welches die Namen der verfügbaren Drucker enthält. Mit PrinterIndex kannst du aus dieser Liste einen Drucker auswählen.

In deinem Beispiel könntest Du also mit Printer.Printers.IndexOf(MyPrinterName) profen, ob der gewünschte Drucker verfügbar ist und diesen dann auswählen bzw. mit Fehlermeldung abbrechen.

Roderich
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#4

Re: AssignPrn ?

  Alt 29. Nov 2004, 13:46
Gut, ich teste das mal. Allerdings bin ich noch nicht weit gekommen :

Delphi-Quellcode:
  drucker.Create;

  showmessage (IntToSTr (drucker.Printers.IndexOfName ('HKHK')));
Beim create kommt schon Zugriffsverletzung.
Gruß
Hansa
  Mit Zitat antworten Zitat
roderich
(Gast)

n/a Beiträge
 
#5

Re: AssignPrn ?

  Alt 29. Nov 2004, 14:01
Hansa, du brauchst das TPrinter-Objekt gar nicht zu instanziieren (sprich "createn" 8) ).
Der erste Aufruf der Funktion "Printer" erzeugt im Hintergrund eine globale Instanz der TPrinter-Klasse. Auf die kannste dann einfach mit weiteren Aufrufen von "Printer" zugreifen.

Am einfachsten so:
Delphi-Quellcode:
uses Printers;

...

Printer.BeginDoc;

Printer.Canvas.Draw(blablabla); // Beispiel

Printer.EndDoc;

Allerdings hast du recht, wenn du nur Text ausgeben willst, macht die AssignPrn-Funktion auch Sinn.

Roderich
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz