![Фотография](https://vse.kz/uploads/av-23851.jpg?_r=0)
Delphi.вопрос.
#161
Отправлено 20.08.2008, 17:22:00
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
Вообще я хотел сказать, что можно звать функции далеко не из любых dll, а только из тех, автор которых их для этого предназначал. Если автор dll написал где-нибудь
__declspec(dllexport) class CFoo {...};
то все.... С любым другим компилятором, кроме того, чем собрал автор, вы радостно пролетаете мимо методов класса CFoo.
А непростые длл требуют изрядного напряжения для их правильного написания, чтобы работало всегда и правильно.
#163
Отправлено 20.08.2008, 19:11:25
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
Есть сишные стандартные соглашения по вызову функций. С++ вообще здесь пролетает, чтобы его использовать, надо везде писать с-шные обёртки. Если соглашения соблюдаются - никаких проблем нет и быть не может. Memory allocation всегда обговаривается заранее, и граблями это назвать тяжело, т.к. проблема заезженная и понятная.Zulkar, можно. Но лучше не надо. Никто не обещает, что ординалы в версии x.y.z и x.y.z+1 будут совпадать.
Вообще я хотел сказать, что можно звать функции далеко не из любых dll, а только из тех, автор которых их для этого предназначал. Если автор dll написал где-нибудь
__declspec(dllexport) class CFoo {...};
то все.... С любым другим компилятором, кроме того, чем собрал автор, вы радостно пролетаете мимо методов класса CFoo.
А непростые длл требуют изрядного напряжения для их правильного написания, чтобы работало всегда и правильно.
Ну есть ещё MS-овские соглашения про COM-интерфейсы. Их, кстати, вполне можно использовать из C кода, хоть и муторно.
Сообщение отредактировал v04bvs: 20.08.2008, 19:12:31
#164
Отправлено 20.08.2008, 19:20:18
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
Это да, но опять же, при условии, что она является двоичным СОМ-сервером - то есть, создана с соблюдением всех спецификаций СОМ и использованием универсальных типов данных IDL. В случае использования только встроенных типов самого языка программирования (например, С++) никакой "смеси языков" не получится - клиентами у нее смогут быть только программы, написанные на том же самом языке (С++).А dll, кроме всего прочего предназначена для смеси различных языков в одном проекте.
Ошибаетесь, имеет. Причем самое прямое. Когда клиенты запрашивают объект сервера СОМ, они передают диспетчеру SCM код ID объекта, а SCM находит и загружает сервер, получая эту информацию из системного реестра.Service Control Manager относится к службам Windows (аналог демонов UNIXа) и к COM-серверам прямого отношения не имеет.
#165
Отправлено 20.08.2008, 21:50:17
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
И как же по-вашему программы на Delphi используют системные библиотеки Windows (user32.dll например)? Они то на C написаны, не на Delphi. И COM-ом там не пахнет.Это да, но опять же, при условии, что она является двоичным СОМ-сервером - то есть, создана с соблюдением всех спецификаций СОМ и использованием универсальных типов данных IDL. В случае использования только встроенных типов самого языка программирования (например, С++) никакой "смеси языков" не получится - клиентами у нее смогут быть только программы, написанные на том же самом языке (С++).
Ошибаетесь, имеет. Причем самое прямое. Когда клиенты запрашивают объект сервера СОМ, они передают диспетчеру SCM код ID объекта, а SCM находит и загружает сервер, получая эту информацию из системного реестра.
Service Control Manager относится к службам Windows (аналог демонов UNIXа) и к COM-серверам прямого отношения не имеет.
Ничего про COM-серверы здесь нет. Приведите ссылку на документацию.The service control manager (SCM) is started at system boot. It is a remote procedure call (RPC) server, so that service configuration and service control programs can manipulate services on remote machines.
The service functions provide an interface for the following tasks performed by the SCM:
* Maintaining the database of installed services.
* Starting services and driver services either upon system startup or upon demand.
* Enumerating installed services and driver services.
* Maintaining status information for running services and driver services.
* Transmitting control requests to running services.
* Locking and unlocking the service database.
#166
Отправлено 20.08.2008, 23:55:47
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
Там, кратко говоря, используется проецирование файлов DLL в адресное пространство вызывающего процесса, получение адресов динамически связываемых функций и их вызов. При создании исполняемого файла ЕХЕ компоновщик просматривает объектные файлы вашей программы и в разделе импорта составляет список всех необходимых DLL, в которых находятся вызываемые вашей программой библиотечные функции. При вызове функций из системных библиотек (например, из user32.dll, реализующей лишь базовые функциональные возможности Win32 API), действительно, СОМ-ом там и не пахнет, а значит, не пахнет никакими возможностями получать указатели на интерфейсы. Только в СОМ возможно ООП на основе интерфейсов, но опять же, если не использовать универсальные типы данных IDL по стандарту Microsoft, то языковой независимости клиентов и серверов СОМ достичь не получится (об этом я уже говорил выше).И как же по-вашему программы на Delphi используют системные библиотеки Windows (user32.dll например)? Они то на C написаны, не на Delphi. И COM-ом там не пахнет.
Вот, например, из MSDN Library:Ничего про COM-серверы здесь нет. Приведите ссылку на документацию.
The service control manager (SCM) is started at system boot. (...)
Вот еще, оттуда же:A component called the Service Control Manager (SCM) is responsible for locating the server and running it.
The Service Control Manager (SCM) is the component of the COM Library responsible for locating class implementations and running them. The SCM ensures that when a client request is made, the appropriate server is connected and ready to receive the request. The SCM keeps a database of class information based on the system registry that the client caches locally through the COM library.
Сообщение отредактировал Visual1: 21.08.2008, 00:33:37
#167
Отправлено 22.08.2008, 01:19:53
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
А я что? Я просто предложил пример в тему. Да и к тому-же код можно расширить - сохранять в реестре (GrayFox, не кидайтесь камнямиЗачем когда есть Rxlib ?
![:rotate:](http://vse.kz/public/style_emoticons/default/smile.gif)
<CompName>:<CompProperty=value>[CompProperty=value]..<CR>
Не знаю зачем. Вдруг пригодится
![:laugh:](http://vse.kz/public/style_emoticons/default/smile.gif)
![:laugh:](http://vse.kz/public/style_emoticons/default/smile.gif)
Хм. По поводу переносимости прикладных программ. Я не спец, но на сколько я знаю, можно писать программы ПРАВИЛЬНО - т.е. пользоваться домашним каталогом (для этого есть переменная %APPDATA%). А уже потом, когда программа будет подготовлена к запуску на съемных носителях, лаунчер заменит значение %APPDATA% для запускаемой программы на <FlashDriveLetter>:\<PathToProgram>\AppData\, либо просто скопирует содержимое каталога AppData на съемном носителе в домашнюю директорию пользователя - а там уже, по возможности, назад.
Гыыы. Хай юзер устанавливает такие программы в %HOMEPATH% или вообще на рабочий стол %-)требуют прав администратора для какой нибудь фигни типа конвертирования музыки
А вообще, как показывает практика, подобные программы используют не корневой каталог с программой, а просто текущий каталог. Создаем ярлык, меняем рабочую папку на ту, где можно - ву-а-ля! Теперь "."=%HOMEPATH%, а не <PathToProgram>
Сохранять конфиги в %TEMP% грешно, и вообще можно схлопотать пистон за преступление против человечности %-)Еще в /tmp могут писать laugh.gif
А при увеличении количества ini-файлов мы имеем торможение файловой системы %-)При увеличении количества нодов - мы имеем падение производительности.
Сама Win9x ведет к отсутствию безопасности %-)А куда ведёт %HOMEPATH% в Windows 9x?
У ini и у inf файлов разное назначение.Выбран методом тыка - C:\WINDOWS\inf\lhtsc.inf
P.S.> не обзывайтесь некропостером. Просто больно уж полемики жаркие
![:laugh:](http://vse.kz/public/style_emoticons/default/smile.gif)
#168
Отправлено 22.08.2008, 01:36:49
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
По-моему, не очень кратко у вас получилосьТам, кратко говоря, используется проецирование файлов DLL в адресное пространство вызывающего процесса, получение адресов динамически связываемых функций и их вызов. При создании исполняемого файла ЕХЕ компоновщик просматривает объектные файлы вашей программы и в разделе импорта составляет список всех необходимых DLL, в которых находятся вызываемые вашей программой библиотечные функции. При вызове функций из системных библиотек (например, из user32.dll, реализующей лишь базовые функциональные возможности Win32 API), действительно, СОМ-ом там и не пахнет, а значит, не пахнет никакими возможностями получать указатели на интерфейсы. Только в СОМ возможно ООП на основе интерфейсов, но опять же, если не использовать универсальные типы данных IDL по стандарту Microsoft, то языковой независимости клиентов и серверов СОМ достичь не получится (об этом я уже говорил выше).
![:rotate:](http://vse.kz/public/style_emoticons/default/rolleyes.gif)
user32.dll - да, там не много функционала, но отдельно его не используют. Вообще WinAPI, если я не ошибаюсь, представляет собой набор функций, хранящихся в динамически подключаемых библиотеках...
Бред. Совершенно разные технологии
![:laugh:](http://vse.kz/public/style_emoticons/default/rolleyes.gif)
#169
Отправлено 22.08.2008, 08:26:36
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
Где я говорил, что его "используют отдельно"? Отдельно от чего?user32.dll - да, там не много функционала, но отдельно его не используют.
А я утверждал, что одинаковые? Где, покажите.Бред. Совершенно разные технологии
Зачем приписываете мне ошибочные высказывания, которых у меня не было?
#170
Отправлено 22.08.2008, 12:36:36
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
Всем известно, какие именно функции GDI реализованы в библиотеке user32, да и назвать их БАЗОВЫМИ, мне кажется, не совсем корректно.из user32.dll, реализующей лишь базовые функциональные возможности Win32 API
Совершенно верно - вы этого не утверждали. Но это и не к вашим доводам относилось, а к самой теме сравнения этих технологий. Это нужно, но не в таком ключе (использование различных сред разработок при создании конечных продуктов).А я утверждал, что одинаковые
#171
Отправлено 22.08.2008, 19:29:24
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
Вообще-то вполне корректно. Но ведь вы же сами не знаете, как будет "совсем корректно". Все, что вы смогли возразить, это сказать что вам "кажется".да и назвать их БАЗОВЫМИ, мне кажется, не совсем корректно.
![;)](http://vse.kz/public/style_emoticons/default/smile.gif)
Если вы со мной не согласны, то скажите, как должно быть.
Пока ваши возражения идут без доказательств, продолжать с вами разговор мне неинтересно.
![:)](http://vse.kz/public/style_emoticons/default/bored.gif)
P.S. Ваш "шедевр" насчет функций GDI я тоже видел. Но спорить не буду - не по теме, да и не хочется мне тратить на вас время.
#172
Отправлено 22.08.2008, 23:41:53
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
Как должно быть? Dll всеми известными мне компиляторами собираются с одинаковым интерфейсом вызова функций (экспорт). И, соответственно, функции из любых динамически подключаемых библиотек могут использоваться в любой программе, собранной компилятором, имеющим поддержку вызова stdcall. Все просто.
Опечатался. GUI.
![:)](http://vse.kz/public/style_emoticons/default/drink.gif)
Сообщение отредактировал RAWMIND: 22.08.2008, 23:44:24
#173
Отправлено 28.08.2008, 10:28:17
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
Ошибаетесь. user32 является такой же обязательной базовой библиотекой, как и kernel32. Более того, она является частью самой ОС Windows, об этом прямо сказано в MSDN Library:Базовой библиотекой я считаю kernel. Без нее (в отличие от user32) не обойтись.
These libraries can be user-supplied, vendor supplied (the VBA DLLs that supply its functionality), or part of Windows itself (USER32.DLL, GDI32.DLL, etc.).
Это никакое не "удовольствие", а жизненная необходимость для всех, кто программирует под Windows. Ваша "логика" Вас здесь сильно подвела.На msdn ссылок давать не буду (нет у меня их, не имею удовольствия регулярно читать статьи), просто логика.
![:smoke:](http://vse.kz/public/style_emoticons/default/laugh.gif)
#175
Отправлено 30.08.2008, 20:32:38
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
Подскажите пожалуйста, как написать на Delphi программу инсталляции?
Допустим, у меня уже есть написанная работающая программа на Delphi. Я теперь хотел бы её вмонтировать в модуль install.exe или setup.exe, чтобы после запуска этого install или setup моя программа попала бы в меню "Пуск" Windows c возможностью дальнейшей деинсталляции.
Что для этого нужно? Если инфы слишком много, то с благодарностью приму интернет-ссылку на эту тему
![:fie:](http://vse.kz/public/style_emoticons/default/smile.gif)
Заранее большое спасибо!
#179
Отправлено 03.09.2008, 18:52:12
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
Install Shield Express, должен быть на установочном диске DelphiЗдавствуйте !
Подскажите пожалуйста, как написать на Delphi программу инсталляции?
Допустим, у меня уже есть написанная работающая программа на Delphi. Я теперь хотел бы её вмонтировать в модуль install.exe или setup.exe, чтобы после запуска этого install или setup моя программа попала бы в меню "Пуск" Windows c возможностью дальнейшей деинсталляции.
Что для этого нужно? Если инфы слишком много, то с благодарностью приму интернет-ссылку на эту тему
Заранее большое спасибо!
#180
Отправлено 04.09.2008, 17:20:12
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
http://www.innosetup.com/Здавствуйте !
Подскажите пожалуйста, как написать на Delphi программу инсталляции?
Допустим, у меня уже есть написанная работающая программа на Delphi. Я теперь хотел бы её вмонтировать в модуль install.exe или setup.exe, чтобы после запуска этого install или setup моя программа попала бы в меню "Пуск" Windows c возможностью дальнейшей деинсталляции.
Что для этого нужно? Если инфы слишком много, то с благодарностью приму интернет-ссылку на эту тему
Заранее большое спасибо!
бесплатная. уже 3 года пользуюсь. можно писать и плагины и алгоритм установки..
Количество пользователей, читающих эту тему: 0
пользователей: 0, неизвестных прохожих: 0, скрытых пользователей: 0