Главная страница
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.014 c
9-67074
deema123
2002-11-19 19:14
2003.04.21
Как поворачивать картинки??????


14-67497
VaS
2003-04-03 11:40
2003.04.21
Работа в Москве


1-67232
LyzD
2003-04-09 16:58
2003.04.21
Прикрепление панели


9-67083
delpher_gray
2002-11-16 20:29
2003.04.21
С чего лучше начать учиться ?


14-67484
wowik_cn
2003-04-02 12:35
2003.04.21
Как программно сменить LangDriver у Парадоксовой таблицы