powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как правильно обновлять элементы формы при работе с TIdTCPClient?
5 сообщений из 5, страница 1 из 1
Как правильно обновлять элементы формы при работе с TIdTCPClient?
    #39708176
TScheduler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пишу клиент-серверное приложение с использованием компонентов TIdTPCServer/TIdTCPClient (Delphi XE, Indy 10). В клиентской части есть таймер, в котором клиент принимает сообщения от сервера. Сообщения принимаются так:

Код: pascal
1.
2.
3.
4.
if (client.IOHandler.inputBufferIsEmpty) then exit();
try
    str := client.socket.ReadLn(...);
    ...



Далее, в том же таймере, в зависимости от того, какое сообщение пришло, необходимо внести изменения на форму:

Код: pascal
1.
2.
3.
4.
if (str = '...') then begin
    edit1.text := '...';
end;
else if (...



Есть некоторые проблемы при обмене данными, и я подозреваю, что дело в прямом обращении к элементам формы, которое при работе с многопоточными компонентами, вроде как, запрещено.

Верны ли мои подозрения, что второй блок кода может привести к таким проблемам? Если да, то как решается (или даже не допускается) проблема? менять элементы формы в "Synchronize"? Или есть другие подходы?
...
Рейтинг: 0 / 0
Как правильно обновлять элементы формы при работе с TIdTCPClient?
    #39708181
Фотография krapotkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
подход всегда один - данные не должны храниться на экране
есть модель данных (МД), это набор структур, где они хранятся и даже как-то управляются.
это, по-сути, сервер внутри вашей программы
с этим сервером работает и модуль интерфейса (форма) и модуль обмена с внешним миром
в этом случае достаточно просто заносить приходящие данные а МД и дергать метод, который отвечает за считывание МД на форму
...
Рейтинг: 0 / 0
Как правильно обновлять элементы формы при работе с TIdTCPClient?
    #39708184
TScheduler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А метод дергать в том же таймере, ведь?

Код: pascal
1.
Synchronize(method);



?
...
Рейтинг: 0 / 0
Как правильно обновлять элементы формы при работе с TIdTCPClient?
    #39708186
Котовасия
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TSchedulerЕсть некоторые проблемы...

Верны ли мои подозрения, что второй блок кода может привести к таким проблемам? Если да, то как решается (или даже не допускается) проблема?
Ну что ты прямо. Для решения некоторых пооблем соедует использовать некоторые методы.
...
Рейтинг: 0 / 0
Как правильно обновлять элементы формы при работе с TIdTCPClient?
    #39708187
TScheduler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторНу что ты прямо. Для решения некоторых пооблем соедует использовать некоторые методы.

Котовасия , спасибо. Как пометить ответ решением?
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как правильно обновлять элементы формы при работе с TIdTCPClient?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]