Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Пропуск dde-данных


Автор: Flap 21.4.2008, 08:57
Помогите с проблеммой, точнее их две:

1. Моя программа в режиме Advise слушает некий сервер с которого падают данные. Эти данные надо принять и поместить в таблицу в определенную строку. Проблемма в том, что, когда эти данные валят часто, то случаются пропуски и в таблице появляются пробелы. Как этого можно избежать?

2. Далее, TDdeClientItem очень много, все они создаются динамически и хранятся в TList. И у всех OnChange - один и тот же. Собственно в этой OnChange и происходит запись в таблицу. Можно как-то сделать так, чтобы TDdeClientItem был один и просто ловил все, что падает на TDdeClientConv?

OnChange уже оптимизировал как мог. Работу с таблицей я ускорить не могу уже (там всего один Locate, далее Edit и Post).

Поможет ли в этом случае многопоточность и как, в этом случае, синхронизивать запись из всех потоков в одну таблицу?

В качестве таблицы использую TMemTableEh.

Буду очень признателен, за хоть какие-нибудь советы.
Спасибо.

Автор: bems 22.4.2008, 12:32
если "лавины" данных чередуются с "затишьями", то можно обойтись и без потоков. В OnChange пиши данные в промежуточное хранилище (экономия времени на Locate), а при простое приложения пиши в базу. 

Автор: Flap 22.4.2008, 14:11
Так в том-то и дело, что неизвестно, когда будет затишье. Начну кэш разгребать, а они опять посыпятся. Буду думать дальше. Хотя, как вариант, можно вообще от таблицы отказаться, а сделать что-то быстрое.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)