FB Embedded сетевые пути поддерживает вообще?
Модератор: kdv
-
- Сообщения: 63
- Зарегистрирован: 18 май 2005, 19:13
FB Embedded сетевые пути поддерживает вообще?
При передаче из программы в Dll указателя на объект компонента TPFibDataBase (через Pointer) наблюдал непонятную картину - первая серия обращений к базе идет отлично, все работает. А при следующих вызовах функций dll, использующих подключение к базе, начинают вылетать AV где-то в дебрях исходников компонента, причем трассировка демонстрирует, что объект не уничтожен, свойства его действительны.
Опытные люди подсказали, что для работы в dll путь к базе должен прописываться как сетевой, типа LocalHost:C:\... и т.д. Попытался я сунуть объекту в DataBaseName такого вида запись, но он коннектиться не захотел. Вот я и не могу понять, то ли с головой у меня плохо, то ли embedded версия FireBird с сетевыми путями работать не хочет?
Опытные люди подсказали, что для работы в dll путь к базе должен прописываться как сетевой, типа LocalHost:C:\... и т.д. Попытался я сунуть объекту в DataBaseName такого вида запись, но он коннектиться не захотел. Вот я и не могу понять, то ли с головой у меня плохо, то ли embedded версия FireBird с сетевыми путями работать не хочет?
чего это за "опытные люди", которые откровенно гонят по поводу embedded.Опытные люди подсказали,
если embedded-у передать сетевой путь, то он будет пытаться коннектиться к серверу на указанной машине. если это localhost, и сервер не установлен, то после опр. паузы (когда сетевое соединение даст отлуп) embedded поймет это, и приконнектится через "себя".
насчет av - сомнительно что-то. описал бы ты, что ты именно делаешь. Опять, небось, вся проблема в использовании embedded не по назначению...
-
- Сообщения: 63
- Зарегистрирован: 18 май 2005, 19:13
Ну, если человек берется отвечать, то, наверное, он должен что-то знать?чего это за "опытные люди", которые откровенно гонят по поводу embedded.
Нет, у меня он при попытке соединения через localhost после паузы выкидывает сообщениеесли embedded-у передать сетевой путь, то он будет пытаться коннектиться к серверу на указанной машине. если это localhost, и сервер не установлен, то после опр. паузы (когда сетевое соединение даст отлуп) embedded поймет это, и приконнектится через "себя".
Код: Выделить всё
UnSuccessful execution caused by a system error preclides
successful execution of subsequent statements. Unable to complete network request to host "LOCALHOST".
Failed to establish a connection.
No connection coluld be made because the target machine actively refused it.
Одна функция, импортируемая из Dll, передает внутрь Dll указатель на TPFIBDataBase. Вторая делает много чего, обращаясь к базе, но начинает работу с установки соединения: FDB.Connected:=trueнасчет av - сомнительно что-то. описал бы ты, что ты именно делаешь. Опять, небось, вся проблема в использовании embedded не по назначению...
Первая функция вызывается сразу после загрузки Dll в память, вторая - в некоторых случаях по ходу работы. Так вот при первом вызове второй функции все отрабатывает хорошо, а при следующем сразу на строчке FDB.Connected:=true вылезает AV. При этом трассировщик внутри dll показывает, что FDB ему совершенно понятен, не показывает Inaccessible value на просмотре свойств FDB (что было бы, если бы объект был уничтожен или указатель был бы неверным).
-
- Сообщения: 63
- Зарегистрирован: 18 май 2005, 19:13
не факт. если этот человек для Вас является авторитетом, то пусть он скажет, читал он это, или нет:Ну, если человек берется отвечать, то, наверное, он должен что-то знать?
http://www.ibase.ru/ibfaq.htm#embedded
сразу замечу, что в одном варианте release notes FB была ошибка, и было написано наоборот - что Embedded НЕ работает через локальный коннект, и нужно указывать сетевой коннект. Только НЕЗНАЮЩИЙ человек мог попасться на эту удочку.
ну и правильно. значит, так делал только Yaffil Personal.Нет, у меня он при попытке соединения через localhost после паузы выкидывает сообщение
вызывается сразу после загрузки Dll в память
я бы не сказал что все это очень здорово, т.к. Embedded - это тоже dll. Так что, присоединюсь к Владу по поводу package.
package не совсем эквивалент dll. но в данном случае спасет от.
в интернете навалом вопросов и ответов по поводу передачи хэндлов в dll, и везде рекомендуется вместо dll использовать package.