Модераторы: MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не получается реализовать метод на сервере, как загнать поток в критическую секцию 
:(
    Опции темы
oleg153
Дата 1.3.2007, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 1.3.2007

Репутация: нет
Всего: нет



Пока учусь, так что сильно не пинайте...
Проблема такая:
Как простое приложение сделал форму которая при создании подключается к Excel (CreateOleObject('Excel.Application')) и открывает нужную книгу.
В форму можно вводить несколько данных и далее при нажатии кнопки исполняется процедура которая выполняя промежуточные обработки переносит данные в Excel, на базе данных Excel и данных формы пишет результат в текстовый файл.
Из этой формы делаю ActiveX сервер.
Так как с сервером будут работать несколько клиентов и методы разные , причем могут исполняться паралельно, то форму превращаю в многопотоковый (free) сервер.
Для предотвращения одновременной обработки данных в Excel и текстовом файле , использую
Код

procedure TForm1.LockForm;
begin
  EnterCriticalSection(CS);
end;

procedure TForm1.UnlockForm;
begin
  LeaveCriticalSection(CS);
end;
 
критическую секцию.
Но не получается связка : Клиент передает данные, в методе библиотеки пишу:
Код

procedure TLib227.AddSignal(const Name, Date, Time,
  Number, Stop1, Limit1, Operation: WideString);
begin
 try
    Form1.LockForm;
    {Заносим данные в тесктовые поля формы}
    Form1.Edit2.Text:=Name;
    Form1.Edit3.Text:=Date;
    Form1.Edit4.Text:=Time;
    Form1.Edit5.Text:=Number;
    Form1.Edit6.Text:=Stop1;
    Form1.Edit7.Text:=Limit1;
    Form1.Edit8.Text:=Operation;
    {Вызываем процедуру обработки переданных данных}
    Form1.NewSignalAdd; // процедура обработки переданных данных. Описана в основной форме
 finally
    Form1.UnlockForm;
 end;
end;

Но процедуру вызвать не удается (Undeclared Identifier 'NewSignalAdd'), а как ее задекларировать, с учетом что эту процедуру я хочу вызывать и в основной форме (обработка при нажатии кнопки) при работе прямо с сервера
Код

procedure TForm1.Button4Click(Sender: TObject);
begin
 NewSignalAdd;
end;

PM MAIL   Вверх
Albinos_x
Дата 2.3.2007, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 15
Всего: 108



ничего не понял из этого набора букв...

как описал эту "невызываемую" процедуру?
почему просто её не вызываешь? :
Код
...
    Form1.Edit8.Text:=Operation;    
    {Вызываем процедуру обработки переданных данных}    
    NewSignalAdd;
...


Добавлено @ 19:47 
при чем тута критические секции?
к тому же в твоём варианте они работать скорее всего и не будут...


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Albinos_x
Дата 2.3.2007, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 15
Всего: 108



вот здесь хорошо разобрали http://forum.vingrad.ru/topic-127140/index.html синхронизацию форм, с помощью критических секций...


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: ActiveX/СОМ/CORBA"

Rrader
Girder

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

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


  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Delphi
  • Вопросы по SQL и вопросы по базам данных, не связанные с Delphi, задавать здесь

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Rrader, Girder.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: ActiveX/СОМ/CORBA | Следующая тема »


 




[ Время генерации скрипта: 0.1434 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.