Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 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 Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: 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

varelik (статус: Посетитель), 10 декабря 2009, 10:17 [#1]:

min@y™, да, так уже делал- это правильно.
уже разобрался.
моя ошибка в том была, что я:
for Index:= 1 to Length(n) do // n: string
keypress(Byte(n[Index]));
в общем цикле использовал
в любом случае сасибо!

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 16:48
Выполнено за 0.03 сек.