![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
![]() Всем привет. Ломаю голову как реализовать задумку.
Программа получаем данные от устройств по различным интерфейсам (Последовательный порт/TCP/Сервис/т.п.). Все каналы передачи данных подразумевают задержку, что при синхронном чтении-записи приводит к зависанию пользовательского интерфейса. Стандартная проблема и решение понятно - асинхронный подход. Но, я хочу реализовать базовый класс (TMyDataProvider) с общими методами (Open/Close/Read/Write), предоставив программисту только описывать реализацию этих методов в предках. В зависимости от считанных данных объект базового класса выполняет то или иное действие, а может получить дополнительную порцию данных. Ломаю голову, как реализовать, допустим такой метод: Код:
procedure TMyDataProvider.SomeProc; var ... begin for i := 0 to 127 do begin (последовательный порт).Write(i, SizeOf(i)); (последовательный порт).Read(SomeVar, SizeOf(SomeVar)); case SomeVar of 0: DoThis; 1: DoThat; .... else ReadMoreData; end; end; end; Грамотно поставленный вопрос содержит не менее 50% ответа. Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть. |