AGB  ·  Datenschutz  ·  Impressum  







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

Alten Drucker ansteuern

Ein Thema von marteng57 · begonnen am 23. Feb 2010 · letzter Beitrag vom 1. Mär 2010
Antwort Antwort
marteng57

Registriert seit: 6. Jun 2009
16 Beiträge
 
RAD-Studio 2009 Pro
 
#1

Alten Drucker ansteuern

  Alt 23. Feb 2010, 14:27
Hallo,

leider habe ich die Notwendigkeit einen alten Drucker ansteuern zu müssen. Bis Delphi 2007 war das kein Problem, folgendes funktioniert:

Delphi-Quellcode:
  cDruck:=#27#64; // Initialisierung
  cDruck:=cDruck+#18; // Keine Schmalschrift
  cDruck:=cDruck+#27#67+chr(24)+#13; // Seitenlänge in Zoll * 6
 ....
    cDruck := MyAnsiToOem(cDruck);
    Stream := TFileStream.create('LPT1:',fmOpenWrite);
    try
      Stream.Write(pchar(cDruck)^,length(cDruck));
    finally
      Stream.free;
      cDruck := '';
    end;
wobei die Funktion so hinterlegt ist
Delphi-Quellcode:
  SetLength(Result, Length(Ansi));
  CharToOemBuff( PChar(Ansi), PAnsiChar(Result), Length(Result));
Nach der Umstellung auf D 2009 geht es lt. Kunde nicht mehr, die Resultate sind aber undefinert. d.h. sie schwanken

Eine Umstellung auf cDruck: ansistring hat keine Besserung gebracht.

Habt Ihr einen Tipp für mich?
Martin
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#2

Re: Alten Drucker ansteuern

  Alt 23. Feb 2010, 14:32
Speichere den Stream in eine Datei und schau mal was da ankommt (z.B. mit einem HexEditor)

pchar(cDruck)^, Müsste das nicht dann auch pAnsiChar sein?
Warum musst du überhaupt casten?
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.081 Beiträge
 
Delphi 12 Athens
 
#3

Re: Alten Drucker ansteuern

  Alt 23. Feb 2010, 14:42
Wenn, dann sollte wohl besser alles auf Ansi umgesellt werden:

Delphi-Quellcode:
function MyAnsiToOem(const Ansi: RawByteString): RawByteString;
begin
  SetLength(Result, Length(Ansi));
  CharToOemBuffA(PAnsiChar(Ansi), PAnsiChar(Result), Length(Result));
end;

var cDruck: RawByteString;

cDruck := #27#64; // Initialisierung
cDruck := cDruck + #18; // Keine Schmalschrift
cDruck := cDruck + #27#67 + AnsiChar(24) + #13; // Seitenlänge in Zoll * 6

cDruck := MyAnsiToOem(cDruck);
Stream := TFileStream.Create('LPT1:',fmOpenWrite);
try
  Stream.Write(PAnsiChar(cDruck)^, Length(cDruck));
finally
  Stream.Free;
  cDruck := '';
end;
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
marteng57

Registriert seit: 6. Jun 2009
16 Beiträge
 
RAD-Studio 2009 Pro
 
#4

Re: Alten Drucker ansteuern

  Alt 1. Mär 2010, 13:23
Vielen Dank für Eure Hinweise, die komplette Umstellung auf Ansi hat geholfen.

Gruß
Martin
  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 05:58 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