FB Embedded сетевые пути поддерживает вообще?

IBX, FIBPlus, UIB, ADO, .Net и прочее-прочее-прочее, в общем все, что относится к созданию приложений, работающих с InterBase, Firebird и Yaffil - клиент-серверных, трехзвенных, консольных и т.п.

Модератор: kdv

Ответить
Aleksandr.
Сообщения: 63
Зарегистрирован: 18 май 2005, 19:13

FB Embedded сетевые пути поддерживает вообще?

Сообщение Aleksandr. » 15 авг 2005, 16:24

При передаче из программы в Dll указателя на объект компонента TPFibDataBase (через Pointer) наблюдал непонятную картину - первая серия обращений к базе идет отлично, все работает. А при следующих вызовах функций dll, использующих подключение к базе, начинают вылетать AV где-то в дебрях исходников компонента, причем трассировка демонстрирует, что объект не уничтожен, свойства его действительны.

Опытные люди подсказали, что для работы в dll путь к базе должен прописываться как сетевой, типа LocalHost:C:\... и т.д. Попытался я сунуть объекту в DataBaseName такого вида запись, но он коннектиться не захотел. Вот я и не могу понять, то ли с головой у меня плохо, то ли embedded версия FireBird с сетевыми путями работать не хочет?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 15 авг 2005, 16:44

Опытные люди подсказали,
чего это за "опытные люди", которые откровенно гонят по поводу embedded.

если embedded-у передать сетевой путь, то он будет пытаться коннектиться к серверу на указанной машине. если это localhost, и сервер не установлен, то после опр. паузы (когда сетевое соединение даст отлуп) embedded поймет это, и приконнектится через "себя".

насчет av - сомнительно что-то. описал бы ты, что ты именно делаешь. Опять, небось, вся проблема в использовании embedded не по назначению...

hvlad
Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

Сообщение hvlad » 15 авг 2005, 16:57

kdv писал(а):если это localhost, и сервер не установлен, то после опр. паузы (когда сетевое соединение даст отлуп) embedded поймет это, и приконнектится через "себя"
Эта... какое "через себя" ? :?

Aleksandr.
Сообщения: 63
Зарегистрирован: 18 май 2005, 19:13

Сообщение Aleksandr. » 15 авг 2005, 17:03

чего это за "опытные люди", которые откровенно гонят по поводу embedded.
Ну, если человек берется отвечать, то, наверное, он должен что-то знать?
если embedded-у передать сетевой путь, то он будет пытаться коннектиться к серверу на указанной машине. если это localhost, и сервер не установлен, то после опр. паузы (когда сетевое соединение даст отлуп) embedded поймет это, и приконнектится через "себя".
Нет, у меня он при попытке соединения через localhost после паузы выкидывает сообщение

Код: Выделить всё

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.
насчет av - сомнительно что-то. описал бы ты, что ты именно делаешь. Опять, небось, вся проблема в использовании embedded не по назначению...
Одна функция, импортируемая из Dll, передает внутрь Dll указатель на TPFIBDataBase. Вторая делает много чего, обращаясь к базе, но начинает работу с установки соединения: FDB.Connected:=true
Первая функция вызывается сразу после загрузки Dll в память, вторая - в некоторых случаях по ходу работы. Так вот при первом вызове второй функции все отрабатывает хорошо, а при следующем сразу на строчке FDB.Connected:=true вылезает AV. При этом трассировщик внутри dll показывает, что FDB ему совершенно понятен, не показывает Inaccessible value на просмотре свойств FDB (что было бы, если бы объект был уничтожен или указатель был бы неверным).

hvlad
Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

Сообщение hvlad » 15 авг 2005, 17:28

Aleksandr. писал(а):Одна функция, импортируемая из Dll, передает внутрь Dll указатель на TPFIBDataBase
RTFM package

Aleksandr.
Сообщения: 63
Зарегистрирован: 18 май 2005, 19:13

Сообщение Aleksandr. » 15 авг 2005, 17:31

А для тех, кто в танке, можно? Причем тут real-time пакет?

hvlad
Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

Сообщение hvlad » 15 авг 2005, 17:36

Aleksandr. писал(а):А для тех, кто в танке, можно? Причем тут real-time пакет?
Нельзя.
Перед тем, как пользоваться инструментом, обычно узнают как его можно и нужно использовать.
Это касается и fb embedded, и delphi

ps. где я писал о real-time пакетах ? и что это такое ? :lol: :lol: :lol:

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 15 авг 2005, 17:40

Ну, если человек берется отвечать, то, наверное, он должен что-то знать?
не факт. если этот человек для Вас является авторитетом, то пусть он скажет, читал он это, или нет:
http://www.ibase.ru/ibfaq.htm#embedded

сразу замечу, что в одном варианте release notes FB была ошибка, и было написано наоборот - что Embedded НЕ работает через локальный коннект, и нужно указывать сетевой коннект. Только НЕЗНАЮЩИЙ человек мог попасться на эту удочку.
Нет, у меня он при попытке соединения через localhost после паузы выкидывает сообщение
ну и правильно. значит, так делал только Yaffil Personal.
вызывается сразу после загрузки Dll в память

я бы не сказал что все это очень здорово, т.к. Embedded - это тоже dll. Так что, присоединюсь к Владу по поводу package.

package не совсем эквивалент dll. но в данном случае спасет от.
в интернете навалом вопросов и ответов по поводу передачи хэндлов в dll, и везде рекомендуется вместо dll использовать package.

Ответить