Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Datei auf LPT1: Drucken (https://www.delphipraxis.net/15122-datei-auf-lpt1-drucken.html)

PiT123 22. Jan 2004 10:03


Datei auf LPT1: Drucken
 
Hallo,

ich habe vor eine Datei(TXT) zu drucken. Wenn möglich sollte das wie im Dos funktionieren (evtl Dos im Hintergrund ausführen.) z.B. "Copy Datei.txt LPT1"

hat jemand eine Idee ?

Hintergrund ist das ich ESC-Sequencen in TXT Dateinen haben und diese mit einem Menü zum Drucker kopieren möchte.

WtF 22. Jan 2004 10:13

Re: Datei auf LPT1: Drucken
 
Kann mit esc sequenzen nichts anfangen. Also wenn du einfach auf den Druckerport schreiben willst kann du das so machen:

Unit "Printers" einbinden

Code:
procedure TForm1.Button1Click(Sender: TObject);
var f:textfile;
begin
assignprn(f);
rewrite(f);
writeln(f,'Druck das');
end;
Oder du benutzt printer.**** und konfigurierst Layout/Schriftart etc. damit, ist ganz einfach.

Mfg

PiT123 22. Jan 2004 10:52

Re: Datei auf LPT1: Drucken
 
hier drucker er ja das Wort ' Druck das'

aber wie bekomme ich das er die Datei z.B. C:\test.pcl zum Drucker schickt ?

scp 22. Jan 2004 10:58

Re: Datei auf LPT1: Drucken
 
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  f,t : textfile;
  s : string;
begin
  assignprn(f);
  rewrite(f);
  assignfile(t, 'C:\test.pcl');
  Reset(t);

  while not eof(t) do
  begin
    readln(t, s);
    writeln(f, s);
  end;

  CloseFile(t);
end;

PiT123 22. Jan 2004 11:13

Re: Datei auf LPT1: Drucken
 
das ganze geht über den Windows Druckertreiber , wird also formatiert und der Drucker druckt es aus..
Ich suche ein möglchkeit das txt file direckt zum drucker zu senden.
Hier mal der Inhalt der TXT datei " %-12345X@PJL LBEEP%-12345X " wobei =Chr27 (ESC) ist.
Diese soll den Drucker ein Beep entlocken.



gibt es keine funktion wo man cmd aufruft um eine datei auf LPT1 kopieren kann ?



Habe eine Lösung gefunden

Delphi-Quellcode:
ShellExecute(application.Handle,'open','cmd.exe',('/c copy test.txt lpt1'),nil ,sw_minimize);
funzt ....

nur möchte ich jetzt noch eine ausgabe Capturen und dafür Edit1.text und Edit2.text verwenden.

Delphi-Quellcode:
ShellExecute(application.Handle,'open','cmd.exe',('/c net use LPT1 \\(edit1.text) \(Edit2.Text)'),nil ,sw_minimize);
im DOS sieht das dann so aus " net use LPT1 \\Rechnername\Freigabename" nur funzt da so natürlich nicht, hat jemand ne idee ???

Lord_Stifterl 22. Jan 2004 14:19

Re: Datei auf LPT1: Drucken
 
Es gäbe natürlich auch die Möglichkeit das Ganze über eine FileStream zum LPTx zu schicken.

Code:
var
  Stream: TFileStream;

  //HIER CREATEST DU DEN STREAM
  Stream := TFileStream.Create('LPT1', fmOpenWrite);

  //HIER SCHICKST DUS DANN ZUM DRUCKER
  sendtoprinter(Stream, [DATEI|STRING|...]);
Diese Funktion solltest du dann ebenfalls verwenden

Code:
Procedure SendtoPrinter(var Stream: TFileStream; var PrintStr: String);
begin
  CharToOEM(@Printstr[1], @Printstr[1]);
  Stream.write(PrintStr[1], length(Printstr)+1);
end;
LG
LS


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:27 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-2025 by Thomas Breitkreuz