1. Набираем команду codeby webinar. Набираем команду для организации и проведения вебинаров. Подробнее ...

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
  3. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление

Indy Tcpserver

Тема в разделе "Delphi - программирование", создана пользователем Frodo, 15 апр 2006.

Статус темы:
Закрыта.
  1. Frodo

    Frodo Гость

    Репутация:
    0
    Задача: при получении команды от клиента сервер должен открыть в ворде документ.

    Код:
    uses
    ...Word2000,IdComponent, IdTCPServer....
    
    procedure TMainForm.IdTCPServer1Execute(AThread: TIdPeerThread);
    var
    Ss:String;
    DocName:OleVariant;
    begin
    DocName:='C:\boot.doc';
    try
    with AThread.Connection do
    begin
     Ss:=ReadLn();
     if Ss='Get' then
     begin
      WordApplication1.Documents.Open(DocName,EmptyParam, EmptyParam, EmptyParam,EmptyParam,EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
      WordDocument1.ConnectTo(WordApplication1.ActiveDocument);
     end;
    ....
    Проблема такая что при подключении клиента к серверу он создает поток.При получении команды от клиента сервер пытается внутри потока запустить еще один поток для открытия вордовского документа.

    Как на время остановить или закрыть поток созданный сервером и передать управления для работы с вордом
     
  2. zubr

    zubr Гость

    Репутация:
    0
    Код:
    AThread.Suspend;//останавливаем поток
     WordApplication1.Documents.Open(DocName,EmptyParam, EmptyParam, EmptyParam,EmptyParam,EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
     WordDocument1.ConnectTo(WordApplication1.ActiveDocument);
    AThread.Resume;//продолжаем выполнение потока
     
  3. Frodo

    Frodo Гость

    Репутация:
    0
    попробовал но никаного эффекта. все что следует после

    Код:
    AThread.Suspend;
    просто не выполняется. Может это какой то глюк Indy 8 (у меня эта версия стоит)

    Можно ли из вне (не из OnExecute) вызвать Suspend? и если можно то как?
     
  4. Barmutik

    Barmutik Гость

    Репутация:
    0
    Лучше из потока ставить Ваше задание на открытие документа к примеру в основном потоке приложения и уже потом оттуда его брать и з очереди заданий и открывать...

    А с другой стороны в чём проблема что Вы из потока клиента создаёте ещё один поток ?
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей