powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Что делает Midas.dll и как она связана с TClientDataSet ?
23 сообщений из 23, страница 1 из 1
Что делает Midas.dll и как она связана с TClientDataSet ?
    #33512117
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 объектов я там не вижу.

С уважением,
Толя
...
Рейтинг: 0 / 0
Что делает Midas.dll и как она связана с TClientDataSet ?
    #33512155
Фотография grexhide
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Что делает Midas.dll и как она связана с TClientDataSet ?
    #33512168
Tolja
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Что делает Midas.dll и как она связана с TClientDataSet ?
    #33512176
Фотография ReNoiZer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дерегистрируй обе библиотеки в системе
удали midas.dll из путей которые доступны по системной переменной PATH
распихай midas.dll от d7 по каталогам с прогами писаными на d7
распихай midas.dll от d6 по каталогам с прогами писаными на d6

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


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

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

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

Код: pascal
1.
uses MidasLib; 


и не парься.
...
Рейтинг: 0 / 0
Что делает Midas.dll и как она связана с TClientDataSet ?
    #39484017
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymxно проги его не видят
Винда случаем не 64?
...
Рейтинг: 0 / 0
Что делает Midas.dll и как она связана с TClientDataSet ?
    #39484027
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Что делает Midas.dll и как она связана с TClientDataSet ?
    #39484030
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Квейд
Код: pascal
1.
uses MidasLib; 



он тормозной

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




он тормозной

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

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

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

он тормозной

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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



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

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

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

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

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


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