Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.04.21;
Скачать: CL | DM;

Вниз

В чём грабли с createBlobStream?   Найти похожие ветки 

 
Shirson ©   (2003-04-03 13:33) [0]

Есть таблица в MSSQL8, в которой поле Doc типа image.
Записываю в него данные без проблем.
Эти данные в isqlw я вижу (0xD0CF11E0A1B11A.... и т.д.)
А вот когда пытаюсь эти данные загрузить в поток, поток оказывается пустой.


var:
TS:TStream;
pBuff:PByte;
begin
adotable1.Open;
adotable1.Edit;
TS:=AdoTable1.createBlobStream(AdoTable1.FieldByName("Doc"),bmRead);
GetMem(pBuff,TS.size);
...


TS - пустой.
TS.size равно 0.
BDGrid, подключенный к AdoTable1, строку с (BLOB) показывает.
Варианты с AdoQuery и adodataset дают такой же результат - поток пуст.

В чём грабли?


 
Johnmen ©   (2003-04-03 13:43) [1]

А так ?

var
MS : TMemoryStream;
...
MS:=TMemoryStream.Create;
TBlobField(AdoTable1.FieldByName("name")).SaveToStream(MS);


Кстати, adotable1.Edit; лишнее...


 
Shirson ©   (2003-04-03 13:56) [2]

Попробовал. То же самое :( Поток MS пуст, MS.size=0


 
Shirson ©   (2003-04-03 14:08) [3]

Добавил кусочек, который TBlobField выводит в строковую переменную. В переменной каля-баля появляется, но TBlobField(AdoTable1.FieldByName("name")).SaveToStream(MS) в поток не записывает.
Гремлины?


 
blackman ©   (2003-04-03 14:21) [4]

ms.Position:= 0;
и забирай


 
Shirson ©   (2003-04-03 14:28) [5]

>blackman

position и так равен 0. Поток пустой, нет там ничего.
(твой вариант тоже проверил, понятно дело, нифига).

Прямо наваждение какое-то...


 
Johnmen ©   (2003-04-03 14:32) [6]

>Shirson © (03.04.03 13:56)
>MS.size=0

Непонятки, однако....:)



 
Shirson ©   (2003-04-03 14:37) [7]

>Johnmen

Полные непонятки. После операции загрузки в поток, его длина равна 0. У меня уже мозги кипят, я нифига понять немогу. А ведь гадость какая-то наверняка. Мелкая и незаметная.


 
Shirson ©   (2003-04-03 15:18) [8]

Так что, никто с таким не сталкивался? Или все с BLOB полями как-то иначе работают?


 
blackman ©   (2003-04-03 15:29) [9]

http://yandex.ru/yandpage?q=373064944&p=1&qs=text%3Dblob%26serverurl%3Dblackman.wp-club.net/


 
Clickmaker ©   (2003-04-03 16:54) [10]

var Stream: TADOBlobStream;

Stream := TADOBlobStream.Create(TBlobField(Query.Fields[0]), bmRead);
try
if (Stream.Size > 0) then Что-то.LoadFromStream(Stream);
finally
Stream.Free;
end;


 
Shirson ©   (2003-04-03 17:54) [11]

Спасибо, сделал. Правда обходным путём и крышу почти сорвало :(

TBF:=TBlobField(adoquery1.fields.FieldByName("Doc"));
MS:=TMemoryStream.Create;
TBF.SaveToStream(MS);
l:=ms.Size;
ms.SaveToFile("C:\4\SQL2_49156.cpb");

Вот когда стрим записал себя в файл (нормально), а l оказалось равным нулю - крышу у меня сорвало окончательно и бесповоротно. Причём, что самое обидное, когда захотел поделиться сорванной крышей с народом, всё заработало нормально... т.е. size стал не нулевым :( Это просто гониво какое-то.

Ладно, с этим хоть разобрался. Теперь, вот, пытаюсь этот поток сбросить в clipboard...

ms.Read(pbuff,l);
ClipBoard.Open;
MH:=GlobalHandle(pBuff);
Clipboard.SetAsHandle(49156,MH);
ClipBoard.Close;

А клипборд пустой...
Пора домой, пока окончательно катушки не съехали...



Страницы: 1 вся ветка

Текущий архив: 2003.04.21;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.015 c
3-67084
Vitas2
2003-04-02 11:15
2003.04.21
BDE


6-67411
HDD
2003-02-27 16:41
2003.04.21
Помогите пожалуйста!


14-67478
Style
2003-04-03 11:02
2003.04.21
Вот пошутил над Юзверями 1-ого апреля :)


14-67457
deep.1
2003-04-03 17:09
2003.04.21
Проблемы с шрифтами


1-67310
Spartak
2003-04-09 09:32
2003.04.21
отключение фокуса у компонента