ZEBRA打印机XE7中的CharPrinter

时间:2015-07-07 21:10:08

标签: delphi delphi-xe7 zebra

我使用CharPrinter.pas单元在ZPLII中为Delphi RAD2007中的ZEBRA打印机发送命令,一切运行良好,但我改用XE7并尝试使用相同的功能并发送到打印机但不起作用,不会给出任何错误消息。是否必须执行新的数据类型版本XE?

1 个答案:

答案 0 :(得分:4)

这是因为Delphi在Delphi 2009中切换到Unicode字符串。 Unicode字符串对每个字符使用 2个字节。较旧的Delphi版本为每个字符<使用 1个字节。

因此,您必须在 ChatPrinter.pas 中进行一些更改。

尝试编辑(未测试)

procedure   TCharPrinter.SendData (aData : String);
var
 Data : array[0..255] of char;
 cnt  : integer;
 ss : TStringStream;
begin

 try
   ss := TStringStream.Create(aData,TEncoding.ANSI);

   fStream.CopyFrom (ss,0);
 finally
   ss.Free;
 end;
  // for cnt := 0 to length(aData) - 1
  // do Data[cnt] := aData[cnt+1];

end;

或更简单:

procedure   TCharPrinter.SendData (aData : String);
var
 Data : AnsiString;
begin
 Data := AnsiString(aData);
 fStream.Write(PAnsiChar(Data)^, Length(Data));
end;