Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Delphi 2009 Umstellung Drucker Steuercodes gehen nicht mehr (https://www.delphipraxis.net/137728-delphi-2009-umstellung-drucker-steuercodes-gehen-nicht-mehr.html)

Peter60 27. Jul 2009 17:34


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
http://www.delphipraxis.net/posting.php?mode=iframe

divBy0 27. Jul 2009 17:57

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.

Peter60 28. Jul 2009 06:21

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

mkinzler 28. Jul 2009 06:29

Re: Delphi 2009 Umstellung Drucker Steuercodes gehen nicht m
 
Zitat:

Ich habe auch die Strings auf AnsiString umgestellt weil ich es mich schon gedacht habe.
Und hat das etwas gebracht?

Peter60 28. Jul 2009 06:52

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:
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;
Peter60

[edit=mkinzler]Delphi-Tags eingefügt Mfg, mkinzler[/edit]

mkinzler 28. Jul 2009 06:54

Re: Delphi 2009 Umstellung Drucker Steuercodes gehen nicht m
 
Der RichEdit verwendet intern UniCode.

Peter60 28. Jul 2009 19:05

Re: Delphi 2009 Umstellung Drucker Steuercodes gehen nicht m
 
Nur falls noch jemand das gleiche Problem hatte hier die Lösung!

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 //
Belegtext.Lines.Append('ÄÖÜßäöüß');
Belegtext.Lines.Append('Bla Bla');
Anstatt diese Zeile

Delphi-Quellcode:
DruckeRoh_String(Belegtext.Text, Drucker);
diese Zeile
Delphi-Quellcode:

DruckeRoh_String(UTF8String(Belegtext.Text), Drucker);
dann funktionieren auch die Steuerzeichen beim Drucker


Trotzdem Danke für eure Hilfe

Peter60

[edit=mkinzler]Delphi-Tags eingefügt Mfg, mkinzler[/edit]

schmitt 3. Aug 2010 15:57

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