UDF str2blob

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
Junker
Сообщения: 2
Зарегистрирован: 12 янв 2006, 11:43

UDF str2blob

Сообщение Junker » 12 янв 2006, 11:49

Возникла проблемма при возвращении блоба удфкой:

function str2blob(str:PChar; Blob: PIB_Blob):PIB_BLOB; cdecl; export;
begin
result:= Blob;
if not Assigned(Blob) or not Assigned(Blob^.Handle) then
Exit;
blob^.PutSegment(Blob^.Handle, str, StrLen(Str));
end;


Возвращает вместо введенной строки мусор, правда длинну строки соблюдает.... Компилилось на FPC 2.0.2 под винды... что не так? может кто сталкивался, подскажите...

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

Сообщение kdv » 12 янв 2006, 13:15

ты бы примеры на сайте посмотрел. Статью Кукарцева, udfdemo и т.п. Указатель на блоб из функции вернуть нельзя, вообще то. Можно только через входной параметр.

Junker
Сообщения: 2
Зарегистрирован: 12 янв 2006, 11:43

Сообщение Junker » 12 янв 2006, 14:02

Это то понятно... В случае с функцией, указатель на блоб возвращается через входной параметр, а не через стандартный вывод... При переводе на процедуру результат не поменялся...

procedure str2blob(str:PChar; Blob: PIB_Blob); cdecl; export;
begin
if not Assigned(Blob) or not Assigned(Blob^.Handle) then
Exit;
blob^.PutSegment(Blob^.Handle, str, StrLen(str));
end;

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

Сообщение kdv » 12 янв 2006, 15:06

пример брал из FreeUDFLib, с сайта, самый последний вариант? Декларация putsegment совпадает? Функция из FreeUDFLib работает так же? Отлаживать функцию в Delphi пробовал?

Ответить