|
|
|
Что делает Midas.dll и как она связана с TClientDataSet ?
|
|||
|---|---|---|---|
|
#18+
Привет! Очень хотелось бы узнать что "делает" 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 объектов я там не вижу. С уважением, Толя ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2006, 00:14:55 |
|
||
|
Что делает Midas.dll и как она связана с TClientDataSet ?
|
|||
|---|---|---|---|
|
#18+
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 - закрытые и проприетарные технологии. Принимай - их как есть. Или ты сертифицировать ее решил на предмет троянцев ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2006, 01:27:39 |
|
||
|
Что делает Midas.dll и как она связана с TClientDataSet ?
|
|||
|---|---|---|---|
|
#18+
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 не видно. Извиняюсь за всю эту кашу, опять много написал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2006, 02:03:14 |
|
||
|
Что делает Midas.dll и как она связана с TClientDataSet ?
|
|||
|---|---|---|---|
|
#18+
дерегистрируй обе библиотеки в системе удали midas.dll из путей которые доступны по системной переменной PATH распихай midas.dll от d7 по каталогам с прогами писаными на d7 распихай midas.dll от d6 по каталогам с прогами писаными на d6 Проверь. Вроде казусов быть не должно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2006, 02:29:56 |
|
||
|
Что делает Midas.dll и как она связана с TClientDataSet ?
|
|||
|---|---|---|---|
|
#18+
ToljaА где же код-то? Его в Midas.pas не видно. DSIntf.pas. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2006, 02:33:26 |
|
||
|
Что делает Midas.dll и как она связана с TClientDataSet ?
|
|||
|---|---|---|---|
|
#18+
ToljaПлюс не понятно, что в этой Midas.dll есть, ощущение такое, что реализация-то вся в исходниках из "нашей" Дельфи 6. А однако если зарегистрировать Midas из Дельфи 7, то все работает. Значит в Midas что-то реализовано для TClientDataSet? А где же код-то? Его в Midas.pas не видно. Так нато они и интерфейсы. В midas.pas можно обнаружить объявление интерфейса IAppServer. А реализации спрятали в ту самую midas.dll. Обычное дело для COM. Нет, не open source это. Совсем :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2006, 02:40:51 |
|
||
|
Что делает Midas.dll и как она связана с TClientDataSet ?
|
|||
|---|---|---|---|
|
#18+
того, не помню точный синтакс). Дальше данные уже путешествует как String по нашим процедурам и в конце опять cdsClientDataSet.XMLData := sXMLString, после чего из cdsClientDataSet мы вылавливаем нужные данные. Как только две машины с разными версиями Midas- остаются лишь целые числа везде где Double. Я могу ошибаться, но с 7 версии midas перестал определять десятичный разделитель по системным настройкам и пользует "." всегда. Короче копай в сторону десятичного разделителя. По ХMLData в конце концов можно и пробежаться и заменить разделитель на то что тебе надо. Дробная часть отсекается именно из-за разделителя в XMLData ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2006, 08:29:05 |
|
||
|
Что делает Midas.dll и как она связана с TClientDataSet ?
|
|||
|---|---|---|---|
|
#18+
midas.dll надо ложить рядом с исполняемым файлом или в раздел Windows/system32 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2017, 14:35:07 |
|
||
|
Что делает Midas.dll и как она связана с TClientDataSet ?
|
|||
|---|---|---|---|
|
#18+
Подскажите, коллеги мидас лежит по пути C:\WINDOWS\system32\midas.dll но проги его не видят Попросить админов выполнить regsvr32.exe C:\WINDOWS\system32\midas.dll ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2017, 17:29:50 |
|
||
|
Что делает Midas.dll и как она связана с TClientDataSet ?
|
|||
|---|---|---|---|
|
#18+
andreymxПодскажите, коллеги мидас лежит по пути C:\WINDOWS\system32\midas.dll но проги его не видят Попросить админов выполнить regsvr32.exe C:\WINDOWS\system32\midas.dll ?А прога твоя? Так сделай в ней Код: pascal 1. и не парься. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2017, 17:31:32 |
|
||
|
Что делает Midas.dll и как она связана с TClientDataSet ?
|
|||
|---|---|---|---|
|
#18+
andreymxно проги его не видят Винда случаем не 64? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2017, 17:34:58 |
|
||
|
Что делает Midas.dll и как она связана с TClientDataSet ?
|
|||
|---|---|---|---|
|
#18+
wadmanandreymxно проги его не видят Винда случаем не 64?32 бита windows-2003 КвейдandreymxПодскажите, коллеги мидас лежит по пути C:\WINDOWS\system32\midas.dll но проги его не видят Попросить админов выполнить regsvr32.exe C:\WINDOWS\system32\midas.dll ?А прога твоя? Так сделай в ней Код: pascal 1. и не парься.много dll, сервер восстановлен после черного вторника ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2017, 17:41:15 |
|
||
|
Что делает Midas.dll и как она связана с TClientDataSet ?
|
|||
|---|---|---|---|
|
#18+
Квейд Код: pascal 1. он тормозной Лучше загружать DLL все-таки, но не глобально-зарегистрированную ( DLL Hell ), а из папки с программой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2017, 17:43:53 |
|
||
|
Что делает Midas.dll и как она связана с TClientDataSet ?
|
|||
|---|---|---|---|
|
#18+
AriochКвейд Код: pascal 1. он тормозной Лучше загружать DLL все-таки, но не глобально-зарегистрированную ( DLL Hell ), а из папки с программойпапок много ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2017, 17:44:35 |
|
||
|
Что делает Midas.dll и как она связана с TClientDataSet ?
|
|||
|---|---|---|---|
|
#18+
andreymxПодскажите, коллеги мидас лежит по пути C:\WINDOWS\system32\midas.dll но проги его не видят Попросить админов выполнить regsvr32.exe C:\WINDOWS\system32\midas.dll ? Да. Лежать он может где угодно, но в реестре на него должна быть ссылка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2017, 18:37:02 |
|
||
|
Что делает Midas.dll и как она связана с TClientDataSet ?
|
|||
|---|---|---|---|
|
#18+
AriochЛучше загружать DLL все-таки, но не глобально-зарегистрированную ( DLL Hell ), а из папки с программойНе получится: там com-объект, он при первом запуске программы, использующей midas.dll регистрируется, а потом ищет dll по пути, указанному в реестре (ломается, если не находит). Без regsvr32.exe midas.dll не лечится. Мы однажды exe-шник с флешки запустили на пробу, потом все наши проги дико тормозили, не могли понять почему, пока флешку не выдернули (хорошо тогда только первый usb был, а то бы проблему до ухода и не заметили бы). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2017, 21:10:11 |
|
||
|
Что делает Midas.dll и как она связана с TClientDataSet ?
|
|||
|---|---|---|---|
|
#18+
andreymxAriochпропущено... он тормозной Лучше загружать DLL все-таки, но не глобально-зарегистрированную ( DLL Hell ), а из папки с программойпапок много повторяю, из папки с программой, с твоей вот сейчас запущеннйо программой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2017, 14:55:02 |
|
||
|
Что делает Midas.dll и как она связана с TClientDataSet ?
|
|||
|---|---|---|---|
|
#18+
schiandreymxПодскажите, коллеги мидас лежит по пути C:\WINDOWS\system32\midas.dll но проги его не видят Попросить админов выполнить regsvr32.exe C:\WINDOWS\system32\midas.dll ? Да. Лежать он может где угодно, но в реестре на него должна быть ссылкаадминов дёрнул, всё получилось, всем окей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2017, 14:56:03 |
|
||
|
Что делает Midas.dll и как она связана с TClientDataSet ?
|
|||
|---|---|---|---|
|
#18+
bk0010Не получится: там com-объект, он при первом запуске программы, использующей midas.dll регистрируется, а потом ищет dll по пути, указанному в реестре (ломается, если не находит). Без regsvr32.exe midas.dll не лечится. Мы однажды exe-шник с флешки запустили на пробу, потом все наши проги дико тормозили, не могли понять почему, пока флешку не выдернули (хорошо тогда только первый usb был, а то бы проблему до ухода и не заметили бы). Что-то вы страннео говориту > при первом запуске программы, использующей midas.dll регистрируется .....если ты сам так напишешь программу. Само по себе ничего не регистрируется. У тебя курица и яйцо. Программа по умолчанию находит Мидас в реестре, то есть он уже зарегистрирован и регистрировать еще раз не надо. Если же он не зарегистрирован, то обычная программа его не найдет, а раз не найдет то и не зарегистрирует. Если же ты программу сам писал, а не пример из книжки взял, то только ты знашеь на что ты закладывался - тогда там она может и регистрировать, и не регистрировать, и смотреть в реестр и не смотреть - как ты сам напишешь так все и будет. > Без regsvr32.exe midas.dll не лечится лечить - это на жаргоне взламывать. Midas взламывать не надо. schiв реестре на него должна быть ссылка Либо в программе его надо грузить не из реестра, а из папки самой программы. Так можно иметь свою фиксиррованную версию Мидаса и не зависеть от других. А то были случаи, когда особо умные программы сносили новый Мидас и ставили какую-то древность, а при деинсталляции - вообще его убивали. Ну, DLL Hell в общем, типовой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2017, 15:04:08 |
|
||
|
Что делает Midas.dll и как она связана с TClientDataSet ?
|
|||
|---|---|---|---|
|
#18+
Для тех, кому лень прочитать исходник Квейд Код: pascal 1. и за час на коленке сделать загрузку midas.dll из собственной папки без реестра https://stackoverflow.com/a/44030394/976391 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2017, 16:42:04 |
|
||
|
Что делает Midas.dll и как она связана с TClientDataSet ?
|
|||
|---|---|---|---|
|
#18+
Arioch> при первом запуске программы, использующей midas.dll регистрируется .....если ты сам так напишешь программу. Само по себе ничего не регистрируется.Проверьте. Создайте пустую программу, бросьте на форму TClientDataSet (без uses MidasLib) и запустите. Увидите, что com-объект из midas.dll автоматически зарегистрируется. Arioch> Без regsvr32.exe midas.dll не лечится лечить - это на жаргоне взламывать. Midas взламывать не надо.Тут под "лечить" имелась в виду ликвидация ошибки о том, что midas.dll не найден. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2017, 18:24:59 |
|
||
|
Что делает Midas.dll и как она связана с TClientDataSet ?
|
|||
|---|---|---|---|
|
#18+
bk0010, так сами же пишете, bk0010Создайте пустую программу, бросьте на форму TClientDataSet (без uses MidasLib) и запустите. Увидите, что com-объект из midas.dll автоматически зарегистрируется. значит - лечится, если "любая пустая программа с CDS" регистрирует мидаса точно так же, как regsvr32 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2017, 18:37:54 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39484837&tid=2042049]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
261ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 216ms |
| total: | 584ms |

| 0 / 0 |
