|
Вопрос # 3 508/ вопрос открыт / |
|
Здравствуйте!
Опишу ситуацию: есть ПК+сканер+delphi. Использую компонент СОМ-порт. Считываю чтото сканером. Пришедшие в порт байты отображаются в мою прогу и в MS word.
Получение из порта: b:=com1.getbyte;//b:byte
В порт приходят байты например:
ABCJHKJ 757 ABC
AB879843753
ABC
Вопрос в том, как мне избавиться от байтов "АВС", т.е. в итоге должно отобразиться в word:
JHKJ 757
AB879843753
Поясню дальше: пришедшие в порт байты, как и говорил, далее я отображаю в Word (ну типа эмуляция нажатия клавиш), используя в одной из процедур keypress(b);
сама процедура(пишу по памяти):
procedure keypress(b:byte);
begin
if ((b=$31) or (b=$45) or и т.д.) then
vkb=b;
key_event(vkb,scan,flags,ext);
end;
Так вот, если бы мне надо было отобразить в каком-нить memo1 строки- я бы сделал так:
есть b:byte
перевожу в стринг: n:=n+chr(b);//где n-стринг
удаляю "ABC" из строки: delete(n,pos('ABC',n),3);
отображаю в memo1: memo1.lines.add(n);
Но мне надо в word отобразить, причем не стринг, а byte:
keypress(b);
Посоветуйте как быть плиз!
 |
Вопрос задал: varelik (статус: Посетитель)
Вопрос отправлен: 9 декабря 2009, 19:38
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: min@y™
Ну так переведи символы строки обратно посимвольно в байты.
for Index:= 1 to Length(n) do // n: string
keypress(Byte(n[Index]));
А конструкцию
if ((b=$31) or (b=$45) or и т.д.) then
замени на
if b in [$31, $45, ... и т.д.] then
 |
Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 9 декабря 2009, 19:49
Оценка за ответ: 5
|
Мини-форум вопроса
Всего сообщений: 1; последнее сообщение — 10 декабря 2009, 10:17; участников в обсуждении: 1.
|
varelik (статус: Посетитель), 10 декабря 2009, 10:17 [#1]:
min@y™, да, так уже делал- это правильно.
уже разобрался.
моя ошибка в том была, что я:
for Index:= 1 to Length(n) do // n: string
keypress(Byte(n[Index]));
в общем цикле использовал
в любом случае сасибо!
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|