Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Что делает Midas.dll и как она связана с TClientDataSet ? / 23 сообщений из 23, страница 1 из 1
31.01.2006, 00:14:55
    #33512117
Tolja
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делает Midas.dll и как она связана с TClientDataSet ?
Привет!

Очень хотелось бы узнать что "делает" Midas.dll. Я вижу, что она декларирует пару интерфейсов (IAppServer, IAppServerDisp).

Вижу, что эти интерфейсы реализуются в классах TLocalAppServer (Provider.pas), TMtsDataModule (MtsRdm.pas), TDispatchAppServer (MConnect.pas), TRemoteDataModule (DataBkr.pas).

Однако совершенно не могу понять как, например TClientDataSet зависит от версии Midas.dll.

Если я, например на одной машине имею Midas.dll версии 7, а на другой машине версия 6, то когда они обмениваются информаций в формате OlaVariant (используется COM технология), то пропадают все десятичные дроби. В дата-пакете остаются лишь целые числа.

Это непонятно, ведь если интерфейсы из Midas реализуются в классах которые компилируются в мой exe или в мою библиотеку (dll), то по идее недстаточно лишь зарегистрировать одну и туже весию Midas.dll на обоих машинах. Надо, чтобы и реализация интерфейсов была из одной и той же версии Дельфи (6 или 7). На практике же этого оказывается достаточно.

Из чего собственно Midas.dll состоит? В файле лишь пара деклараций интерфейсов и ActiveX в "uses". Где-то прочитал, что Midas.dll регистрирует COM объекты. Но реализации COM объектов я там не вижу.

С уважением,
Толя
...
Рейтинг: 0 / 0
31.01.2006, 01:27:39
    #33512155
grexhide
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делает Midas.dll и как она связана с TClientDataSet ?
ToljaПривет!

Очень хотелось бы узнать что "делает" Midas.dll. Я вижу, что она декларирует пару интерфейсов (IAppServer, IAppServerDisp).

Вижу, что эти интерфейсы реализуются в классах TLocalAppServer (Provider.pas), TMtsDataModule (MtsRdm.pas), TDispatchAppServer (MConnect.pas), TRemoteDataModule (DataBkr.pas).

Однако совершенно не могу понять как, например TClientDataSet зависит от версии Midas.dll.

Если я, например на одной машине имею Midas.dll версии 7, а на другой машине версия 6, то когда они обмениваются информаций в формате OlaVariant (используется COM технология), то пропадают все десятичные дроби. В дата-пакете остаются лишь целые числа.

Это непонятно, ведь если интерфейсы из Midas реализуются в классах которые компилируются в мой exe или в мою библиотеку (dll), то по идее недстаточно лишь зарегистрировать одну и туже весию Midas.dll на обоих машинах. Надо, чтобы и реализация интерфейсов была из одной и той же версии Дельфи (6 или 7). На практике же этого оказывается достаточно.

Из чего собственно Midas.dll состоит? В файле лишь пара деклараций интерфейсов и ActiveX в "uses". Где-то прочитал, что Midas.dll регистрирует COM объекты. Но реализации COM объектов я там не вижу.

С уважением,
Толя

таки много букв написал, чесслово - не осилил.

Что именно тебя волнует/интересует ?

По предложениям со знаками вопроса можно ответить -
Библиотека состоит из байтов. Сегментов данных, сегментов кода.

COM объекты она регистрирует, по крайней мере
regsvr32.exe на нее не ругается, даже, я бы сказал, положительно
отзывается.

Версии лучше соблюдать одинаковые, в т.ч. и номера сборок.
А то мало ли что. Бинарный формат он на то и бинарный.

Или попробуй XML формат, может полегчает с потерей точности
(только про точку и запятую не забыть).

А на все остальные вопросы - ответа нет. midas.dll и/или midaslib.dcu -
закрытые и проприетарные технологии. Принимай - их как есть.

Или ты сертифицировать ее решил на предмет троянцев ?
...
Рейтинг: 0 / 0
31.01.2006, 02:03:14
    #33512168
Tolja
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делает Midas.dll и как она связана с TClientDataSet ?
grexhide
таки много букв написал, чесслово - не осилил.

Что именно тебя волнует/интересует ?

По предложениям со знаками вопроса можно ответить -
Библиотека состоит из байтов. Сегментов данных, сегментов кода.

COM объекты она регистрирует, по крайней мере
regsvr32.exe на нее не ругается, даже, я бы сказал, положительно
отзывается.

Версии лучше соблюдать одинаковые, в т.ч. и номера сборок.
А то мало ли что. Бинарный формат он на то и бинарный.

Или попробуй XML формат, может полегчает с потерей точности
(только про точку и запятую не забыть).

А на все остальные вопросы - ответа нет. midas.dll и/или midaslib.dcu -
закрытые и проприетарные технологии. Принимай - их как есть.

Или ты сертифицировать ее решил на предмет троянцев ?

Мой проблемы/вопросы возникли из-за того, что у клиента есть еще один поставщик работающий с Дельфи 7 (а у нас Дельфи 6). Приложения наши с "ихними" общаются при посредстве COM. Мы получаем OleVariant, его загоняем в cdsClientDataSet.Data, потом сразу же sXMLString:= cdsClientDataSet.XMLData (или что-то вроде этого, не помню точный синтакс). Дальше данные уже путешествует как String по нашим процедурам и в конце опять cdsClientDataSet.XMLData := sXMLString, после чего из cdsClientDataSet мы вылавливаем нужные данные. Как только две машины с разными версиями Midas- остаются лишь целые числа везде где Double.

Как бороться с этим я не знаю. Клиенту приходится самому следить чтобы везде была Midas версии 7. "Наше" приложение состоит из части за которую я отвечаю плюс часть, которая "не моя". В своей я допустим могу включить MidasLib, в вот в "чужую" мне коллеги на дадут сунуться "со свиным рылом".

Но если бы я их и уговорил, то я не знаю что будет если мы OleVariant слепленный программой пользующейся Midas версии 7 запихнем в TClientDataSet нашей программы скомпилированной с MidasLib из Дельфи 6. Может ничего страшного? Но поскольку не уверен, то и рубаху не хочу на груди рвать.

Может есть какие идеи/личный опыт?

Плюс не понятно, что в этой Midas.dll есть, ощущение такое, что реализация-то вся в исходниках из "нашей" Дельфи 6. А однако если зарегистрировать Midas из Дельфи 7, то все работает. Значит в Midas что-то реализовано для TClientDataSet? А где же код-то? Его в Midas.pas не видно.

Извиняюсь за всю эту кашу, опять много написал.
...
Рейтинг: 0 / 0
31.01.2006, 02:29:56
    #33512176
ReNoiZer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делает Midas.dll и как она связана с TClientDataSet ?
дерегистрируй обе библиотеки в системе
удали midas.dll из путей которые доступны по системной переменной PATH
распихай midas.dll от d7 по каталогам с прогами писаными на d7
распихай midas.dll от d6 по каталогам с прогами писаными на d6

Проверь. Вроде казусов быть не должно.
...
Рейтинг: 0 / 0
31.01.2006, 02:33:26
    #33512178
Lazy Cat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делает Midas.dll и как она связана с TClientDataSet ?
ToljaА где же код-то? Его в Midas.pas не видно.
DSIntf.pas.
...
Рейтинг: 0 / 0
31.01.2006, 02:40:51
    #33512181
Relic Hunter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делает Midas.dll и как она связана с TClientDataSet ?
ToljaПлюс не понятно, что в этой Midas.dll есть, ощущение такое, что реализация-то вся в исходниках из "нашей" Дельфи 6. А однако если зарегистрировать Midas из Дельфи 7, то все работает. Значит в Midas что-то реализовано для TClientDataSet? А где же код-то? Его в Midas.pas не видно.
Так нато они и интерфейсы. В midas.pas можно обнаружить объявление интерфейса IAppServer. А реализации спрятали в ту самую midas.dll. Обычное дело для COM. Нет, не open source это. Совсем :)
...
Рейтинг: 0 / 0
31.01.2006, 08:29:05
    #33512296
Michael Longneck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делает Midas.dll и как она связана с TClientDataSet ?
того, не помню точный синтакс). Дальше данные уже путешествует как String по нашим процедурам и в конце опять cdsClientDataSet.XMLData := sXMLString, после чего из cdsClientDataSet мы вылавливаем нужные данные. Как только две машины с разными версиями Midas- остаются лишь целые числа везде где Double.


Я могу ошибаться, но с 7 версии midas перестал определять десятичный разделитель по системным настройкам и пользует "." всегда. Короче копай в сторону десятичного разделителя. По ХMLData в конце концов можно и пробежаться и заменить разделитель на то что тебе надо. Дробная часть отсекается именно из-за разделителя в XMLData
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
24.04.2017, 14:35:07
    #39443311
prologos
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делает Midas.dll и как она связана с TClientDataSet ?
midas.dll надо ложить рядом с исполняемым файлом или в раздел Windows/system32
...
Рейтинг: 0 / 0
06.07.2017, 17:29:50
    #39484009
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делает Midas.dll и как она связана с TClientDataSet ?
Подскажите, коллеги
мидас лежит по пути C:\WINDOWS\system32\midas.dll
но проги его не видят

Попросить админов выполнить
regsvr32.exe C:\WINDOWS\system32\midas.dll
?
...
Рейтинг: 0 / 0
06.07.2017, 17:31:32
    #39484013
Квейд
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делает Midas.dll и как она связана с TClientDataSet ?
andreymxПодскажите, коллеги
мидас лежит по пути C:\WINDOWS\system32\midas.dll
но проги его не видят

Попросить админов выполнить
regsvr32.exe C:\WINDOWS\system32\midas.dll
?А прога твоя? Так сделай в ней

Код: pascal
1.
uses MidasLib; 


и не парься.
...
Рейтинг: 0 / 0
06.07.2017, 17:34:58
    #39484017
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делает Midas.dll и как она связана с TClientDataSet ?
andreymxно проги его не видят
Винда случаем не 64?
...
Рейтинг: 0 / 0
06.07.2017, 17:41:15
    #39484027
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делает Midas.dll и как она связана с TClientDataSet ?
wadmanandreymxно проги его не видят
Винда случаем не 64?32 бита windows-2003


КвейдandreymxПодскажите, коллеги
мидас лежит по пути C:\WINDOWS\system32\midas.dll
но проги его не видят

Попросить админов выполнить
regsvr32.exe C:\WINDOWS\system32\midas.dll
?А прога твоя? Так сделай в ней

Код: pascal
1.
uses MidasLib; 



и не парься.много dll, сервер восстановлен после черного вторника
...
Рейтинг: 0 / 0
06.07.2017, 17:43:53
    #39484030
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делает Midas.dll и как она связана с TClientDataSet ?
Квейд
Код: pascal
1.
uses MidasLib; 



он тормозной

Лучше загружать DLL все-таки, но не глобально-зарегистрированную ( DLL Hell ), а из папки с программой
...
Рейтинг: 0 / 0
06.07.2017, 17:44:35
    #39484031
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делает Midas.dll и как она связана с TClientDataSet ?
AriochКвейд
Код: pascal
1.
uses MidasLib; 




он тормозной

Лучше загружать DLL все-таки, но не глобально-зарегистрированную ( DLL Hell ), а из папки с программойпапок много
...
Рейтинг: 0 / 0
06.07.2017, 18:37:02
    #39484072
schi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делает Midas.dll и как она связана с TClientDataSet ?
andreymxПодскажите, коллеги
мидас лежит по пути C:\WINDOWS\system32\midas.dll
но проги его не видят

Попросить админов выполнить
regsvr32.exe C:\WINDOWS\system32\midas.dll
?

Да. Лежать он может где угодно, но в реестре на него должна быть ссылка
...
Рейтинг: 0 / 0
06.07.2017, 21:10:11
    #39484117
bk0010
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делает Midas.dll и как она связана с TClientDataSet ?
AriochЛучше загружать DLL все-таки, но не глобально-зарегистрированную ( DLL Hell ), а из папки с программойНе получится: там com-объект, он при первом запуске программы, использующей midas.dll регистрируется, а потом ищет dll по пути, указанному в реестре (ломается, если не находит). Без regsvr32.exe midas.dll не лечится. Мы однажды exe-шник с флешки запустили на пробу, потом все наши проги дико тормозили, не могли понять почему, пока флешку не выдернули (хорошо тогда только первый usb был, а то бы проблему до ухода и не заметили бы).
...
Рейтинг: 0 / 0
07.07.2017, 14:55:02
    #39484606
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делает Midas.dll и как она связана с TClientDataSet ?
andreymxAriochпропущено...

он тормозной

Лучше загружать DLL все-таки, но не глобально-зарегистрированную ( DLL Hell ), а из папки с программойпапок много

повторяю, из папки с программой, с твоей вот сейчас запущеннйо программой
...
Рейтинг: 0 / 0
07.07.2017, 14:56:03
    #39484610
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делает Midas.dll и как она связана с TClientDataSet ?
schiandreymxПодскажите, коллеги
мидас лежит по пути C:\WINDOWS\system32\midas.dll
но проги его не видят

Попросить админов выполнить
regsvr32.exe C:\WINDOWS\system32\midas.dll
?

Да. Лежать он может где угодно, но в реестре на него должна быть ссылкаадминов дёрнул, всё получилось, всем окей
...
Рейтинг: 0 / 0
07.07.2017, 15:04:08
    #39484619
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делает Midas.dll и как она связана с TClientDataSet ?
bk0010Не получится: там com-объект, он при первом запуске программы, использующей midas.dll регистрируется, а потом ищет dll по пути, указанному в реестре (ломается, если не находит). Без regsvr32.exe midas.dll не лечится. Мы однажды exe-шник с флешки запустили на пробу, потом все наши проги дико тормозили, не могли понять почему, пока флешку не выдернули (хорошо тогда только первый usb был, а то бы проблему до ухода и не заметили бы).

Что-то вы страннео говориту

> при первом запуске программы, использующей midas.dll регистрируется

.....если ты сам так напишешь программу. Само по себе ничего не регистрируется.

У тебя курица и яйцо.

Программа по умолчанию находит Мидас в реестре, то есть он уже зарегистрирован и регистрировать еще раз не надо.
Если же он не зарегистрирован, то обычная программа его не найдет, а раз не найдет то и не зарегистрирует.

Если же ты программу сам писал, а не пример из книжки взял, то только ты знашеь на что ты закладывался - тогда там она может и регистрировать, и не регистрировать, и смотреть в реестр и не смотреть - как ты сам напишешь так все и будет.

> Без regsvr32.exe midas.dll не лечится

лечить - это на жаргоне взламывать. Midas взламывать не надо.


schiв реестре на него должна быть ссылка

Либо в программе его надо грузить не из реестра, а из папки самой программы. Так можно иметь свою фиксиррованную версию Мидаса и не зависеть от других.

А то были случаи, когда особо умные программы сносили новый Мидас и ставили какую-то древность, а при деинсталляции - вообще его убивали. Ну, DLL Hell в общем, типовой
...
Рейтинг: 0 / 0
07.07.2017, 16:42:04
    #39484749
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делает Midas.dll и как она связана с TClientDataSet ?
Для тех, кому лень прочитать исходник

Квейд
Код: pascal
1.
uses MidasLib; 



и за час на коленке сделать загрузку midas.dll из собственной папки без реестра

https://stackoverflow.com/a/44030394/976391
...
Рейтинг: 0 / 0
07.07.2017, 18:24:59
    #39484837
bk0010
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делает Midas.dll и как она связана с TClientDataSet ?
Arioch> при первом запуске программы, использующей midas.dll регистрируется
.....если ты сам так напишешь программу. Само по себе ничего не регистрируется.Проверьте. Создайте пустую программу, бросьте на форму TClientDataSet (без uses MidasLib) и запустите. Увидите, что com-объект из midas.dll автоматически зарегистрируется.
Arioch> Без regsvr32.exe midas.dll не лечится
лечить - это на жаргоне взламывать. Midas взламывать не надо.Тут под "лечить" имелась в виду ликвидация ошибки о том, что
midas.dll не найден.
...
Рейтинг: 0 / 0
07.07.2017, 18:37:54
    #39484845
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делает Midas.dll и как она связана с TClientDataSet ?
bk0010,

так сами же пишете,

bk0010Создайте пустую программу, бросьте на форму TClientDataSet (без uses MidasLib) и запустите. Увидите, что com-объект из midas.dll автоматически зарегистрируется.

значит - лечится, если "любая пустая программа с CDS" регистрирует мидаса точно так же, как regsvr32
...
Рейтинг: 0 / 0
07.07.2017, 23:00:26
    #39484928
bk0010
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делает Midas.dll и как она связана с TClientDataSet ?
Только при первом запуске. Если он зарегистрирован раньше, а dll-ки по старому пути уже нет, то будет ошибка, даже если midas.dll лежит в каталоге с exe-шником.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Что делает Midas.dll и как она связана с TClientDataSet ? / 23 сообщений из 23, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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