Sinkopa Здравствуйте!У меня получилось подключится с локалным MSQLBase (по локальной сети) и MSQLBase находяшемся на интернете.
Здравствуйте и Вам
Поделитесь пожалуйста с народом, где Вам удалось "нарыть" библиотеку ZeosLib с поддержкой базы Mariadb?
Я вот прямо сейчас просмотрел SVN репозиторий проекта ZeosLib
link removed
и вижу библиотеки только для firebird, freetds, mysql, postgresql и sqlite.
Или есть какой то сторонний модуль расширения? Расскажите пожалуйста где взяли и как устанавливали. Я думаю интересно не только мне будет.
Кстати, как вариант, если клиент Mariadb устанавливается инсталлером, этим же инсталлером какие нибудь отдельные dll-ки могут регистрироваться в реестре через regsvr32.
Возможно именно в этом Ваша проблема с переносом программы на другой комп.
Вот пришло время перевести программу на комп пользователя.
Я сделал так:
1) Скопирнул саму программу prog.exe на комп юзера
2) В папку с программый prog.exe сбросил libmariadb.dll, libmariadb.lib, mariadbclient.lib (сюда тоже C:\WINDOWS\system32\)
А тут ошибки. (комп Юзера подключён к интернету через прокси). При попытке подключение к серверу в инете выдаю ошибку «Runtime error 216 at 00403e76». И даже по локальной сети так ругался.
1) Не подскажете что нужно делать когда переводится готовая программа к компу юзера.
Ответ в Вашем же вопросе
Необходимо корректно перенести на комп юзера рабочее окружение программы. т.е. нужные для работы ехе-шника файлы надо разложить в нужные места, испольуемые COM-объекты зарегистрировать в системе.
Чтобы узнать каких дополнительных DLL-ек нехватает для нормальной работы программы есть очень простой способ.
1. Берём утилиту Dependency Walker
читать тут
Ссылка скрыта от гостей
качать тут
Ссылка скрыта от гостей
2. Запускаем (на компе где Ваша прога нормально работает) и открываем в ней ЕХЕ-шник Вашей программы.
В открывшемся дереве наблюдаем все внешние dll-ки функции которых вызывает Ваша программа. Обращаем внимание на места их расположения и версии (важно).
Оччень полезная утилита... рекомендую...
3. Повторяем данную "процедуру" с тем же ЕХЕ-шником на другом компьюте (там где работает с ошибками).
Все нужные dll-ки которые ЕХЕ-шник не может обнаружить либо функции отсутствующие в нужной DLL (если старая версия например) в дереве будет помечено красненьким.
4. Внимательно сравниваем полученные (с обоих компов) результаты.
5. Чешем репу, курим, добавляем то чего нехватает, обновляем то что устарело...
6. Если не получается - задаём вопросы на форуме.
Перечисленные действия можно так же повторить и отдельно для dll-ек (например для libmariadb.dll).
2) В программе я должен показывать прокси (порт ип пароль и тд) или не надо может как то автоматом захватывается. (хотя выдала ошибку даже локалной)
Не понимаю вопрос. Порт и сетевой адрес прокси программе нужно знать чтобы к нему подключиться. Если прокси требует пароль, то его следует указать... а как иначе?
Если не хотите заморачиваться с диалогом - сделайте INI-файл и читайте из него на запуске программы.
PS.
Вообще то "Runtime error 216" это ошибка повреждения памяти. Обычно происходит когда (по невнимательности программиста) программа пишет в "чужую" область памяти.
Например у Вас буфер 100 байт а Вы записали в него 150. Или у Вас массив 10 элементов а пишете в 11-й.
Эта бага в определенных условиях может себя никак не проявлять. Никогда не знаешь чем занята (и занята ли) область памяти куда вы "накакали"...
Включите в настройках компилятора опцию RangeCheck и попробуйте погонять прогу в дебаг режиме (на компе где всё вроде бы работает). Это поможет отловить багу (если она есть).
И на последок... Я тут погуглил ради интереса и наткнулся на еще одну интересную трактовку происхождения "Runtime error 216". Советую ознакомиться
Ссылка скрыта от гостей