Я использовал блок CharPrinter.pas для отправки команд в ZPLII для принтера ZEBRA в Delphi RAD2007, и все сработало хорошо, но я перехожу на XE7 и пытаюсь использовать те же функции и отправлять на принтер и не работает и не дает сообщений об ошибках. Нужно ли выполнять новые типы данных XE?CharPrinter в принтере ZEBRA XE7
ответ
Это произошло, потому что Delphi переключился на строки Unicode в Delphi 2009. Строки 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;
Этот код можно упростить, назначив 'aData' локальной переменной' AnsiString' 'aStr', а затем записать ее в поток, используя' fStream.Write (PAnsiChar (aStr) ^, Length (aStr)); '. Я немного удивлен, что исходный код до Unicode уже не делал этого, во-первых, не было причин для копирования ввода 'String' в локальный массив' Char [] 'перед его написанием. –
Да, вы правы, спасибо за редактирование –
Большое спасибо! Решение, которое вы сообщили, прекрасно работает - Реми Лебо и Шади Аджам – DevDelphi
- 1. Дата кодирования в принтере Zebra
- 2. Печать на принтере для этикеток ZEBRA
- 3. Печать файла .bmp на принтере Zebra EPL
- 4. Использование изображений, сохраненных в принтере Zebra создать ярлык в vb.net
- 5. Будет ли масштабируемый шрифт работать в принтере Zebra MZ 320
- 6. Печать на печать на принтере Zebra с использованием Google Chrome
- 7. Печать данных на принтере Zebra из браузера (Windows или MacOS)
- 8. Печать данных на принтере Zebra с Android через bluetooth
- 9. Юникод для печати хинди на принтере серии Zebra ZDR
- 10. Печатать QR-код на принтере zebra от android
- 11. Как распечатать изображение на принтере Zebra Card с Java
- 12. Как выровнять текст с непрерывной меткой на принтере Zebra (ZPL)?
- 13. Длинные строки печатаются с промежуточными пространствами на принтере Zebra (ZPL)
- 14. Zebra RW420 печатает команды ZPL
- 15. Как преобразовать изображение растрового изображения в формат .pcx для печати изображения в принтере Zebra
- 16. VB.net Печать изображения на Zebra
- 17. print pdf417 штрих-код в принтере zebra с использованием C# и zpl
- 18. Как загрузить и распечатать с помощью масштабируемых шрифтов в принтере zebra
- 19. Маркизы Zebra отсутствуют и не в порядке
- 20. Возможно ли использовать C# для установки и изменения смещений X & Y на принтере с этикеткой Zebra?
- 21. Как печатать на принтере Zebra 220 из браузера Android (php-страница)?
- 22. Принтер Zebra: отпечатанные изображения размыты
- 23. Zebra SDK Via Hyperloop Android
- 24. IMAGE_FILE_NET_RUN_FROM_SWAP в Delphi XE7
- 25. WPF Zebra EPL2 Проблема с печатью
- 26. Печатать Деталь деталя в ZPL-принтере zpbra
- 27. Принтер этикеток Zebra C# SDK
- 28. Как печатать лаковые символы в zebra printer в java?
- 29. Zebra labels Code 128 subset A
- 30. Принтер Zebra KR403 номер порта
Может быть очень хорошо. Если вы говорите о [этой CharPrinter.pas] (https://github.com/celioeduardo/delphi-sistemas/blob/master/Comum/Generico/CharPrinter.pas), то оно имеет последнее обновление где-то около Delphi 7, поэтому он не получил ни одной из версий unicode более высоких версий. Поскольку он работает с потоками, он может легко прекратить делать что-либо, когда он встречает первый # 0, который является частью многобайтового символа. – GolezTrol