Notes |
|
(0017511)
|
zed
|
13-07-2016 04:16
|
|
Странно, у меня ваши метки импортировались без проблем (Win8). Возможно что-то не так с midas.dll и она не поддерживает WinXP. Попробуйте заменить её версией из аттача midas.D2007.zip (версия от Delphi 2007) или midas.D7.zip (версия от Delphi 7). В релизе лежит версия от Delphi XE2. |
|
|
(0017512)
|
dkxce
|
13-07-2016 04:45
|
|
Подменял библиотеку от версии 151111, из аттача midas.D2007.zip и midas.D7.zip -
та же проблема |
|
|
(0017513)
|
zed
|
13-07-2016 04:48
|
|
Тогда скачайте ночную сборку и запустите дебажную версию. Она сгенерирует *.elf файл об ошибке. Приложите его сюда. Ночнушку распаковывайте в отдельную папку и тестируйте с оригинальной dll и с версией от D2007.
И приложите скриншот с настройками, когда вы добавляете sml базу. |
|
|
(0017517)
|
dkxce
|
13-07-2016 08:44
|
|
Запустил дебажную версию, открыл EurekaLog, подключил отладчик.
Оказалось библиотека загружена из System32 и зависла в памяти и именно она подтягивается при импорте
меток. Файл не удаляется. Посмотрел - никто большее библиотеку не юзает. Тупо выгрузил. Заменил на
более новую версию - все заработало.
Запустил на другой машине где была старая версия программы - опять та же ошибка, поменял dll - зараб
отало. В чем причина ХЗ. Вечером попробую на еще одной машине. |
|
|
(0017518)
|
zed
|
13-07-2016 08:48
|
|
А что за версия лежала в System32? |
|
|
(0017519)
|
dkxce
|
13-07-2016 08:48
|
|
|
|
(0017520)
|
zed
|
13-07-2016 08:49
|
|
От Delphi 7? Приаттачьте, хочу посмотреть на неё. |
|
|
(0017521)
|
dkxce
|
13-07-2016 09:18
|
|
|
|
(0017522)
|
zed
|
13-07-2016 09:57
|
|
У вас версия от Delphi 6. И оказывается, что SAS не подхватывает либу из своей папки, а грузит её из System32, если та была зарегистрирована при помощи regsvr32. Вот и нашла коса на камень. |
|
|
(0017523)
|
dkxce
|
13-07-2016 11:55
|
|
Понял, сделаю unregister и буду ждать, может какое еще приложение отвалится.
P.S: А если динамически грузить через LoadLibrary/FreeLibrary? |
|
|
(0017524)
|
zed
|
13-07-2016 13:41
|
|
Нет, не помогает. Хоть либа и загружается (видно в дебагере), внутрях Delphi оно всё равно пытается загрузить её из System32 и игнорирует то, что было загружено руками.
В качестве варианта, можно ещё попробовать как-то слинковать midaslib.dcu от D2007, если это возможно. |
|
|
|
А оно нам надо? Может закрываем как нерешаемый баг? Людей с установленной Delphi 6 вряд ли много, а те у кого она есть могут и сами разобраться, если сильно нужно. Тем более у нас уже рекомендуемая база меток SQLite.
ЗЫЖ А от midas.dll я давно предлагал избавляться. Простой парсер xml для импорта/экспорта будет работать немногим хуже. |
|
|
(0017526)
|
zed
|
14-07-2016 14:10
|
|
Эту либу могут ставить приложения написанные на Delphi/C++, т.е. она ставится не только вместе с Delphi. Поэтому, надо подумать про вариант с dcu. Может и топикстартер поможет чем. Судя по комментариям, кое-что в программировании он понимает.
> А от midas.dll я давно предлагал избавляться.
Мало предложить, а вот взять и избавиться - совсем другое дело. Там вообще трудность не столько в парсере xml, сколько в том, что всю логику sml придётся переделывать, чтобы выпилить датасет. |
|
|
|
> всю логику sml придётся переделывать, чтобы выпилить датасет.
Да какая там логика? Там только генерация ID при помощи автоинкрементного поля. Вся остальная логика на структурах в памяти, а в датасет только сохранение выполняется. |
|
|
(0017528)
|
zed
|
14-07-2016 14:24
|
|
Поиск и фильтрация датасетом производится. Переписывать придётся много. |
|
|
|
Так я же предлагаю только импорт и экспорт переписывать, а там все равно одноразовое чтение или запись. Тогда даже на системах с проблемами в midas.dll можно будет импортировать данные из старой версии. |
|
|
(0017530)
|
koch
|
14-07-2016 21:08
|
|
Похожая история в WinXP: в свежераспакованную 160707 кинул Categorymarks.sml, marks.sml и SASPlanet.ini. После запуска выскочила ошибка "Exception: Error loading MIDAS.DLL"
Решил так: в предыдущей версии конвертировал в базу меток в SQLite3 (marks.db3) и кинул в папку эту версию меток. Минус процедуры - все метки стали отображаться (ранее многие были отключены). Также на всякий случай создал новый ini. |
|
|
(0017668)
|
T_Im
|
20-10-2016 13:03
(edited on: 20-10-2016 13:31) |
|
Соображения насчет бага. Новые версии прекрасно работают со старым форматом, просто потерялась портативность папки САС.
http://www.sasgis.org/forum/viewtopic.php?f=2&t=1546&p=43987#p43986
в версиях САС 160606 (без бага) 160707 (появился баг) 161017 (текущая) лежит один и тот же midas.dll => причина точно не в версии библиотеки.
Скорее всего между версиями поменялся механизм поиска и регистрации библиотеки.
На всякий случай уточню, что в реестре у меня не было никаких других путей к midas.dll кроме путей папок САС. На системном диске библиотека тоже отстуствует.
|
|
|
|
Поменялось в недрах делфи. Так как сменилась версия, которой мы пользуемся. Если придумаете как вернуть старое поведение - скажите. |
|
|
|
С портативностью ничего не случилось. Если у вас не установлена делфи старой версии, то все нормально будет. Если установлена, то выполните дерегистрацию для midas.dll и все опять будет портативно. |
|
|
(0017671)
|
T_Im
|
20-10-2016 15:34
(edited on: 20-10-2016 15:42) |
|
В корне неверное понимание причин проблемы.
Смотрите. Вчера почистил все упоминания о мидас из реестра. Запускались новые версии САС из 4-х папок (все они сейчас работают нормально со старым форматом меток), никаких Дельфей не ставил.
После их запуска имею в реесте:
появились следующие разделы со словом мидас:
Borland.Midas_DatapacketRead.1
Borland.Midas_DatapacketWrite.1
Borland.Midas_DSBase
Borland.Midas_DSBase.1
Borland.Midas_DSCursor
Borland.Midas_DSCursor.1
внутри этих разделов, в ключах прописаны следующие классы
{9E8D2FA1-591C-11D0-BF52-0020AF32BD64}
{9E8D2FA3-591C-11D0-BF52-0020AF32BD64}
{9E8D2FA7-591C-11D0-BF52-0020AF32BD64}
{9E8D2FA5-591C-11D0-BF52-0020AF32BD64}
теперь ищу ключи со словом мидас
вуа ля! в разделе
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\
видим в путях ключей все эти 4 класса,
в ключах HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{номер класса}\InProcServer32\(default)
во всех 4-х классах в указанном выше ключе прописан один и тот же путь к MIDAS.DLL - откуда САС была запущена в первый раз.
Угадайте, что теперь произойдет, если переименовать эту самую папку, и запустить любой из 4-х клонов САС.
Возможно для решения этой проблемы помогут эти ссылки:
http://delphimaster.net/view/10-1066399363
http://www.sql.ru/forum/587522/midas-dll-otsutsvie-na-kliente
Старая версия, по видимому, нормально "перерегистрировала" библиотеку, если не находила ее по указанному в реестре пути, в новом дельфи, похоже, что то поломали.
Но, ИМХО, регистрировать в системе библиотеку - есть зло. Уж лучше всунуть ее статически внутрь программы.
|
|
|
|
Значит у вас еще что-то осталось в реестре, что заставляет библиотеку или ее делфовскую обвязку добавлять это все в реестр. У меня на машине без делфи запускается свежая ночнушка и не оставляет никаких следов midas в реестре. И естественно прекрасно запускается после переименования папки.
В общем, если накопаете что-то интересное по ссылкам, то сообщите. Ну или можете заняться и сделать хотя бы парсер для импорта\экспорта sml без использования midas.dll. Тогда можно будет вообще отказаться от поддержки базы в таком формате ибо он весьма ущербный и небезопасный. |
|
|
(0017673)
|
T_Im
|
20-10-2016 16:21
|
|
>Значит у вас еще что-то осталось в реестре, что заставляет библиотеку или ее делфовскую обвязку добавлять это все в реестр.
>У меня на машине без делфи запускается свежая ночнушка и не оставляет никаких следов midas в реестре.
WindowsXPsp3. Возможно, новые версии дельфи перестали с ней полностью дружить.
>В общем, если накопаете что-то интересное по ссылкам, то сообщите.
Я в Дельфях не силен.
Но в последнем сообщении тут
http://www.sql.ru/forum/587522/midas-dll-otsutsvie-na-kliente
рекомендуют делать
uses MidasLib, CRTL;
Вы могли бы скомпилировать для тестов САС с таким вариантом подключения библиотеки? |
|
|
|
Давно был такой коммит, который как раз отключал MidasLib из uses под XE2
https://bitbucket.org/sas_team/sas.planet.src/commits/f24fb35d7bba7178188ff11fee4f40d64e6411a8 |
|
|
(0017675)
|
T_Im
|
21-10-2016 14:57
|
|
Увы, одно фиксится, другое - ломается.
Значит, пока нормального способа пофиксить не найдено, просто вынести в ридми ссылку сюда на эту проблему и возможные решения.
Самый простой способ (если больше нет софта с этой библиотекой) - кинуть midas.dll в system32 и поменять все найденный пути к ней на системный, либо, после каждого переименования "первой" папки САС, менять в реестре пути к midas.dll.
Но также может быть нерешаемая ситуация, если запускать под WinXPsp3 SAS под ограниченным в правах юзером (у библиотеки просто не хватит прав зарегистрироваться). |
|
|
(0017862)
|
zed
|
17-03-2017 11:04
|
|
Поскольку баг в midas.dcu присутствует только в XE2..XE5 (из-за которого и приходится использовать внешнюю dll), то проблема автоматом решится с переходом на более новый компилятор. |
|