powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / FireBird+BLOB+Dynamic Array - не работает
25 сообщений из 38, страница 1 из 2
FireBird+BLOB+Dynamic Array - не работает
    #32625556
shulgin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте уважаемые.
Замучился я с одной задачкой.

Цель:
записать динамический массив в BLOB поле
таблицы FireBird'a

Мой код:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
type TBuffer = packed record  
  values:array of array[ 0 .. 1 ] of word;  
  DTime:TdateTime;
end;

 //-----------------------
 
var i, cnt:integer;
 arrStream:TMemoryStreAm;

 Save_Buffer:TBuffer;
 //-----------------------
 

 if SizeOf(save_buffer) >  0  then
 begin
   arrStream:= TMemoryStream.Create;
   arrStream.Clear;
   arrStream.Position :=  0 ;
   arrStream.Write(save_buffer,SizeOf(save_buffer));
   arrStream.Position :=  0 ;
   with IBTable do
   begin
     Active:=true;
     insert;
     (fieldbyname('VALUE') as TBlobField).LoadFromStream(ArrStream);
     post;
     Active:=false;
   end;
   IBtable.ApplyUpdates;
   arrStream.free;
 end;
//-----------------------

скрипт для создания таблицы

Код: plaintext
CREATE TABLE LIVE ( "VALUE"  BLOB SUB_TYPE  0  SEGMENT SIZE  80 );

В результате выполнения имеем:

1. Ругaнь
-------------------------
Dynamic SQL Error
SQL error code -104
Unexpected end of command
-------------------------
2. Записи в табличку пишутся, НО
НЕ удаляются даже средстваим IBExpert

Отсюда вопросы:

1. Корректен ли код
2. Почему записи не удаляются
3. Как сделать считывание из BLOBa обратно в динамический массив.

Заранее спасибо.
...
Рейтинг: 0 / 0
FireBird+BLOB+Dynamic Array - не работает
    #32625597
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
if SizeOf(save_buffer) >  0  then 
begin

- ну, что это такое? Это же ссылка на объект, она всегда 4 байта размером...

Код: plaintext
arrStream.Write(save_buffer,SizeOf(save_buffer));

- см.выше

Дальше уже можно ничего не говорить...
...
Рейтинг: 0 / 0
FireBird+BLOB+Dynamic Array - не работает
    #32625609
shulgin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
To mv
А как правильно ?
...
Рейтинг: 0 / 0
FireBird+BLOB+Dynamic Array - не работает
    #32625627
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ой, что это я - у Вас же не объект, а запись...

Ну, все равно - она у вас ВСЕГДА фиксированного размера. Нужно анализировать размер поля записи. Например:

Length(Save_Buffer.values);
...
Рейтинг: 0 / 0
FireBird+BLOB+Dynamic Array - не работает
    #32625634
shulgin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
To mv
Сейчас проверю
...
Рейтинг: 0 / 0
FireBird+BLOB+Dynamic Array - не работает
    #32625663
shulgin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
To mv
ошибка, замеченная вами, в моём случае не критична (пока),
но всё равно спасибо,
у меня почему то при выполнении оператора Post
вылазит ошибка, указанная выше

with IBTable do
begin
Active:=true;
insert;
(fieldbyname('VALUE') as TBlobField).LoadFromStream(ArrStream);
post ; Вот здесь ругается - SQL error = -104
Active:=false;
end;
...
Рейтинг: 0 / 0
FireBird+BLOB+Dynamic Array - не работает
    #32625665
Фотография Johnmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>mv
>- ну, что это такое? Это же ссылка на объект, она всегда 4 байта размером...

Не надо горячиться...:) Ты не прав.
...
Рейтинг: 0 / 0
FireBird+BLOB+Dynamic Array - не работает
    #32625678
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извините, уважаемый, ну, конечно, может, это не мое дело, но может быть, раз уж Вы используете IBX, быдем использовать TIBDataSet вместо TIBTable? Вот и Борланды советыют это...
Я довольно долго пользовался IBX - ами. Классные. Только не забудьте Update 7.08 поставить.
...
Рейтинг: 0 / 0
FireBird+BLOB+Dynamic Array - не работает
    #32625699
shulgin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
to mv
Уже качаю IBX 7.08 для Delphi 7
Обновлю IBX и попробую воспользоваться вашим советом
...
Рейтинг: 0 / 0
FireBird+BLOB+Dynamic Array - не работает
    #32625733
Фотография Johnmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>shulgin

В хелпе, который по F1, по методу CreateBlobStream есть даже пример, как надо писать...:)
...
Рейтинг: 0 / 0
FireBird+BLOB+Dynamic Array - не работает
    #32625753
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Johmen


Не надо горячиться...:) Ты не прав.

А что не так?
...
Рейтинг: 0 / 0
FireBird+BLOB+Dynamic Array - не работает
    #32625771
Фотография Johnmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mvА что не так?

Save_Buffer никакая не "ссылка на объект", а переменная типа TBuffer.
И её SizeOf = 12 вполне понятен.
:)
...
Рейтинг: 0 / 0
FireBird+BLOB+Dynamic Array - не работает
    #32625780
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, ну я уже поправился...
...
Рейтинг: 0 / 0
FireBird+BLOB+Dynamic Array - не работает
    #32625789
Фотография Johnmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извини. Я не заметил...
...
Рейтинг: 0 / 0
FireBird+BLOB+Dynamic Array - не работает
    #32625809
shulgin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чего то у меня обновления не ставятся

Скачал http://www.ibase.ru/v6/ibx708del.zip

Запустил

Перезагрузился

Читаю
Place the additional package code in the source directory of your Bold install.
Open the Bold40D7IB.dpk package
and compile it. The updated dcu and package will be
placed in the correct relative directory.

и нигде не могу найти Bold40D7IB.dpk
...
Рейтинг: 0 / 0
FireBird+BLOB+Dynamic Array - не работает
    #32625859
shulgin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
БАлин, домой все ушли что-ли ...
...
Рейтинг: 0 / 0
FireBird+BLOB+Dynamic Array - не работает
    #32625881
Фотография Johnmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да не ставь ты этот Болд ! Нахрена он тебе ?
И глянь пост от "сегодня, 16:25"
:)
...
Рейтинг: 0 / 0
FireBird+BLOB+Dynamic Array - не работает
    #32625941
shulgin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Какой модуль нужно подключить к проекту
чтобы делфи не ругалась Undeclared identifier: 'TIBBlobStream'
...
Рейтинг: 0 / 0
FireBird+BLOB+Dynamic Array - не работает
    #32625952
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBBlob !

Не забывай про Delphi Help!
...
Рейтинг: 0 / 0
FireBird+BLOB+Dynamic Array - не работает
    #32625954
shulgin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уже нашёл

Но опять неувязочка

//-------------------
var i, cnt:integer;
arrStream:TMemoryStreAm;
IBBlob: TIBBlobStream;
//-------------------


with IBTable do
begin
Active:=true;
insert;
IBBlob:= IBTable.CreateBlobStream(IBTable.FieldByName('value'), bmReadWrite); << тут ругается Incompatible types: 'TIBBlobStream' and 'TStream'
IBblob.CopyFrom(arrStream, arrStream.Size);
post;
Active:=false;
end;
...
Рейтинг: 0 / 0
FireBird+BLOB+Dynamic Array - не работает
    #32625963
shulgin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
To mv

Кстати о help

У вас нигде не завалялся файл ibx.hlp

А то у меня его нет не в установленной Delphi не в Distrib
...
Рейтинг: 0 / 0
FireBird+BLOB+Dynamic Array - не работает
    #32625972
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
 //-------------------
 

var  IBBlob: TStream;
 //-------------------
 



with IBTable do begin
  Active:=true;
  insert;
  IBBlob:= IBTable.CreateBlobStream(IBTable.FieldByName('value'), bmReadWrite);     
  IBblob.CopyFrom(arrStream, arrStream.Size);
  post;
  Active:=false;
end

????
...
Рейтинг: 0 / 0
FireBird+BLOB+Dynamic Array - не работает
    #32625983
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстате, работает [src delphi]. пользуйтесь плз
...
Рейтинг: 0 / 0
FireBird+BLOB+Dynamic Array - не работает
    #32625985
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мыло проверь.
...
Рейтинг: 0 / 0
FireBird+BLOB+Dynamic Array - не работает
    #32625998
shulgin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проверять уже сегодня некогда
Домой побежал
Завтра отпишусь
...
Рейтинг: 0 / 0
25 сообщений из 38, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / FireBird+BLOB+Dynamic Array - не работает
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]