Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2011, 12:25   #1
Yur@
Пользователь
 
Регистрация: 19.11.2009
Сообщений: 29
По умолчанию Работа с потоком

Всем привет. Есть некий девайс, который посылает посылки фиксированной длины на ком порт компьютера. Принимаю данные от девайса в потоке. Проблема вот в чем. Мне надо постоянно проверять один и тот же байт из посылки и сравнивать его с числом (посылка приходит как массив байт). Например, массив 34 54 23 54 65 34 23 54 , проверить надо 3-й байт, если он больше 30 то вывести в мемо строку ('>30') один раз. А так как у меня всё это дело крутится в потоке, у меня мемо забивается одной и той же строкой. Что делать? Приостановка потока не катит. Пробовал сделать второй поток, но думаю должен быть вариант как это проще сделать.
Yur@ вне форума Ответить с цитированием
Старый 02.06.2011, 12:41   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,542
По умолчанию

вар.1 Memo.Clear; Memo.add('>30'); <=> вар.2 Memo.Text:='>30';
если ТОЛЬКО одна строка то зачем Memo. вполне подойдет StaticText..
Цитата:
если он больше 30 то вывести в мемо строку ('>30') один раз.
Ну вывели дальше-то что? вот пришел сигнал у которого <30.(после сигнала >30) И где у нас информация о таком сигнале. Т.е. после получения первого сигнала >30 информативность работы =0.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 02.06.2011 в 12:46.
evg_m вне форума Ответить с цитированием
Старый 02.06.2011, 12:44   #3
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> должен быть вариант как это проще сделать

Код:
var
  flag: boolean = true;

// в нашем потоке
  if (flag and (30 < b[3])) then begin
    //
    flag := false;
    // посылаем сообщение для мемо, чтобы оно добавило строку '>30'
  end;
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 02.06.2011, 12:46   #4
Yur@
Пользователь
 
Регистрация: 19.11.2009
Сообщений: 29
По умолчанию

Мемо точно нужен. Это что то вроде лога. В нем присутствуют ещё другие сообщения (время запуска, время завершения, и т д). Очищать его смысла нет.
Yur@ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с ListView и потоком данных piksel111 Общие вопросы Delphi 4 18.04.2011 01:48
Проблема с потоком timur oO Помощь студентам 2 14.04.2010 17:02
Delphi Проблема с потоком TreadProblem Помощь студентам 1 07.03.2010 17:59
Проблема с потоком Araver Общие вопросы Delphi 4 16.10.2007 04:30