![]() |
Delphi 2009 Umstellung Drucker Steuercodes gehen nicht mehr
Hallo, ich bin gerade dabei eine Anwendung von Delphi2007 auf Delphi2009 umzustellen.
Dabei bin ich auf ein Problem mit den POS Drucker gestoßen, um eine schnelle Druckausgabe zu gewährleisten verwende ich Escape Sequenzen für die Ansteuerung des Druckers. Diese funktionieren aber nicht in Delphi 2009. Wer kennt da eine Lösung! Peter60 ![]() |
Re: Delphi 2009 Umstellung Drucker Steuercodes gehen nicht m
POS Drucker? Über serielle Verbindung?
Kann es sein, dass du als Datentyp String benutzt? Dann bekommt der Drucker 2 Byte pro Zeichen. Versuch mal AnsiString. |
Re: Delphi 2009 Umstellung Drucker Steuercodes gehen nicht m
Hallo,
Der Drucker verfügt über eine USB Anschluss kann aber auch seriell angeschlossen werden. Ich habe auch die Strings auf AnsiString umgestellt weil ich es mich schon gedacht habe. Gruss Peter60 |
Re: Delphi 2009 Umstellung Drucker Steuercodes gehen nicht m
Zitat:
|
Re: Delphi 2009 Umstellung Drucker Steuercodes gehen nicht m
Leider Nein!
Ich übergeben den String an ein TRichEdit dieser wird dann gedruckt ich vermute das das der Grund ist. Kleiner Codeauszug Hier werden die Druckersteuercode zugewiesen
Delphi-Quellcode:
.....
Belegtext.Clear; // TRichEdit
Belegtext.Lines.Append(#27+#64); // Drucker initialisieren Belegtext.Lines.Append(#27+#77+#48); Belegtext.Lines.Append(#27+#82+#2); // Deutscher Zeichensatz //FKasse.Belegtext.Lines.Append('ÄÖÜßäöüß'); Belegtext.Lines.Append('Bla Bla'); DruckeRoh_String(Belegtext.Text, Drucker); Dann wird diese Procedure aufgerufen: .....
Delphi-Quellcode:
Peter60
procedure DruckeRoh_String(DruckText:AnsiString; Drucker :integer);
var Printer1 : array [0..255] of char; p : Integer; function RawDataToPrinter(const szPrinterName : Ansistring; const data:Ansistring; dwCount : DWORD) : boolean; var hPrinter : THandle; DocInfo : TDocInfo1; dwJOB : DWORD; dwBytesWritten : DWORD; begin Result := False; if OpenPrinter (pchar (szPrinterName), hPrinter, Nil) then try // Fill in the structure with info about this "document" DocInfo.pDocName := 'Belegdruck'; DocInfo.pOutputFile := Nil; DocInfo.pDatatype := 'RAW'; // Inform the spooler the document is beginning dwJob := StartDocPrinter (hPrinter, 1, @docInfo); if dwJob <> 0 then try if StartPagePrinter (hPrinter) then try if WritePrinter (hPrinter, Pchar(data), dwCount, dwBytesWritten) then Result := dwBytesWritten = dwCount; finally EndPagePrinter (hPrinter) end finally EndDocPrinter (hPrinter); end finally ClosePrinter (hPrinter) end end; {RawDataToPrinter} begin GetProfileString ('windows', 'device', ',,,', Printer1, Sizeof(Printer1)); p := Pos (',', Printer1); if p > 0 then Printer1 [p - 1] := #0; RawDataToPrinter (Printer1, DruckText, length(DruckText)); end; [edit=mkinzler]Delphi-Tags eingefügt Mfg, mkinzler[/edit] |
Re: Delphi 2009 Umstellung Drucker Steuercodes gehen nicht m
Der RichEdit verwendet intern UniCode.
|
Re: Delphi 2009 Umstellung Drucker Steuercodes gehen nicht m
Nur falls noch jemand das gleiche Problem hatte hier die Lösung!
Delphi-Quellcode:
Anstatt diese Zeile
Belegtext.Clear; // TRichEdit
Belegtext.Lines.Append(#27+#64); // Drucker initialisieren Belegtext.Lines.Append(#27+#77+#48); Belegtext.Lines.Append(#27+#82+#2); // Deutscher Zeichensatz // Belegtext.Lines.Append('ÄÖÜßäöüß'); Belegtext.Lines.Append('Bla Bla');
Delphi-Quellcode:
diese Zeile
DruckeRoh_String(Belegtext.Text, Drucker);
Delphi-Quellcode:
dann funktionieren auch die Steuerzeichen beim DruckerDruckeRoh_String(UTF8String(Belegtext.Text), Drucker); Trotzdem Danke für eure Hilfe Peter60 [edit=mkinzler]Delphi-Tags eingefügt Mfg, mkinzler[/edit] |
AW: Delphi 2009 Umstellung Drucker Steuercodes gehen nicht mehr
Vielen Dank
auch für mich war es die Lösung! Gruß schmitt |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:54 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