isc_dsql_fetch в dll

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

Модератор: kdv

Ответить
bachin
Сообщения: 16
Зарегистрирован: 20 апр 2006, 17:17

isc_dsql_fetch в dll

Сообщение bachin » 12 дек 2006, 18:55

наступил на странные грабли - незнаю с какой стороны подступиться...
минимизировал насколько смог:
такой себе тестик:
function CreateManager: IInterface;
var
db1: fb.db;
s1, s2, s3: string;
begin
load(); // динамическая загрузка fbembed.dll
db1 := fb.db.create('E:\xxxxxxx\xxxxxxx.wdb');
s1 := 'test1';
s2 := 'test2';
if fbu.select(db1, 'select a3 from t1 where a1 = ? and a2 = ?',
[s1, s2], [ref(s3)]) then
Writeln(fbu.blob2data(db1, s3));
end;
пишем програмку с соответствующей ф-цией...
program storage;
.............
begin
CreateManager;
end.
теперь либу:
library storage;
.............
end.
так вот проблема заключается в том, что если я это вызываю из либы, то isc_dsql_fetch мне возвращает 100. пытался игнорировать - понятное дело мусор получаю в резалте. с прогой - все нормально, 0 и данные честные. есть идеи куда копать? (fbembed.dll)

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Сообщение Dimitry Sibiryakov » 13 дек 2006, 08:42

100 это EOF. Нет записей в результате выборки. Проверяй присваивание параметров и их значения.

bachin
Сообщения: 16
Зарегистрирован: 20 апр 2006, 17:17

Сообщение bachin » 13 дек 2006, 10:04

Dimitry Sibiryakov писал(а):100 это EOF. Нет записей в результате выборки. Проверяй присваивание параметров и их значения.
да в том то и дело, что получаю не что-то неосмысленное, а сотку (больше привык к NO_MORE_DATA)... код тот же самый. параметры сейчас статически присваюваю. это даже не копипейст, а тот же самый модуь.

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Сообщение Dimitry Sibiryakov » 13 дек 2006, 12:51

А с нулл-флагами ничего не начудил? А то они имеют приоритет и втыкать в них неинициализированные указатели чревато как раз такими забавными фокусами...

Ответить