Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Программа и интерфейс
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 22.05.2009, 05:22
AIMor AIMor вне форума
Прохожий
 
Регистрация: 13.03.2009
Сообщения: 31
Репутация: 10
По умолчанию Application и Service Application - в чем разница???

Приветствую всех, товарищи программисты!

Существует ряд приложений визуализация для которых не нужна, зато есть необходимость, чтобы они начинали работать при загрузке Windows (допустим XP либо 2003). Для реализации таких задач прекрасно подходят проекты типа Service Application, написанные на Delphi.

Но если бы все было так харошо, как хочется.
При реализации проектов типа Service Application я столкнулся с такой особенностью - тот код, который был написан в проекте типа Application и с успехом работал отказывается работать в проекте типа Service Application. Ниже приведу два примера.

Для реализации связи с DDE-сервером применяю DdeClientConv.

Код:
DdeClientConv1.SetLink('RSLinx','T_DD');

В проекте типа Application связь с топиком T_DD устанавливается успешно, а вот в проекте типа Service Application после выполнения этой строки кода команда GetLastError возвращает номер ошибки 2 (The system cannot find the file specified). Если свойство службы Interactive установить True, то команда GetLastError возвращает номер ошибки 203 (The system could not find the environment option that was entered).

Для реализации связи с OPC-сервером служит следующая команда:

Код:
OPC_Server:=CreateComObject(ProgIDToClassID('RSLinx OPC Server')) As IOPCServer;

В проекте типа Application связь с OPC-сервером устанавливается успешно, а вот в проекте типа Service Application запуск службы прерывается при выполнении этой команды.
Ответить с цитированием
  #2  
Старый 10.06.2009, 12:33
Kozer Kozer вне форума
Прохожий
 
Регистрация: 25.05.2009
Сообщения: 1
Репутация: 10
По умолчанию

Перед использованием любой функции СОМ или API OLE нужно инициализировать библиотеку СОМ, вызвав функцию CoInitialize() с параметром nil. Для правильного отключения библиотеки СОМ нужно вызывать функцию CoUninitialize(). Данные функции в приложениях Delphi вызываются автоматически из метода Application.Initialize, а функция CoUninitialize - при завершении ComObj. Возможно, при создании сервиса этого не происходит.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:45.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter