Mal versucht einen String als UTF8String zu deklarieren? Template.Text ist jedenfalls KEIN UTF-8, sondern
Unicode!
Danke für den Tipp, das ist es gewesen. Irgendwie hatte ich im Kopf weil bei Template.LoadFromFile('', TEncoding.UTF8) angegeben habe, das es sich um UTF-8 handelt, aber ist natürlich alles
Unicode intern.
Delphi-Quellcode:
var
Template: TStringList;
dwCount: DWORD;
UTF8Str: UTF8String;
hPrinter: THandle;
DocInfo: TDocInfo1;
dwJob: DWORD;
dwBytesWritten: DWORD;
begin
//init
UTF8Str := UTF8String(Template.Text);
dwCount := TEncoding.UTF8.GetByteCount(Template.Text);
if OpenPrinter('
Printername', hPrinter,
nil)
then
begin
try
DocInfo.pDocName := '
RAWPrint';
DocInfo.pOutputFile :=
nil;
DocInfo.pDatatype := '
RAW';
dwJob := StartDocPrinter(hPrinter, 1, @DocInfo);
if dwJob <> 0
then
begin
try
if StartPagePrinter(hPrinter)
then
begin
try
if WritePrinter(hPrinter, PAnsiChar(@UTF8Str[1]), dwCount, dwBytesWritten)
then
begin
if dwBytesWritten <> dwCount
then
raise Exception.Create('
Daten konnten nicht an Drucker gesendet werden!');
end;
{if}
finally
EndPagePrinter(hPrinter)
end;
{try..finally}
end;
{if}
finally
EndDocPrinter(hPrinter);
end;
{try..finally}
end;
{if}
finally
ClosePrinter(hPrinter);
end;
{try..finally}
end
else
ShowMessage('
Fehler: Barcode-Druck fehlgeschlagen!');