![]() |
Druckdateien (*.prn) drucken
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
Ich bin ein Delphi-Neuling und schreibe gerade an einem Progrämmchen mit dem ich in eine Datei umgeleitete Druckaufträge drucken kann. Soll sozusagen eine Vereinfachung des Komandos
Code:
sein.
"lpr -P <Druckername> -S <Servername>"
Na, einen Drucker auswählen kann ich schon. Die Druckdatei auch. Wie kann ich jetzt die Datei zu dem Ausgewählten Drucker schicken? Der Druckauftrag sollte in der Windows Druckerwarteschlange erscheinen und nicht einfach mit dem Befehl oben realisiert werden. Über eine Idee würde ich mich sehr freuen .... Gruß, Quasinix |
Re: Druckdateien (*.prn) drucken
Hi,
mit dem Befehl
Code:
sollte das eigentlich klappen.
print datei.prn
Gruß, Tom |
Re: Druckdateien (*.prn) drucken
Oder versuchs mal mit shellexecute
|
Re: Druckdateien (*.prn) drucken
Hallo Niko und Jelly,
danke für eure Antwort, aber gibt es nicht irgend ein Komando oder Unit in Delphi mit dem man die Datei zum Drucker schicken kann ohne ein Shellkomando zu benutzen? Ich bin ja darauf gekommen ein Delphi-Programm zu schreiben weil ich mit dem lpr-Befehl Probleme bekommen habe. Ich wollt nämlich eine ganze Liste von Druckdateien mittels eines kleinen *.bat an den Drucker schicken. Dabei ist dann die Hälfte mit Ausgabe der Fehlermeldung "Drucker ist nicht verfügbar" nicht gedruckt worden. Daraufhin habe ich gedacht ich brauche eine Druckerwarteschlange an die ich die Druckbefehle schicke. @ Jelly: der Print-Befehl funktioniert bei mir nicht im Shell mit den *.prn-Dateien. Viele Grüße, Jan |
Re: Druckdateien (*.prn) drucken
Zitat:
Gruß, Tom |
Re: Druckdateien (*.prn) drucken
Zitat:
![]() |
Re: Druckdateien (*.prn) drucken
@shmia,
das RAWwrite funktioniert ja soweit ganz gut, nur bin ich grad am Verzweifeln wie ich die *.prn-Datei als String SCHNELL eingelesen bekomme. Dabei können die prn's über 5 MB groß sein. Um den Arbeitsspeicher will ich mich dabei nicht kümmern. Meine - mir zu langsame - Methode ist:
Code:
Wie kann ich den String aus der Datei mit einem Rutsch füllen? Ich hab es auch schon mit GetMem und Pointern versucht, mir ist dabei aber schleierhaft wie den Inhalt des Pointers in den String werfen soll.
strom := tfilestream.Create('d:\druck.prn',fmopenread);
strom.Read(wert,sizeof(char)); // wert ist ein char for i := 1 to strom.size do s := s + wert; // s ist ein String begin Gruß, Quasinix |
Re: Druckdateien (*.prn) drucken
Zitat:
Delphi-Quellcode:
strom := tfilestream.Create('d:\druck.prn',fmopenread);
try SetLength(s, strom.Size); // Speicher beschaffen strom.ReadBuffer(s[1], strom.Size); //en-Block lesen finally strom.Free; end; |
Re: Druckdateien (*.prn) drucken
Hallo shmia,
das geht ja richtig flott! Super, dank Dir! Ich verstehe nur nicht, daß man einem String eine Länge zuweisen kann UND was das s[1] bei dem Einlesen bedeutet. Beim setlength wird doch der "Array" auf eine die gewünschte Länge gebracht, d.h. er hat strom.size Felder. Beim Einlesen weist man doch mit s[1] auf das erste der Felder zu und nicht auf alles. Kannste das noch erklären, wenn Du Lust und Zeit hast ???? Mein Code sieht jetzt so aus:
Delphi-Quellcode:
Gruß,
procedure TDruckdateiblitz_Form.Button1Click(Sender: TObject);
var s : string; var wert : char; var i,laenge : longint; var strom : tfilestream; begin strom := tfilestream.Create('d:\druck.prn',fmopenread); try SetLength(s, strom.Size); // Speicher beschaffen strom.Readbuffer(s[1], strom.Size); //en-Block lesen finally strom.Free; end; rawprint(druckername.caption,'Hallo',s); showmessage('Fertig!'); end; quasinix |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz